SQL约束

一、约束

     指对数据进行限制,来保证数据的完整性 有效性 正确性

「常见约束」

约束英文名

主键约束

primary key
唯一约束unique
非空约束not null
外键约束foreign key

1、主键约束

      特点:不可重复 唯一 非空

      作用:用来表示数据库中的每一条记录

      语法格式:

              字段名  字段类型  primary key

      主键自增:

              关键字:auto_increment  主键自动增长(字段类型必须是整数类型)

1#  创建一张带有主键的表

--方式一
create table emp2(
    eid int primary key,
    ename varchar(20),
    sex char(1)
);

desc emp2; --查看表结构
drop emp2; --删除表

--方式二
create table emp2(
    eid int,
    ename varchar(20),
    sex char(1),
    primary key(eid) --指定eid为主键
);

drop emp2;

--方式三
create table emp2(
    eid int,
    ename varchar(20),
    sex char(1)
);
--通过DDL语句添加主键
alter table emp2 add primary key(eid);

2#  删除主键

alter table emp2 drop primary key;

3#  创建自增的表

create table emp2(
    eid int primary key auto_increment,
    ename varchar(20),
    sex char(1)
);

4#  修改自增起始值

create table emp2(
    eid int primary key auto_increment,
    ename varchar(20),
    sex char(1)
)auto_increment=100; --自增从100开始

delete和truncate对自增的影响

       delete:删除表中所有数据,将表中数据逐条删除,对自增没有影响

       truncate:删除表中所有数据,是将整个表删除,在创建一个相同结构的表

「delete删除」

delete from emp2; --逐条删除表中记录,不影响主键自增

「truncate删除」

truncate table emp2; --删除正常表,重新创建一张表,自增从新开始

2、非空约束

      特点:某一列不允许为空

      语法格式:

              字段名  字段类型  not null

1#  创建非空字段的表

create table emp2(
    eid int primary key auto_increment, --主键自增
    ename varchar(20) not null, --非空
    sex char(1)
);

3、唯一约束

      特点:表中的某一列不能重复(对null值  不做唯一判断)

      语法格式:

              字段名  字段类型  unique

1#  创建emp2表为ename添加唯一约束

create table emp2(
    eid int primary key auto_increment, --主键约束
    ename varchar(20) unique, --唯一约束
    sex char(1)
);

主键约束与唯一约束的区别

       主键约束:唯一并且不能为空

       唯一约束:唯一可以为空

       一个表中只能有一个主键,但是可以有多个唯一约束

4、默认值

      特点:用来指定某一列的默认值

      语法格式

              字段名  字段类型  default  默认值

1#  创建emp2表  指定sex默认值为女

create table emp2(
    eid int primary key, --主键
    ename varchar(20),
    sex char(1) default '女' --指定默认值
);

5、外健约束

      作用:外健约束可以让两表之间有一个对应关系,保证了主从表饮用的完整性

      外健:指的是在从表中与主表主键对应的字段

      主表:主键id所在的表,一的一方

      从表:外健字段所在的表,多的一方

      注意:

               从表的外健类型必须要与主表的主键类型一致

               添加数据应该先添加主表的数据再添加从表的数据

               删除数据要先删除从表数据再删除主表数据

      添加外健语法格式

「创建表的时候添加外健」

create table 表名(
    字段...
    [constraint] [外健约束名] foreign key(外健字段名) references 主表(主键字段)
    --两个方括号的可以省略掉
);

1#  创建员工表 添加外健

create table employee(
    eid int primary key auto_increment, --主键
    ename varchar(20),
    age int,
    dept_id int,
    constraint emp_dept_fk foreign key(dept_id) references department(id)--添加外健约束
);

2#  创建员工表之后 添加外健 

create table employee(
    eid int primary key auto_increment,
    ename varchar(20),
    age int,
    dept_id int
);

--方式一 自己指定外健名称
alter table employee add constraint emp_dept_fk foreign key(dept_id) references department(id);
--方式二 默认生成名为employee_ibfk_1
alter table employee add foreign key(dept_id) references department(id);--添加外健

6、删除外健约束

     语法格式             

alter table 表明 drop foreign key 外健约束名称;

1#  删除employee表中的外健

alter table employee drop foreign key emp_dept_fk; --删除外健约束

7、级联删除

      删除主表数据的同时,可以删除与之关联的从表中的数据

      语法:on delete cascade

1#  创建员工表创建外健 并添加级联删除

create table employee(
    eid int primary key auto_increment,
    ename varchar(20),
    age int,
    dept_id int,
    constraint emp_dept_fk foreign key(dept_id) references department(id)
    on delete cascade --添加级联删除
);

2#  删除部门编号为2的数据

delete from department where id=2;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值