sql约束条件的介绍和使用

约束简介:

为保证数据完整性,添加的强制数据校验规则。
数据完整性:保证数据库中数据尽可能的准确和一致。
	分类:
		域完整性:保证列的数据完整有效
		实体完整性:通过主键约束实现行的唯一标示
		参照完整性:通过外键约束实现

1.非空约束(not null):

create table if not exists student(
  sid int not null,
  sname varchar(4) not null,
  age int,
  sex char(1)
);

/*创建表后,添加非空约束*/
alter table student modify sname varchar(11) not null;
/*删除非空约束*/
alter table student modify sname varchar(11);

数据类型后定义非空约束后,该列数据不可以赋值为null。

2.唯一约束(unique):

create table if not exists student(
  sid int not null unique,
  sname varchar(4) not null,
  age int,
  sex char(1)
);

/*创建表后,添加唯一约束*/
alter table student add unique(sid);
/*删除唯一约束*/
/*首先找到需要删除字段的Key_name*/
show keys from tableName;
/*删除对应字段的Key_name即可*/
alter table student drop index 【Key_name的值】;

数据类型后定义唯一约束后,该列不能出现重复数据。

3.默认约束(default):

create table if not exists student(
  sid int not null unique,
  sname varchar(4) not null,
  age int,
  sex char(1) default '男'
);

/*创建表后,添加默认约束*/
alter table student modify sex varchar(11) default ;
/*删除默认约束*/
alter table student modify sex varchar(11);

数据类型后定义默认约束后,在向表中添加一条数据时如果没有添加该列数据则会将default定义的数据添加到该条数据中。

4.主键约束(primary key):

行的唯一标示
作用:
	1方便查询
	2用于引用:其他表可以通过此主键来引用本表的记录
特点:非空、唯一 
create table if not exists student(
  sid int primary key,/*创建表时,添加主键约束*/
  sname varchar(4) not null,
  age int,
  sex char(1) default '男'
);
/*或:*/
create table student(
  sid int,
  sname varchar(11),
  primary key(id));

alter table tab_3 add primary key(id);/*创建表后,添加主键约束*/
alter table tab_3 drop primary key;/*删除主键约束*/
联合主键:
多列联合作为一个主键
特点:不能为null,不能同时相同
create table if not exists student(
  sid int,
  subejctId INT
  sname varchar(4) not null,
  age int,
  sex char(1) default '男'
  /*学生编号和科目编号组合起来才能唯一标示一条记录*/
  primary key(sid,subejctId)
);

5.自增约束(auto_increment):

一个表只能有一个自增列
必须定义在int类型的主键上
create table if not exists student(
  sid int auto_increment primary key,
  sname varchar(4) not null,
  age int,
  sex char(1) default '男'
);

/*创建表后,添加自增约束*/
alter table student modify sid int auto_increment ;
/*删除自增约束*/
alter table student modify sid int;

定义自增约束的列会随着行数的增加而增加,以表中的最后一行的数值为基数加1。如果对表中的某些行数执行了删除而没有重启数据库,那么基数还是之前的最后一行的数值,只有重启数据库后基数才会变为执行后的。

6.外键约束(foreign key):

当a表中要引用b表的记录:可以在a表中定义一列,作为外键列
外键列引用b表的主键
a表:从表
b表:主表
	特点:可以为null
可以重复
外键如果有值,必须在主表中存在
create table teacher(
  tid int auto_increment primary key,
  tname varchar(4)
);
CREATE TABLE student(
  sid int auto_increment primary key,
  sname varchar(4),
  /*定义外键列 指定此学生的老师*/
  myteacherId int,
  /*设置外键约束*/
  /*格式:constraint 约束名 foreign key(外键列名) references 主表名(主表主键)*/
  constraint fk_1 foreign key(myteacherId) references teacher(tid)
);

/*创建表后添加外键约束*/
alter table student add constraint fk_1 foreign key(myteacherId) references teacher(tid);
/*删除外键约束*/
alter table student drop foreign key fk_1;
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值