创建表
[语句不要拼错,表名、列明不要写错,语句难记要记住]
模版
create table 表名(列名1 数据类型 [约束],
列明2 数据类型 [约束]);
约束
单一主码约束
primary key
联合主码约束
primary key(列名1,列名2) [要在列名定义后,的单独表级约束]
如:sc表的 sno 引用Student的外码(sno)
foreign key(sno) references student(sno)
外码约束
foreign key(当前列名) references 另一表名(参照列名)
设置删除限制
cascade 强制执行
restrict 有条件约束
on delete restrict
更新级联
on update cascade
实战实例
sc表的 sno 引用Student的外码(sno),设置删除限制,更新级联
foreign key(sno) references student(sno) on delete restrict on update cascade
非空约束
not null
唯一约束
unique [允许有一个空值]
枚举类型
[有的版本不支持]
ENUM(''男,'女') [前面无需数据类型]
条件约束
列名 数据类型 check(列名=0)
默认取值
default 取的值 如 default '计算机系'
数据类型
char(n)
varchar(n)可变长字符
int
smallint
枚举类型一定是enum 且前面不需加数据类型
decimal(m,n) m表示数据长度(整数位数+小数位数),n表示小数点后长度
修改表
模版
alter table 表名
add 新列名 数据类型 [约束] //新增加一个列,
drop column 列名 //删除列,
modify 待修改的列名 要修改的数据类型 //修改列的类型,
add column 列名 type 数据类型 //修改列的类型,
add foreign key(列名1) references 表名(列名2) on delete cascade,
rename column 旧列名 to 新列名 //修改列名,
增加自动增长列
alter table 表名 add column 列名 数据类型 auto_increment
实例:
alter table spj add column id int PRIMARY KEY auto_increment;
当一个select 要修改多个时候,多个语句要加逗号隔开
修改职工表emp:
增加列:部门编号:dno char(3) ,设置外码约束参照部门表dept的dno,并设置删除和更新均为级联。
alter table emp add column dno char(3) , add FOREIGN KEY (dno) REFERENCES dept(dno) ON DELETE CASCADE ON UPDATE CASCADE;