php数据库设置约束,数据库表的约束

一、数据库约束的概述

1、约束的作用

对表中的数据进行限制,保证数据的正确性、有效性和完整性。

一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。

2、约束的种类约束名约束关键字

主键约束primary key

唯一约束unique

非空约束not null

外键约束foreign key

检查约束check 注:MySQL不支持

二、主键约束

1、主键的作用

主键的作用:用来唯一标识数据库中的每一条记录。

2、哪些字段应该作为表的主键

通常不用业务字段作为主键,单独给每张表设计一个 id 的字段,把 id 作为主键。

主键就是给数据库和程序使用的,不是给最终的客户使用的,所以主键有没有含义没有关系,只有不重复,非空就行。

3、创建主键主键关键字:primary key

主键的特点: ① 非空 not  null; ② 唯一

基本语法

① 在创建表时,添加主键约束

create table student(

id int primary key,-- 给id添加主键约束

name varchar(20)

);

② 删除主键

ALTER TABLE student DROP PRIMARY KEY;

③ 创建完表后,添加主键(两种方式)

ALTER TABLE student MODIFY id int PRIMARY KEY;

ALTER TABLE student add primary key(字段名);

注意:

① 主键非空且唯一

② 一张表只能有一个字段(组)作为主键

③ 主键就是表中记录的唯一标识

4、主键自增

主键如果让自己添加很有可能重复,所以希望在每次插入新记录时,数据库自动生成主键字段的值。

基本语法格式:

① 创建表时,添加主键约束,并且完成主键自增长(字段类型必须是整数类型)

create table student(

id int primary key auto_increment,-- 给id添加主键约束

name varchar(20)

);

② 删除自动增长

ALTER TABLE stu MODIFY id INT;

③ 创建表完后,添加自动增长

ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

5、修改自增长的默认值起始值

默认 auto_increment 的开始值是 1,如果希望修改起始值,使用下面语法。

① 创建时指定起始值

CREATE TABLE 表名(

列名 int primary key AUTO_INCREMENT

) AUTO_INCREMENT=起始值;

② 创建好以后修改起始值

ALTER TABLE 表名 AUTO_INCREMENT=起始值;

6、delete 和 truncate 对自增长的影响delete:删除所有记录之后,自增长没有影响。

truncate:删除以后,自增长又重新开始。

三、唯一约束

1、概念

唯一约束概念:表中的某一列不能出现重复的值,必须保证值的唯一性。

2、基本语法格式

① 创建表时,添加唯一约束

CREATE TABLE student(

id INT,

phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束

);

注意:在MySQL中,唯一约束限定的列的值可以有多个 null。(null表示不确定,即不相等)

② 删除唯一约束

ALTER TABLE student DROP INDEX phone_number;

③ 在创建表后,添加唯一约束

ALTER TABLE student MODIFY phone_number VARCHAR(20) UNIQUE;

四、非空约束

1、非空约束概念

非空约束:即数据表的某一列不能为 null。

2、基本语法格式

① 创建表时添加约束

CREATE TABLE student(

id INT,

NAME VARCHAR(20) NOT NULL -- name为非空

);

② 创建表完后,添加非空约束

ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

③ 删除 某个字段的非空约束

ALTER TABLE stu MODIFY NAME VARCHAR(20);

3、为某字段设置默认值

语法格式:

字段名 字段类型 DEFAULT 默认值

Demo:

1 create table student(2 id int,3 name varchar(20),4 sex varchar(2) default '男'

5 )6

7 --添加一条记录,使用默认值8 insert into student values(6,'赵六',default)9 --添加一条记录,不适用默认值10 insert into student values(8,'钱九','男')

扩展:如果一个字段设置了非空和为约束,该字段与主键有什么区别?

(1)主键在一个表中,只能有一个。不能出现多个主键。主键可以单列,也可以是多列

(2)自增长只能用在主键上。

五、外键约束

1、单表存储数据的缺点

单表存储数据可能会造成的缺点:

① 数据冗余

② 后期还会出现增删改的问题

解决方式:使用外键约束

2、外键约束

外键约束概念:foreign key,让从表中与主表主键对应的那一列,从而保证数据的正确性。

主表:一方,用来约束别人的表。

从表:多方,被别人约束的表。

示意图:

3、创建约束的语法

① 创建表时增加外键

create table 表名(

....

外键列

[constraint] [外键名称] foreign key (外键列名称) references 主表名称(主表列名称)

);

② 删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

③ 创建表之后,添加外键

ALTER TABLE 表名 ADD [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

4、外键的级联操作

当改变主表中的主键时,修改失败;在删除主表中的记录时,也出现删除失败。

级联操作:在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作。

级联操作语法:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

on update cascade; 表示级联更新操作

on delete cascade; 表示级联删除操作

六、数据约束总结约束名关键字说明

主键primary key① 唯一

② 非空

默认default如果一列没有值,使用默认值

非空not null这一列必须有值

唯一unique这一列不能有重复值

外键foreign key主表中主键列,在从表中外键列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值