【SQL】之约束


约束:为保证数据完整性,对表中字段的限制。

如何添加/删除约束?
create table 时添加约束
alter table 时添加约束,删除约束
如何查看表中约束?

SELECT * FROM information_schema.`TABLE_CONSTRAINTS`
WHERE table_name='employees';

约束分类

  1. 单列约束,多列约束
  2. 列级约束:将此约束声明在对应字段的后面
    表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束
  3. not null 非空约束
    unique 唯一性约束
    primary key 主键约束
    foreign key 外键约束
    check 检查约束
    default 默认值约束

一、非空约束 NOT NULL

限定某个字段/某列的值不允许为空。
关键字:not null

create table 时添加约束

#create table 时添加约束
CREATE DATABASE dbtest;
USE dbtest;

CREATE TABLE test1(
id INT NOT NULL,
last_name VARCHAR(15) NOT NULL,
email VARCHAR(25),
salary DECIMAL(10,2)

);

DESC test1;

INSERT INTO test1(id,last_name,email,salary)
VALUES(1,'tom','tom@163.com',6000);

#错误
INSERT INTO test1(id,last_name,email,salary)
VALUES(1,NULL,'tom@163.com',6000);
INSERT INTO test1(id,last_name,email,salary)
VALUES(NULL,'jerry','tom@163.com',6000);

INSERT INTO test1(id,email)
VALUES(2,'abc@163.com');	#Field 'last_name' doesn't have a default value

alter table 时添加/删除约束

#alter table 时添加约束
SELECT * FROM test1;
DESC test1;

ALTER TABLE test1
MODIFY email VARCHAR(25) NOT NULL;

#alter table 时删除约束
ALTER TABLE test1
MODIFY email VARCHAR(25) NULL;

二、唯一性约束 UNIQUE

限制某个字段或某列的值不能重复
关键字:unique
表级约束:constraint 约束名称 关键字(字段名),如:CONSTRAINT uk_test2_email UNIQUE(email)

create table时添加约束

-- 在create table时添加约束
CREATE TABLE test2(
id INT UNIQUE,		#(列级约束)
last_name VARCHAR(20),
email VARBINARY(25),
salary DECIMAL(10,2),
#表级约束
CONSTRAINT uk_test2_email UNIQUE(email)
);
#在创建唯一约束时,如果不给唯一约束命名,就默认和列明相同

DESC test2;
SELECT * FROM information_schema.`TABLE_CONSTRAINTS`
WHERE table_name='test2';

#向表中添加数据
INSERT INTO test2(id,last_name,email,salary)
VALUES(1,'tom','tom@163.com',4500);

SELECT * FROM test2;
#错误
INSERT INTO test2(id,last_name,email,salary)
VALUES(1,'tom1','tom@163.com',4500);
#可以向声明为unique的字段上添加null值,且可以多次添加null值
INSERT INTO test2(id,last_name,email,salary)
VALUES(2,'tom1',NULL,4600);

INSERT INTO test2(id,last_name,email,salary)
VALUES(3,'tom2',NULL,4500);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值