sql之约束
常见约束
- 主键约束
- 用来标识某一行,在这张表中通过主键就能确定位到一条记录。主键要求这一行的数据总体上不能重复且不能为空。
- 设置方式
- 方式一
create table SN( sno int not null PRIMARY KEY, sname VARCHAR(20) not null, Stat VARCHAR(50) not null, city varchar(50) );
- 方式二
create table SNO( sno int not null , sname VARCHAR(20) not null, Stat VARCHAR(50) not null, city varchar(50), PRIMARY key(sno) );
- 查看表结构
- 方式三
- 额外补
create table snk( s int not null, a int not null ); alter table snk add PRIMARY key(s); desc snk;
- 查看表结构
- 额外补
- 方式一
- 注:带有主键的记录不能重复,是指主键不能一样。数据库允许有两个主键,如果两个主键一样的话,插入失败,两条记录中的一个主键一样没问题。
- 默认值约束
- 有default约束列时,当插入数据为空时那么就插入该默认值。
- 示例
- 修改snk中a的默认值为1,作用是如果插入数据为空的的话,则插入默认值。
alter table snk MODIFY a int DEFAULT 1 not null; desc snk; insert into snk (s) VALUES(2)
- 修改snk中a的默认值为1,作用是如果插入数据为空的的话,则插入默认值。
- 非空约束
- 必须插入值(可以是空格)
- 示例略
空、空格、NULL区别
- 空
String s1 = ""; //创建出了对象(已经开辟了内容空间,对象已经实例化),这个对象内容为空,也就是空字符串。 s1.length = 0; s1.isEmpty() = true;
- 空格
String s2 = " "; //创建出了对象(已经开辟了内存空间,对象已经实例化),这个对象内容不为空,而是空格。 s2.length=1; s2.isEmpty()=false;
- NULL区别
- 这个没创建出对象