MySQL基礎複習回顧 三 約束

2021-10-18 14:40:01 字數 2050 閱讀 8024

目錄

mysql基礎複習回顧(三) 約束 約束

什麼是約束

六大約束

foreign key 外來鍵約束

新增約束的時機 

約束的新增分類 

not null:非空,用於保證該字段的值不能為空   比如姓名、學號等

default:預設,用於保證該字段有預設值  比如性別

primary key:主鍵,用於保證該字段的值具有唯一性,並且非空比如學號、員工編號等

unique:唯一,用於保證該字段的值具有唯一性,可以為空(允許多個空值)比如座位號

check:檢查約束【mysql中不支援】比如年齡、性別

foreign key:外來鍵,用於限制兩個表的關係,用於保證該字段的值必須來自於主表的關聯列的值在從表新增外來鍵約束,用於引用主表中某列的值 .比如學生表的專業編號,員工表的部門編號,員工表的工種編號

主表

create table classes(

id int,

name varchar(20),

number int,

primary key(name,number)

);

從表

create table student(

id int auto_increment primary key,

classes_name varchar(20),

classes_number int,

foreign key(classes_name,classes_number)

references classes(name,number)

);

刪除外來鍵約束

alter table emp

drop foreign key emp_dept_id_fk;

增加外來鍵約束

alter table emp

add [constraint emp_dept_id_fk] foreign key(dept_id) references dept(dept_id);

– foreign key: 在表級指定子表中的列

– references: 標示在父表中的列

– on deletecascade(級聯刪除):當父表中的列被刪除時,子表中相對應的列也被刪除

– on deleteset null(級聯置空): 子表中相應的列置空

create table student(

id int auto_increment primary key,

name varchar(20),

classes_name varchar(20),

classes_number int,

/*表級別聯合外來鍵*/

foreign key(classes_name, classes_number)

references classes(name, number) on delete cascade);

建立表時

修改表時

列級約束只能作用在乙個列上,六大約束語法上都支援,但外來鍵約束沒有效果

表級約束以作用在多個列上,除了非空、預設,其他的都支援

mysql回顧複習

修改密碼 mysqladmin uroot p password 新密碼 還可以進到裡面去直接用sql語句修改。資料型別 整數浮點數 日期核時間 字串二進位制 資料庫儲存引擎 show engines g mysql 支援的所有的engine show variables like engine 檢...

mysql基礎,約束

約束 概念 對錶中的資料進行限定,保證資料的正確性 有效性和完整性。分類 1.主鍵約束 primary key 2.非空約束 not null 3.唯一約束 unique 4.外來鍵約束 foreign key 非空約束 再建立表的時候新增約束 建立表之後在新增約束 5.自動增長 1.概念 如果某一...

MySQL基礎複習

1nf 每個資料項都是最小單元,不可分割,其實就是確定行列之後只能對應乙個資料。2nf 每乙個非主屬性完全依賴於候選碼 屬性組的值能唯一的標識乙個元組,但是其子集不可以 3nf 每乙個非主屬性既不傳遞依賴於主碼,也不部分依賴於主碼。bcnf 主屬性 候選碼中的某乙個屬性 內部也不能部分或傳遞依賴於碼...