0108 创建表约束
表约束:对用户插入数据进行约束
(表约束要在创建表时创建约束)
1、默认值约束:
default + ‘默认值’
例:让地址的默认值为“淄博市”
create table student(
id int,
address default '淄博市'
);
注:设置默认值之后,可以给数据内容插入内容,如果不插入内容,就默认是默认值
2、非空约束
not null
例:让name不能为空
create table student(
id int,
name varchar(10) not null,
address default '淄博市'
);
注:name字段不能插入null值
3、唯一约束
unique
例:让手机号唯一
create table student(
id int,
name varchar(10) not null,
address default '淄博市',
phone varchar(10) unique
);
注:唯一约束 可以插入多个null值
4、主键约束 (唯一,非空)
primary key
例:让id字段成为主键
create table student(
id int primary key,
name varchar(10) not null,
address default '淄博市',
phone varchar(10) unique
);
注:主键字段 不能不插入值或者插入控制
5、自增长约束
auto_increment
例:让id字段自增长
create table student(
id int primary key auto_increment,
name varchar(10) not null,
address default '淄博市',
phone varchar(10) unique
);
注:自增长字段可以不赋值,若赋值,,则再执行下一条不赋值的命令时id就根据你赋值的内容继续增长,
6、清空表区别
delete from +表名字(可以带条件,清空表以后,再添加数据,数据会根据清空之前的数据继续自增长,不会影响约束)
truncate table 表名字(清空表之后,再添加数据,数据就会从一开始自增长,会影响到约束)
7、外键
创建表先创建主表(没有外键的表),再创建副表(有外键的表)
例:创建部门表和员工表,并且带有外键约束
主表
create table dept(
did int primary key auto_increment,
dname varchar(10),
mgr varchar(10)
)
副表
create table emp(
eid int primary key auto_increment;
ename varchar(10),
(添加外键)
did int,
(外键约束)constraint fk_emp_dept(外键名称)foreign key(did)(外键)references dept(did)(参考表的参考字段)
)
添加数据,先添加主表内容,再添加副表内容
修改数据,先修改副表内容,在修改主表数据
删除数据,先删除副表内容,再删除主表数据
8、用0填充
例:让id字段剩余的空用0补齐
create table student(
id int(5)zerofill primary key auto_increment,
name varchar(10) not null,
address default '淄博市',
phone varchar(10) unique
);
9、交叉链接
join 关键字
例:将emp表和dept表链接
select * from emp join dept
注:该链接是以笛卡尔积的显示方式显示,通俗的将两个表放在一起
10、内连接
join on 关键字
例:将emp表和dept表链接
select * from emp join dept on emp.这里写两个表的相同字段=dept.这里写两个表内相同的字段
例题
:
11、外连接
(1)左外连接:在内连接的结果基础之上 将左侧表中不符合条件的数据放在相应的右边字段的位置补充值为null
例:
(2)右外连接:在内连接的结果基础之上 将右侧不符合连接条件的数据放在相应的左侧字段的位置上补充值为null
l例: