唯一約束、非空約束、主鍵約束都有自己的名字,只不過是系統自動給定的預設名稱,我們也可以在建立約束的時候指定名稱,這個需要使用constraint來建立。
demo:觀察預設的約束名稱
--刪除資料表
drop table teacher purge;
--建立資料表
create table teacher(
tno number(4) primary key,--主鍵約束
tname varchar2(10) unique,--唯一約束
tage number(3),
tdate date );
--插入資料
insert into teacher values(1001,『x老師』,100,sysdate);
insert into teacher values(1002,『y老師』,100,sysdate);
insert into teacher values(1003,『z老師』,100,sysdate);
demo:指定自定義的約束名稱
--刪除列表
drop table teacher purge;
--建立資料表
create table teacher(
tno number(4),
tname varchar(10),
tage number(3),
tdate date,
--建立主鍵約束(使用constraint關鍵字引導建立)
constraint pk_tno primary key(tno),
--建立唯一約束(使用constraint關鍵字引導建立)
constraint uk_tname unique(tname) );
--插入資料
insert into teacher values(1001,『x老師』,100,sysdate);
insert into teacher values(1002,『y老師』,100,sysdate);
insert into teacher values(1003,『z老師』,100,sysdate);
除了以上三種約束之外還有其他約束比如檢查約束,檢查約束是可以為字段值進行簡單的驗證,比如要讓年齡的範圍是0~250歲,那麼可以使用檢查約束
demo:檢查約束(check)
--刪除資料
drop table teacher purge;
--建立資料表
create table teacher (
tno number(4),
tname varchar2(10),
tage number(3),
tdate date,
--建立主鍵約束
constraint pk_tno primary key(tno),
--建立唯一約束
constraint uk_tname unique(tname),
--建立檢查約束
constraint ck_tage check(tage between 0 and 250) );
--插入資料
insert into teacher values(1001,『x老師』,100,sysdate);
insert into teacher values(1002,『y老師』,100,sysdate);
insert into teacher values(1003,『z老師』,251,sysdate);
總結:
1、如果要指定約束的名稱,那麼需要使用constraint引導建立
2、檢查約束我們只是作為語法提出,在開發中不會去使用,因為很耗費效能,如果真有這樣的需求是交給程式去實現。
mysql 主鍵約束起名 MySQL名稱的主鍵約束
資料定義語句 create table persons p id int not null,lastname varchar 255 not null,firstname varchar 255 address varchar 255 city varchar 255 constraint pk p...
查詢出表中該列的約束名稱
1.查詢出表中該列的約束名稱 declare conname varchar 50 select conname b.name from sysobjects b join syscolumns a on b.id a.cdefault where a.id object id tbbrandsho...
資料表預設值約束名稱為隨機名稱的問題
預設值約束名稱變為隨機名稱的問題困擾我一年多了,今天在機緣巧合下終於發現原因,原來是因為sql語句書寫不規範引起的。比如新增乙個欄位test1 規範寫法為alter table fcy retailprice fxs add test1 int not null constraint df fcy ...