你上次和我說,可以做表級約束,也可以做列級約束,但是我怎麼做表級約束就出錯,做列級約束就可以,但是書上的例題就是表級約束。
例如:create table test(sno char(10),age int constraint cage default 20) 就可以
但是create table test(sno char(10),age int,constraint cage default 20 for age)就報錯,請幫我查查原因,然後告訴我解釋和正確寫法
我做了些實驗:
這兩個例子
create table teacher
(id int primary key,/*列級中定義約束條件*/
age int,
salary decimal(12,5),
welfare decimal(12,5),
constraint c1 check(salary +welfare >=3000) /*在表級中定義約束條件*/
)create table products (
p_id char(8) ,
p_name char(10) ,
price money default 0.01 ,
quantity smallint check (quantity>=10) , /* 列約束 */
constraint pk_p_id primary key (p_id, p_name) /* 表約束 */
)另外參見網頁:
這裡講的比較好 。
除 預設約束(default constraint)外,其他的如:主關鍵字約束(primary key constraint)、外關鍵字約束(foreign key constraint)、惟一性約束(unique constraint)、檢查約束(check constraint)。都是能像我們上面那樣寫的,但是預設約束(default constraint)就是會出現問題!裡面講到的 7.2.5 預設約束和你上面寫的是一致的
我也不知道為什麼會這樣,其實在建立表的時候好像不用使用 constraint也是可以的如:
create table sc
(sno char(9) not null,
cno char(4) not null,
grade smallint check(grade>=0 and grade <=40) /*當然這裡也可以定義成表級約束*/
primary key(sno,cno),/*這裡只能用表級約束了*/
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
)
MySQL中的約束,列級約束,表級約束
總結了一些課上的筆記和 可以執行看看 約束的作用 一種限制,用於限制表中的資料,為了保證表中的資料的準確和可靠性。約束的分類 1.not null 非空,用於保證該字段的值不能為null 2.default 預設值,用於保證該字段在不設定具體的內容時,有乙個預設值。即開始存資料的時候不不傳也會有乙個...
mysql 列約束 MySQL 列級約束和表級約束
一,六大約束 not null 非空 primary key 主鍵 unique 唯一 check 檢查約束,mysql 不支援,語法不報錯但無效果 foreign key 外來鍵.限制兩表關係,通常在從表引入外來鍵約束,引入主表中某列的值,保證從表該字段的值必須 於主表關聯列的值 default預...
新增列級約束
一 建立表時新增約束 1.新增列級約束 語法 直接在欄位名和型別後面追加 約束型別即可 只支援 預設 非空 主鍵 唯一 create database students use students create table stuinfo id int primary key,stuname varc...