003、建立表,新增約束
阿新 • • 發佈:2021-10-11
一、建立表
語法格式:create table tableName(
columnName dataType(length),
………………..
columnName dataType(length)
);
# ----------------------- 14、建立表 ------------------------ use bjpowernode; drop table if exists t_student; create table t_student( student_id int(10) primary key auto_increment, student_name varchar(20) not null, sex char(2), birthday date, email varchar(30), classes_id int(3) ); # 向 t_student 表中新增資料 insert into t_student (student_id, student_name, sex, birthday, email, classes_id) values (1, '劉備', '男', '1980-01-10', '[email protected]', 1), (2, '關羽', '男', '1983-02-10', '[email protected]', 2), (3, '張飛', '男', '1984-05-10', '[email protected]', 3) ; select * from t_student;
二、增加/刪除/修改表結構
採用 alter table 來增加/刪除/修改表結構,不影響表中的資料 a、新增欄位 如:需求發生改變,需要向 t_student 中加入聯絡電話欄位,欄位名稱為:contatct_tel 型別為 varchar(40)alter table t_student add contact_tel varchar(40);b、修改欄位 如:student_name 無法滿足需求,長度需要更改為 100
alter table t_student modify student_name varchar(100) ;
alter table t_student drop contact_tel;
三、建立表加入約束
常見的約束
a) 非空約束,not null b) 唯一約束,unique c) 主鍵約束,primary key d) 外來鍵約束,foreign key e) 自定義檢查約束,check(不建議使用)(在 mysql 中現在還不支援) a、非空約束,not null 非空約束,針對某個欄位設定其值不為空,如:學生的姓名不能為空。use bjpowernode; drop table if exists t_student; create table t_student( student_id int(10) primary key auto_increment, student_name varchar(20) not null, sex char(2), birthday date, email varchar(30), classes_id int(3) );b、唯一約束,unique 唯一性約束,它可以使某個欄位的值不能重複,如:email 不能重複
use bjpowernode; drop table if exists t_student; create table t_student( student_id int(10) primary key auto_increment, student_name varchar(20) not null, sex char(2), birthday date, email varchar(30) unique, classes_id int(3) );c、兩個欄位聯合唯一約束
create table t_student( student_id int(10), student_name varchar(20) not null, sex char(2), birthday date, email varchar(30) unique, classes_id int(3), unique (student_id,student_name) # 兩個欄位聯合唯一 );兩個欄位聯合唯一時,兩個欄位的值都相同時,才作為唯一。 如下第2行和第5行的 id 為 1 和 名字 為劉備, 都相同才作為唯一約束。插入資料時會報錯。
insert into t_student (student_id, student_name, sex, birthday, email, classes_id) values (1, '劉備', '男', '1980-01-10', '[email protected]', 1), (1, '關羽', '男', '1983-02-10', '[email protected]', 2), (2, '劉備', '男', '1984-05-10', '[email protected]', 3), (1, '劉備', '男', '1990-05-10', '[email protected]', 4) ;d、各自具有唯一性
create table t_student( student_id int(10) unique, # 各自具有唯一性 student_name varchar(20) unique not null, # 各自具有唯一性 sex char(2), birthday date, email varchar(30) unique, classes_id int(3) );e、外來鍵約束,foreign key 外來鍵主要是維護表之間的關係的,主要是為了保證參照完整性,如果表中的某個欄位為外來鍵欄位,那麼該欄位的值必須來源於參照的表的主鍵,如:emp 中的 deptno 值必須來源於 dept 表中的 deptno 欄位值。 練習:建立學生和班級表之間的連線 首先建立班級表 t_classes
drop table if exists t_classes; create table t_classes( classes_id int(3), classes_name varchar(40), constraint pk_classes_id primary key(classes_id) )在 t_student 中加入外來鍵約束
drop table if exists t_student; create table t_student( student_id int(10), student_name varchar(20), sex char(2), birthday date, email varchar(30), classes_id int(3), constraint student_id_pk primary key(student_id), constraint fk_classes_id foreign key(classes_id) references t_classes(classes_id) )存在外來鍵的表就是子表,參照的表就是父表,所以存在一個父子關係,也就是主從關係,主表就是班級表,從表就是學生表。