當前位置:首頁 » 編程語言 » sql如何自定義類別
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql如何自定義類別

發布時間: 2023-03-23 16:29:06

sql中如何自定義數據類型

在建完表以後在check約束中進行約束啊。比如說身份證號的欄位為SFZH,則約束就為:([SFZH] like [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][a-z] or [SFZH] like [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z])

❷ SQL語句如何更改表中的欄位類型

SQL如何用語句更改欄位可以用以下語句可以實現:

altertable表名altercolumn欄位名變更後的欄位類型。

注意:

但若是關鍵欄位,帶有主鍵,並且欄位類型為用戶自定義類型,具有默認值的情況下,用上述語句會出現錯誤。

例如:

現假設表為TABLE1,關鍵欄位為FIELD1,主鍵為PK_FIELD1,關鍵欄位的數據類型為用戶自定義數據類型cha_field1,實際為CHAR(10),默認值為dbo.D_field1現要求將欄位類型改為varchar(20),默認值去除錯誤提示如下:

伺服器:消息5074,級別16,狀態1,行1

對象'D_field1'依賴於列'field1'。

伺服器:消息5074,級別16,狀態1,行1

對象'PK_field1'依賴於列'field1'。

伺服器:消息4922,級別16,狀態1,行1

ALTERTABLEALTERCOLUMNfield1失敗,因為有一個或多個對象訪問此列。

❸ sqlserver怎麼操作自定義表類型

-- ================================
-- 創建和使用自定義表類型
-- ================================
USE master
GO
-- ================================
-- 創建測試資料庫
-- ================================
CREATE DATABASE demo
GO
-- ================================
-- 創建一個表
-- ================================
USE demo
GO
CREATE TABLE Customers
(
Id int NOT NULL,
Name char(10) NULL,
PRIMARY KEY (Id)
)
GO
USE demo
GO
-- ================================
-- 創建自定義表類型
-- ================================
CREATE TYPE dbo.CustomerTable AS TABLE
(
Id int NOT NULL,
Name char(10) NULL,
PRIMARY KEY (Id)
)
GO
-- =================================
-- 直接使用自定義表類型
-- =================================
DECLARE @c CustomerTable
INSERT INTO @c VALUES(1,'Xizhang')
SELECT * FROM @c
-- =================================
-- 在存儲過程中使用自定義表類型
-- =================================
CREATE PROC GetCustomers
(@c CustomerTable READONLY)
AS
INSERT Customers SELECT * FROM @c --將傳過來的參數(其實是一個表)的數據插入到Customers表裡面去
-- =================================
-- 調用該存儲過程,一次性插入4行數據
-- =================================
DECLARE @temp CustomerTable
INSERT INTO @temp VALUES(7,'Xizhang')
INSERT INTO @temp VALUES(2,'Xizhang')
INSERT INTO @temp VALUES(3,'Xizhang')
INSERT INTO @temp VALUES(4,'Xizhang')
EXEC GetCustomers @c=@temp
SELECT * FROM Customers
-- =================================
-- 清理資料庫
-- =================================
USE master
GO
DROP DATABASE demo
GO
看起來不錯對吧,但是你應該馬上想到一個問題,如果說這個存儲過程要在客戶端代碼中調用,那麼該怎麼提供這個參數值呢?
using System.Data.SqlClient;
using System.Data;
class Program
{
static void Main(string[] args)
{
DataTable tb = GetData();
using (SqlConnection conn = new SqlConnection("server=sql2008;database=demo;integrated security=true"))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "GetCustomers";
cmd.CommandType = CommandType.StoredProcere;
SqlParameter param = new SqlParameter("@c", SqlDbType.Structured);//這個類型很關鍵
param.Value = tb;
cmd.Parameters.Add(param);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
Console.WriteLine("完成操作");
Console.Read();
}
private static DataTable GetData()
{
DataTable tb = new DataTable();
tb.Columns.Add("Id",typeof(int));
tb.Columns.Add("Name", typeof(string));
//添加100個客戶資料
for (int i = 0; i < 100; i++)
{
DataRow row = tb.NewRow();
row[0] = i;
row[1] = "Name " + i.ToString();
tb.Rows.Add(row);
}
return tb;
}
}

❹ 資料庫怎麼定義自己的數據類型

用戶自定義數據類型是個確保資料庫中域和數據緊密結合的好辦法。數據的類型可能在整個資料庫中都是一致的,每個數據的適用范圍和他的數據類型是相關聯的。sp_bindrule過程是個向後兼容過程,該過程為數據類型確定了一個適用范圍。CREATE RULE命令也是個向後兼容命令,為域值的遵守產生了一個規則。該規則能被限制為用戶自定義的數據類型。CREATE DEFAULT也是個向後兼容命令,而且也能被限制為用戶自定義的數據類型。

這些向後兼容命令都是由Sybase演化而來的。SQL Server的未來版本是否支持他們目前還不能確定。微軟推薦用戶使用CHECK CONSTRAINT命令。然而,CHECK CONSTRAINTS不支持模塊化編碼。你必須為所有需要CHECK CONSTRAINT的表格的每一列都創建一個CHECK CONSTRAINT。另一方面,創建規則和預設值,並把他們限制在一個用戶自定義數據類型這個過程只需進行一次。用戶自定義數據類型有非常多種,比如性別和標簽的布爾值。性別的域值能是雄性,雌性,及未知。布爾值的域值能是數值,也能是真假值。