– 约束
– not null非空,unique唯一 primary key 非空且唯一【主键】
– default默认 check保证满足条件 foreign key外键
约束的建立方法如下:
create table t(
-- char型不能自增
-- 自增一旦申请就会加1
TNO int primary key auto_increment comment'主键',-- char订场
TN varchar(5) not null comment'姓名',-- varchar不定长
Sex char(1) comment'性别',
Age int check(Age>25 and Age<60 )comment'年龄',
prof varchar(10) unique comment'职称',
Sal int default 800 comment'工资',
Comm int default 1200 comment'岗位津贴',
-- 建表时添加外键方法(此处没有执行,下方将展示已经建表如何添加外键)
Dept varchar(10) comment'专业'
)comment'教职工信息表';
外键
– 添加外键(注意加括号的两处)【蓝色小钥匙外键,黄色小钥匙主键】【注意格式】
【此种关联,不允许删除外键相关字段】
– 此代码会报错
delete from depta where dep='计算机';-- 建立外键关联后存在关系就不能删除
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep);
删除外键:
alter table t drop foreign key zhegeshiziyoudingyide;
外键的删除和更新
– NO ACTION <-> RESTRICT [父表删除数据若有对应的外键则不允许删除]
– 操作方法【在添加外键的基础上后面再加on update on delete】
CASCADE[删除或更改时如果有外键则字表也随之删除或更改]
-- CASCADE[删除或更改时如果有外键则字表也随之删除或更改]
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep) on update CASCADE on delete CASCADE;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
– SET NULL[也是可以先进行更新数据的]
-- SET NULL[也是可以先进行更新数据的]
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep) on update set null on delete set null;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
select *from t;
代码:
-- 约束
-- not null非空,unique唯一 primary key 非空且唯一【主键】
-- default默认 check保证满足条件 foreign key外键
select database();
show tables;
create database newinf;
drop database t;
use newinf;
create table t(
-- char型不能自增
-- 自增一旦申请就会加1
TNO int primary key auto_increment comment'主键',-- char订场
TN varchar(5) not null comment'姓名',-- varchar不定长
Sex char(1) comment'性别',
Age int check(Age>25 and Age<60 )comment'年龄',
prof varchar(10) unique comment'职称',
Sal int default 800 comment'工资',
Comm int default 1200 comment'岗位津贴',
-- 建表时添加外键方法(此处没有执行,下方将展示已经建表如何添加外键)
Dept varchar(10) comment'专业'
)comment'教职工信息表';
desc t;
drop table DEPTA;
truncate table t;
select *from t;
insert into t(TN,Sex,Age,Prof,Sal,Comm,Dept)
values ('李力','男','47','教授1','1500','3000','计算机'),
('李力q','男','47','教授2','1500','3000','自动化'),
('李力w','男','47','教授3','1500','3000','信息');
insert into t(TN,Sex,Age,Prof,Dept)
values('王平','女','28','讲师1','信息');
insert into t(TN,Sex,Age,Prof,Dept)
values('王平1','女','28','讲师2','计算机');
insert into t(TN,Sex,Age,Prof,Dept)
values('王平2','女','28','讲师3','自动化');
desc s;
-- 外键约束(用来连接两张表的)
-- 如果不建立外键无法保证数据完整性
-- 理解为当一个表具有另一个表的主键且其不为主键时,时另一个表的外键
create table depta(
dep varchar(10) primary key,
dengji varchar(2)
);
insert into depta values('计算机','A'),('信息','B+');
insert into depta values('自动化','B+');
select *from depta;
-- 添加外键(注意加括号的两处)【蓝色小钥匙外键,黄色小钥匙主键】
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep);
delete from depta where dep='计算机';-- 建立外键关联后存在关系就不能删除
-- 删除外键
alter table t drop foreign key zhegeshiziyoudingyide;
#外键的删除和更新
-- NO ACTION <-> RESTRICT [父表删除数据若有对应的外键则不允许删除]
-- 操作方法【在添加外键的基础上后面再加on update on delete】
-- CASCADE[删除或更改时如果有外键则字表也随之删除或更改]
alter table t add constraint zhegeshiziyoudingyide foreign key (Dept) references depta(dep) on update CASCADE on delete CASCADE;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
-- SET NULL[也是可以先进行更新数据的]
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep) on update set null on delete set null;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
select *from t;