MySQL(约束)

目录

1、主键约束

2、唯一约束 unique

3、默认约束 default ....

4、非空约束 NOT NULL

5、外键约束


1、主键约束

     最显著的特征是主键列中的值是不允许重复(唯一)的,通过主键约束可强制表 的实体完整性。当创建或更改表时可通过定义 primary key约束来创建主键。一个表只 能有一个primary key约束,且primary key约束中的列不能接受NULL值。

在创建表的时候设置主键

create table user(user_no int primary key,user_name char(10),age int);

create table user(user_no int,user_name char(10),age int ,constraint pk_user_no primary key (user_no));

增加主键

Alter table user add primary key(user_no) ;

Alter table user add constraint pk_user_no primary key (user_no);

自增长列(标识列) auto_increment

        并不是所有表在设计完成后都能找到适合作为主键的列,为此数据库提供了自增长列,自增长列是数值类型的,其值是数值类型的,其值是由数据库自动维护的,是永远都不会 重复的,因此自增长是最适合作为主键列的。在创建表时,通过 auto_increment 关键字 来标识自增长列,在MySQL数据库中自增长列可以是主键列,也可以是唯一列(有唯一约 束的列)。

特点:

  1.  标识列必须和一个Key搭配(Key指主键、唯一、外键....)
  2. 一个表最多有一个标识列
  3.  标识列的类型只能是数值型
  4. 标识列可以通过SET auto_increment_increment = 3;设置步长(全局),可以通过插入 行时手动插入标识列值设置起始值。
2、唯一约束 unique

对于非主键列中的值也要求唯一性时,就需要唯一约束

create table user(user_no int primary key,user_name char(10) unique,age int);

create table user(user_no int,user_name char(10),age int ,constraint uq unique(user_name) );

 增加唯一约束

Alter table user add unique (user_name);

Alter table user add constraint uq unique(user_name);
  • 唯一约束要求值不能重复
  • 可以存在多个空值( NULL )的数据
  • 约束默认的名称为其列名
  • 唯一约束创建后会自动创建一个唯一索引(索引后边会讲) 
3、默认约束 default ....

create table user(user_no int primary key,user_name char(10) unique,age int default NULL);

Alter table user modify age int default NULL;

Alter table user modify age int;

  • 创建表时,不写默认值都默认 NULL (在无非空约束的情况下)
  • 默认约束能和主键约束可以同时存在
  • 默认约束不能和 AUTO_INCREMENT 同时使用 
4、非空约束 NOT NULL

create table user(user_no int primary key,user_name char(10) unique,age int NOT NULL);

alter table user modify age int not NULL;

alter table user modify age int NULL

5、外键约束

        A表中列的值来自于另外一张表B的主键或唯一键的列称为 外键FK,将被引用值得表称为 主表或父表,将引用值得表称为从表或子表。 例如: emp 表中有 deptno 列,值来自于 de pt 表的 主键 deptno 。 dept 是主表, emp 是从表。

create table dept ( dept_no int primary key, dept_name varchar(20));

create table emp (id int not null , name varchar(20),deptno int,

constraint fk_dept_no foreign key (deptno) references dept (dept_no);

alter table emp drop foreign key (deptno);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值