ENUM约束

--使用ENUM来限制用户输入
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200),
Sex ENUM('Male','Female')
)

默认值约束

--创建表时指定默认值
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200) DEFAULT ''
) --创建表后再创建默认约束
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200)
) ALTER TABLE Student
ALTER COLUMN StudentName SET DEFAULT '' --查看默认约束
SHOW CREATE TABLE Student;

外键约束

MYSQL 对外键约束只支持即时检查(immediate check), 与SQL SERVER 相同。

ORACLE 对外键约束支持延时检查(deferred check)。

在创建外键约束时,MYSQL 默认为外键约束列添加索引,以避免外键约束带来的死锁问题。

--创建被引用的班级表
CREATE TABLE Class
(
ClassID INT AUTO_INCREMENT PRIMARY KEY,
ClassName VARCHAR(200)
); --创建学生表时外键引用班级表
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200),
FOREIGN KEY(ClassID) REFERENCES Class(ClassID)
) --创建学生表,然后再增加外键
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200),
);
ALTER TABLE Student ADD FOREIGN KEY(ClassID) REFERENCES Class(ClassID); --查看外键
SELECT *
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA='testdb1'
AND TABLE_NAME='Student' \G *************************** 1. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: testdb1
CONSTRAINT_NAME: student_ibfk_1
UNIQUE_CONSTRAINT_CATALOG: def
UNIQUE_CONSTRAINT_SCHEMA: testdb1
UNIQUE_CONSTRAINT_NAME: PRIMARY
MATCH_OPTION: NONE
UPDATE_RULE: RESTRICT
DELETE_RULE: RESTRICT
TABLE_NAME: student
REFERENCED_TABLE_NAME: class

在数据导入过程中,为提高导入效率,可以先禁用外键检查,导入完后再开启。

--禁用外键检查
SET @@foreign_key_checks=0; --启用外键检查
SET @@foreign_key_checks=1;

唯一约束

--创建学生表时外键引用班级表
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200),
UNIQUE KEY (StudentName)
) --创建表后再增加唯一约束
CREATE TABLE Student
(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
ClassID INT,
StudentName VARCHAR(200)
)
ALTER TABLE Student ADD UNIQUE KEY(StudentName); --查看约束
SELECT *
FROM information_schema.TABLE_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA='testdb1'
AND TABLE_NAME='Student' \G *************************** 1. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: testdb1
CONSTRAINT_NAME: PRIMARY
TABLE_SCHEMA: testdb1
TABLE_NAME: student
CONSTRAINT_TYPE: PRIMARY KEY
*************************** 2. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: testdb1
CONSTRAINT_NAME: StudentName
TABLE_SCHEMA: testdb1
TABLE_NAME: student
CONSTRAINT_TYPE: UNIQUE

MySQL Others--约束(Constraint)示例的更多相关文章

  1. MySql常见约束

    含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性. 分类:六大约束 1.NOT NULL :非空,用于保证该字段的值不能为空.例如学生表的学生姓名及学号等等. 2.DEFAULT: ...

  2. 【MySQL】MySQL的约束

    在开始之前,笔者介绍一下笔者使用的数据库版本为5.7.所有的关系型数据库都支持对数据表使用约束,通过约束可以更好的保证数据表里数据的完整性.约束是在表上强制执行的数据校验,约束主要用于保证数据库里数据 ...

  3. mysql的约束

    SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). (1)NOT NULL约 ...

  4. [转]mysql的约束

    转自:http://blog.csdn.net/kqygww/article/details/8882990 MySQL中约束保存在information_schema数据库的table_constr ...

  5. MySQL学习——约束

    MySQL学习——约束 摘要:本文主要学习了数据库的约束. primary key(主键) 定义 主键约束是一个列或者多个列,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可以强制 ...

  6. mysql DEFAULT约束 语法

    mysql DEFAULT约束 语法 作用:用于向列中插入默认值. 说明:如果没有规定其他的值,那么会将默认值添加到所有的新记录.直线电机 mysql DEFAULT约束 示例 //在 "P ...

  7. mysql CHECK约束 语法

    mysql CHECK约束 语法 作用:CHECK 约束用于限制列中的值的范围. 直线电机 说明:如果对单个列定义 CHECK 约束,那么该列只允许特定的值.如果对一个表定义 CHECK 约束,那么此 ...

  8. mysql UNIQUE约束 语法

    mysql UNIQUE约束 语法 作用:UNIQUE 约束唯一标识数据库表中的每条记录. 江苏大理石平台 说明:UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证.PRI ...

  9. MySQL进阶:约束,多表设计,多表查询,视图,数据库备份与还原

    MySQL进阶 知识点梳理 一.约束 1. 外键约束 为什么要有外键约束 例如:一个user表,一个orderlist 如果现在想要直接删除id为1的张三,但是orderlist里还有用户id为1的订 ...

随机推荐

  1. visual studio制作代码片段

    使用 Visual Studio 的代码片段功能,我们可以快速根据已有模板创建出大量常用的代码出来.ReSharper 已经自带了一份非常好用的代码片段工具,不过使用 ReSharper 创建出来的代 ...

  2. python初级(302) 6 对象(三)

    一.复习 1.什么是魔法方法? 2.什么是类的初始化函数? 二.什么是self 使用一个类可以创建多个对象实例,例如: ball1 = Ball("red", "smal ...

  3. iOS - NSURLConnection finished with error - code -1002

    网络请求会异常,比如报错:Error domain: 在回调的地方打一个断点,然后用命令行查看下什么错误: po error 当错误是:**[Error Domain=NSURLErrorDomain ...

  4. 双写mq后碰到没有消费问题记录

    上周双写mq后碰到遇到个问题,mq双写的一台机器有produce,另一台一直没有,但是有的那台机器没有消费者,导致另一个服务 一直没有可以消费的mq.原因是 mq在双写初始化配置的时候两个类文件重复了 ...

  5. Win732位DotNetCore部署IIS错误记录

    部署环境为:Win7专业版32位,数据库Mysql5.7.27-win32 1.先启用IIS功能 2.安装Mysql5.7.27-win32,使用解压版安装 安装步骤: mysql的解压根目录下新建m ...

  6. 【MongoDB学习之六】MongoDB集群

    环境 MongoDB 4.0 CentOS 6.5_x64 一.主从复制-Master-Slave这种模式已不再推荐使用了. 二.副本集-Replica Set(用的多)副本集其实一种互为主从的关系, ...

  7. 【miscellaneous】【C/C++语言】UTF8与GBK字符编码之间的相互转换

    UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值." ...

  8. springboot+mybatis实现数据库的读写分离

    介绍 随着业务的发展,除了拆分业务模块外,数据库的读写分离也是常见的优化手段.方案使用了AbstractRoutingDataSource和mybatis plugin来动态的选择数据源选择这个方案的 ...

  9. 【Linux】Ubuntu修改root用户密码

    使用vmware安装ubuntu的时候,安装完之后发现没有root用户密码,只有新建用户,这个时候需要重新设置root用户密码 在新建用户下面运行 sudo passwd root

  10. APIO2019题解

    T1.桥梁(bridges/restriction) Subtask1:暴力,$O(n^2)$. #include<cstdio> #include<algorithm> #d ...