mysql三大约束_Mysql——约束

数据表增加主键约束<1> 引入

在数据表中尽量避免重复数据的出现,重复的数据也称之为垃圾数据

垃圾数据太多会影响到数据库的一些性能

<2> 主键

会单独给数据表添加一个字段,这个字段中的每个值都是唯一的不重复的

仅仅是用来表示当前的记录是唯一的

这个字段,就称为这张表的主键

表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行

<3> 主键的创建

当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键

一个表只能有一个 PRIMARY KEY 约束

而且 PRIMARY KEY 约束中的列不能接受null值

<4> 自动增长

设计完一张表的主键列之后,在MySQL中最常规的做法就是让这一列自动按照自然顺序增长

避免人为操作引起的主键列数据冲突的问题

自动增长需要在该列上,添加auto_increment来实现

<5> e.g

# 创建员工表

CREATE TABLE emp(

empNo INT PRIMARY KEY AUTO_INCREMENT,

enameVARCHAR(10),

jobVARCHAR(10),

mgrINT,

hirdateDATETIME,

salDOUBLE,

commDOUBLE,

deptnoINT

);

注:

创建emp表,定义了empNo的数据类型是整数

primary key关键词定义empNo为主键

auto_increment定义empNo中的数据自动增长

<6> 另一种方法

# 给dept表增加主键约束

ALTER TABLE dept

ADD CONSTRAINT PRIMARY KEY(deptno);

注:

使用Alter table关键词修改dept表,给这张表的deptno字段增加主键约束

<7> 总

更建议在创建表的同时添加主键约束

数据表增加唯一约束<1> 语法

ALTER TABLE tab_name

ADD CONSTRAINT UNIQUE(col_name);

<2> 注:

使用Alter table关键词,修改tab_name数据表

使用add constraint unique关键词给指定列col_name增加一个唯一约束

<3> e.g

ALTER TABLE dept

ADD CONSTRAINT UNIQUE(dname);

之后dept表中的dname就不允许出现重复数据

数据表增加默认约束<1> 默认值

数据表的数据是通过程序或者人工添加进去的,添加过程中需要指定添加列字段等信息

如果某些列没有指定值,在添加时数据库会自动使用默认值进行填充

默认值可以指定,在数据库设计中称之为默认约束

<2> e.g

# 创建员工表;员工工资默认为起始工资2000

CREATE TABLEemp(

empNo INT PRIMARY KEY AUTO_INCREMENT,

ename VARCHAR(10),

job VARCHAR(10),

mgr INT,

sal DOUBLE DEFAULT2000,

);

使用default关键字,给工资字段sal指定默认值2000

<3> 在已经存在的表上添加默认约束

# 给已经存在的表tab_name增加默认约束

ALTERTABLEtab_name

CHANGE COLUMN old_col_name new_col_name new_datatype DEFAULT500;

数据表增加外键约束<1> 外键

不同表之间可能存在各种各样的关系

最简单的是使用某个字段关联两张表

这个字段就是外键

如果一个表中的某个字段指向另一个表中的主键,这个字段就称为外键

被指向的表称为主表或者父表,负责指向的表称为从表或者子表

从表中的外键必须引用主表中的主键,外键的值可以为null

<2> 语法

#给从表tab_name的col_name字段增加外键约束,引用主表re_col_name列

ALTER TABLE tab_name

ADD CONSTRAINT FOREIGN KEY fk_name (col_name)

REFERENCES re_tab_name(re_col_name);

注:

给tab_name表的col_name字段增加一个名称为fk_name的外键

外键约束引用了主表re_tab_name的re_col_name字段

<3> e.g

ALTER TABLE emp

ADD CONSTRAINT FOREIGN KEY fk_deptno (deptno)

REFERENCES dept(deptno);

给emp表的deptno字段添加一个名称为fk_deptno的外键约束,引用主表dept的deptno字段

数据表增加检查约束<1> 检查约束

在一些数据库设计时,已经将这样的需求考虑在内,在数据表中的某个字段上可以添加检查约束

所谓检查约束,就是定义数据表中的某个字段中只能出现符合提前预定好条件的值

条件之外的值是不允许添加的

<2> 语法

#给一张表tab_name的col_name增加一个名称为chk_name的检查约束

ALTER TABLE tab_name

ADD CONSTRAINT chk_name

CHECK (col_name-condition);

给表tab_name的col_name字段增加一个名称为chk_name的检查约束

约束条件为(col_name-condition)

<3> 提示

MySQL中暂时不支持检查约束

对于数据库中数据的检查,建议在程序中进行,而不是在数据库层面检查

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值