约束[上篇]

约束(constraint)

概述

为保证数据完整性,对表数据进行额外的条件限制

  • 实体完整性:同一个表中不能存在两个完全相同无法区分的数据
  • 域完整性:例如年龄范围(0-120)
  • 引用完整性:例如员工所在部门,部门表中要有该部门
  • 用户自定义完整性:例如用户名不能重复,密码不能为空等

分类

1. 约束字段的个数

单列约束 & 多列约束

2. 约束的作用范围

列级约束:声明在对应的字段后面

表级约束:声明在所有字段的后面

3. 约束的作用

NOT NULL (非空约束)

UNIQUE (唯一性约束)

PRIMARY KEY (主键约束)

FOREIGN KEY (外键约束)

CHECK (检查约束)

DEFAULT (默认值约束)

添加 / 删除约束

CREATE TABLE时添加

ALTER TABLE时添加、删除

查看表中约束

SELECT * FROM information_schema.table_constraints
WHERE table_name = 'table_name';

非空约束(NOT NULL)

描述

限制某列的值不能为NULL

添加与删除

#建表时
CREATE TABLE t_name(
	col1_name INT,
    col2_name INT NOT NULL,
    col3_name VARCHAR(15) NOT NULL
);
#ALTER TABLE
ALTER TABLE t_name
MODIFY col_name INT NOT NULL;
#删除
ALTER TABLE t_name
MODIFY col_name INT NULL;

唯一性约束(UNIQUE)

描述

限制某列的值不能重复(但可出现多个空值)

添加与删除

#列级约束
CREATE TABLE t_name(
	col1_name INT UNIQUE,
    col2_name INT,
    col3_name VARCHAR(15) UNIQUE 
);

#表级约束
CREATE TABLE t_name(
	col1_name INT,
    col2_name INT,
    col3_name VARCHAR(15),  
    CONSTRAINT uk_tableName_colName UNIQUE(colName);#uk:UNIQUE, 遵循命名规律
);

#建表后
ALTER TABLE t_name
ADD CONSTRAINT uk_tableName_colName UNIQUE(colName);

ALTER TABLE t_name
MODIFY col_name INT UNIQUE;

复合的唯一性约束

#eg
CREATE TABLE user(
	id INT,
    name VARCHAR(15),
    password VARCHAR(25),
    CONSTRAINT uk_user_name_pwd UNIQUE(name, password)
);

namepassword不能同时相同,但其中一个存在相同值是可以的

posted @   nosuchpgmr  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示
主题色彩