数据库表的几大约束

数据库约束概述

约束的作用
对表中的数据进行限制,保证数据的正确性、有效性和完整性。
一个表如果添加了约束,不正确的数据将无法插入到表中。
约束在创建表的时候添加比较合适。
约束种类
约束名约束关键字
主键primary key
唯一unique
非空not null
外键foreign key

主键约束

主键作用
用来唯一标识数据库中的每一条记录(非空、唯一)
哪个字段应该作为表的主键呢?
通常不用业务字段作为主键,单独给每张表设计一个id字段,把id设为主键。主键是给数
据库和程序使用的,不是给最终的客户使用的,所以主键有没有含义没有关系,只要不重
复,非空就行。如:身份证,学号不建议做成主键
创建主键
-- 在创建表的时候给字段添加主键
CREATE TABLE stu(
	 id INT PRIMARY KEY,
	 name VARCHAR(20),
	 age INT
);
-- 插入重复的主键值
INSERT INTO stu VALUES (1, '关羽', 30);
-- 错误代码: 1062 Duplicate entry '1' for key 'PRIMARY'
INSERT INTO stu VALUES (1, '关云长', 20);
-- 插入 NULL 的主键值, Column 'id' cannot be null
INSERT INTO stu VALUES (NULL, '关云长', 20);
删除主键
-- 删除主键
ALTER TABLE stu DROP PRIMARY KEY;
-- 添加主键
ALTER TABLE stu ADD PRIMARY KEY(id);
主键自增(AUTO_INCREMENT )
如果让我们自己添加很有可能重复,我们通常希望在每次插入新纪录时,数据库自动生成主键字段的值。
-- 默认地 AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法 
CREATE TABLE tb_name(
	列名 int primary key AUTO_INCREMENT
) AUTO_INCREMENT=起始值; 
-- 创建好以后修改起始值 
ALTER TABLE tb_name AUTO_INCREMENT=起始值; 

唯一约束

表的某一列不能出现重复的值
-- 创建学生表 stu1, 包含字段(id, name),name 这一列设置唯一约束,不能出现同名的学生
CREATE TABLE stu1 (
	 id INT,
	 NAME VARCHAR(20) UNIQUE
);
-- 添加一个同名的学生
INSERT INTO stu1 VALUES (1, '张三');
-- Duplicate entry '张三' for key 'name'
INSERT INTO stu1 VALUES (2, '张三');
-- 重复插入多个 null 会怎样?
INSERT INTO stu1 VALUES (2, NULL);
INSERT INTO stu1 VALUES (3, NULL);
-- null 没有数据,不存在重复的问题

非空约束

某一列不能为空(NULL)
-- 创建表学生表 stu2, 包含字段(id,name,gender)其中 name 不能为 NULL
CREATE TABLE stu2 (
	 id INT,
	 NAME VARCHAR(20) NOT NULL,
	 gender CHAR(1)
);
-- 添加一条记录其中姓名不赋值
INSERT INTO stu2 VALUES (1,'张三疯','男');
-- Column 'name' cannot be null
INSERT INTO stu2 VALUES (2,NULL,'男');
默认值(DEFAULT)
-- 创建一个学生表 stu3,包含字段(id,name,address), 地址默认值是广州
CREATE TABLE stu3 (
	id INT,
	NAME VARCHAR(20),
	address VARCHAR(20) DEFAULT '广州'
);
-- 添加一条记录,使用默认地址
INSERT INTO stu3 VALUES (1, '李四', DEFAULT);
INSERT INTO stu3 (id,NAME) VALUES (2, '李白');
-- 添加一条记录,不使用默认地址
INSERT INTO stu3 VALUES (3, '李四光', '深圳');

外键

一张表中字段设置为外键,可以被其他表所引用。删除记录的时候应注意,该外
键是否被其他表引用,如果已经被引用,则会删除失败。如果采用级联删除机制,
那么就会删除成功,但是不建议,由于误删会导致许多其他不应该被删掉的数据
被删掉。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值