1.定義基本表語句
文法:
USE 資料庫名稱 CREATE TABLE 表名 (列名 類型(大小) DEFAULT'預設值',
列名 類型(大小) DEFAULT'預設值',
列名 類型(大小) DEFAULT'預設值',
……);
註:綠色循環是可以簡潔的。
例:CREATE TABLE S (SNO char(2), SNAME char(8), AGE Decimal(2), SEX char(2) DEFAULT'男', DEPT char(2));
建立了一個五列的表,其中第四列的預設為'男'。
-------------------------------------------------- ------------------------------------------
2.定義界限
文法:
USE 資料庫名稱 CREATE TABLE 表名 (列名 類型(大小) DEFAULT'預設值' CONSTRAINT 約束名稱 約束定義,
列名 類型(大小) DEFAULT'預設值' CONSTRAINT 約束名稱 約束定義,
列名 類型(大小) DEFAULT'預設值' CONSTRAINT 約束名稱 約束定義,
……);
註:(1) 綠色番茄是可以省事的。
(2) 一個欄位可以有多個約束。
合約條款:
(1)空 | NOT NULL 用來定義列的空值限制。
語法:CONSTRAINT 約束名稱 NULL |非空
注意:
一個。 NOT NULL 約束強制列不接受NULL 值。
b. NOT NULL約束強製欄位始終包含值。
例:
下面的SQL語句強制「Id_P」欄位和「LastName」欄位不接受NULL值:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
(2)UNIQUE約束唯一標識資料庫表中的每筆記錄。
語法:CONSTRAINT 約束名稱 UNIQUE (列名, 列名, ... ...);
說明:用於指定基本表在某一個列或多個列的組合上取值必須唯一。 UNIQUE約束,則系統讓這些列建立唯一索引,從而保證在表中的任兩個行記錄在指定的列或列組合上不能取相同的值。
注意:
一個。 UNIQUE唯一約束標識資料庫表中的每筆記錄。
b. UNIQUE 和 PRIMARY KEY 約束列或列集合提供了唯一性的保證。
c. PRIMARY KEY 擁有自動定義的唯一限制。
d.請注意,每個表可以有多個 UNIQUE 約束,但每個表只能有一個 PRIMARY KEY 約束。
例:
下面的SQL在「Persons」表建立時在「Id_P」欄位建立UNIQUE約束:
MySQL:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
唯一 (Id_P)
)
SQL Server / Oracle / MS 存取:
建立表格人員
(
Id_P int NOT NULL UNIQUE,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
如果需要命名UNIQUE約束,以及為多個列定義UNIQUE約束,請使用下面的SQL語法:
MySQL / SQL Server / Oracle / MS 存取:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
約束 uc_PersonID 唯一(Id_P,姓氏)
)
(3)PRIMARY KEY唯一約束標識資料庫表中的每筆記錄。
語法:CONSTRAINT 約束名稱 PRIMARY KEY (列名, 列名, ... ...);
說明:用於定義基本表的主鍵。也存在很大差異:在一個基本表中只能定義一個PRIMARY KEY 約束,卻可以定義多個UNIQUE約束。一個列中都不能出現空值;而UNIQUE約束允許出現空值。
注意:
一個。 主鍵必須包含唯一的值。
b. 主鍵列不能包含NULL值。
c. 每個表都應該有一個主鍵,每個表只能有一個主鍵。
例:
下面的SQL在「Persons」表建立時在「Id_P」欄位建立PRIMARY KEY約束:
MySQL:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
主鍵 (Id_P)
)
SQL Server / Oracle / MS 存取:
建立表格人員
(
Id_P int NOT NULL 主鍵,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
如果需要命名 PRIMARY KEY 約束,以及為多個欄位定義 PRIMARY KEY 約束,請使用下方的 SQL 語法:
MySQL / SQL Server / Oracle / MS 存取:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
約束 uc_PersonID 主鍵(Id_P、姓氏)
)
(4)FOREIGN KEY 外鍵(即可以定義列也可以定義表格)
語法:CONSTRAINT 約束名稱 FOREIGN KEY (列名, 列名, ... ...) REFERENCES (列名, 列名, ... ...) ;
說明:指定某個列或多個列的組合作為外部鍵,並在外部鍵和它所引用的主鍵或唯一鍵之間建立聯繫。 ,包含外部鍵引用的主鍵或唯一鍵的表稱為主表。主鍵值或唯一鍵值,或取空值。
注意:
a.在REFERENCES中引用的列必須和FOREIGN KEY的外部鍵列一一對應,即列數目一致且對應列的資料型別相同。
例:
下面的SQL在「Orders」表建立時為「Id_P」欄位建立FOREIGN KEY:
MySQL:
建立表訂單
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
主鍵(O_Id),
外鍵 (Id_P) 參考資料 人員 (Id_P)
)
SQL Server / Oracle / MS 存取:
建立表訂單
(
O_Id int NOT NULL 主鍵,
OrderNo int NOT NULL,
Id_P int 外鍵引用人員(Id_P)
)
如果需要命名 FOREIGN KEY 約束,以及為多個欄位定義 FOREIGN KEY 約束,請使用下面的 SQL 語法:
MySQL / SQL Server / Oracle / MS 存取:
建立表訂單
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
主鍵(O_Id),
約束 fk_PerOrders 外鍵 (Id_P) 參考人員 (Id_P)
)
(5)檢查約束列中的值的範圍。
語法:CONSTRAINT 約束名稱 CHECK (限制條件);
說明:對於指定基本表中的每一筆記錄必須滿足的條件,可以對基本表中各個列上的值做進一步的約束,如成績列的取值既不能大於100,也不能小於0。
注意:
一個。 如果對單一列定義 CHECK 約束,則該列只允許特定的值。
b. 如果對一個表定義了 CHECK 約束,則此約束會在特定的欄位中對值進行限制。
例:
下列的 SQL 在 "Persons" 資料表建立時為 "Id_P" 欄位建立 CHECK 約束。
我的SQL:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
檢查(Id_P>0)
)
SQL Server / Oracle / MS 存取:
建立表格人員
(
Id_P int NOT NULL 檢查 (Id_P>0),
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255)
)
如果需要命名 CHECK 約束,以及為多個欄位定義 CHECK 約束,請使用下方的 SQL 語法:
MySQL / SQL Server / Oracle / MS 存取:
建立表格人員
(
Id_P int NOT NULL,
姓氏 varchar(255) NOT NULL,
名字 varchar(255),
地址 varchar(255),
城市 varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
-------------------------------------------------- ------------------------------------------
例:使用lijintao CREATE TABLE S2
(SNO CHAR(2) 約束 S_PRIM 主鍵,
SN CHAR(8) 約束條件 SN_CONS NOT NULL,
年齡 NUMERIC(2) 限制 AGE_CONS NOT NULL 限制 AGE_CHK CHECK(年齡在 15 歲到 45 歲之間),
SEX CHAR(2) 預設 '男' CONSTRAINT SEX_CHK CHECK(SEX = '男' OR SEX = '女'),
DEPT CHAR(2) 約束 DEPT_CONS NOT NULL);
本文來自CSDN博客,轉載請標示出處:http: //blog.csdn.net/Qingqinglanghua/archive/2009/12/21/5051563.aspx
-