MySQL Others--约束(Constraint)示例
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)示例的更多相关文章
- MySql常见约束
含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性. 分类:六大约束 1.NOT NULL :非空,用于保证该字段的值不能为空.例如学生表的学生姓名及学号等等. 2.DEFAULT: ...
- 【MySQL】MySQL的约束
在开始之前,笔者介绍一下笔者使用的数据库版本为5.7.所有的关系型数据库都支持对数据表使用约束,通过约束可以更好的保证数据表里数据的完整性.约束是在表上强制执行的数据校验,约束主要用于保证数据库里数据 ...
- mysql的约束
SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). (1)NOT NULL约 ...
- [转]mysql的约束
转自:http://blog.csdn.net/kqygww/article/details/8882990 MySQL中约束保存在information_schema数据库的table_constr ...
- MySQL学习——约束
MySQL学习——约束 摘要:本文主要学习了数据库的约束. primary key(主键) 定义 主键约束是一个列或者多个列,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可以强制 ...
- mysql DEFAULT约束 语法
mysql DEFAULT约束 语法 作用:用于向列中插入默认值. 说明:如果没有规定其他的值,那么会将默认值添加到所有的新记录.直线电机 mysql DEFAULT约束 示例 //在 "P ...
- mysql CHECK约束 语法
mysql CHECK约束 语法 作用:CHECK 约束用于限制列中的值的范围. 直线电机 说明:如果对单个列定义 CHECK 约束,那么该列只允许特定的值.如果对一个表定义 CHECK 约束,那么此 ...
- mysql UNIQUE约束 语法
mysql UNIQUE约束 语法 作用:UNIQUE 约束唯一标识数据库表中的每条记录. 江苏大理石平台 说明:UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证.PRI ...
- MySQL进阶:约束,多表设计,多表查询,视图,数据库备份与还原
MySQL进阶 知识点梳理 一.约束 1. 外键约束 为什么要有外键约束 例如:一个user表,一个orderlist 如果现在想要直接删除id为1的张三,但是orderlist里还有用户id为1的订 ...
随机推荐
- Raw image encoder error: Empty JPEG image (DNL not supported)) in throwOnEror
OpenCV Error: Unknown error code -10 (Raw image encoder error: Empty JPEG image (DNL not supported)) ...
- Session丢失的原因及解决办法
Asp.net 默认配置下,Session莫名丢失的原因及解决办法: 正常操作情况下Session会无故丢失.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定 ...
- Maven多模块工程打包指定模块工程方法
Maven多模块工程打包指定模块工程执行如下命令: mvn clean package -pl 指定模块工程名 -am 参数说明: -am --also-make 同时构建所列模块的依赖模块:-am ...
- [转]casperjs截图出现黑色背景
原文地址:https://my.oschina.net/tuxpy/blog/879509?utm_medium=referral 如果默认没有指定 body的background-color就会出现 ...
- 三层交换,单臂路由,vtp
- Git 更新
在向远程仓库推送之前,为避免冲突,通常会先从远程仓库更新,再添加文件,再commit到staging area,最近push. 更新使用命令git pull 1 2 3 4 5 6 7 8 9 10 ...
- Python怎么去写单元测试用例去测试hello world呢
逛着博客园,看到乙醇大佬的一篇随笔 https://www.cnblogs.com/nbkhic/p/9370446.html,于是就在想怎么测试这句hello world print('hello ...
- QQ联合登录(基于Oauth2.0协议)
1. 获取授权码Authorization Code https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id= ...
- cf 595 补题
1.B2 Books Exchange (hard version) 题意:有n(1~n)个孩子看书,定义一个数组,记录了每个孩子看完
- 「UR#5」怎样跑得更快
「UR#5」怎样跑得更快 膜这个您就会了 下面是复读机mangoyang 我们要求 \[ \sum_{j=1}^n \gcd(i,j)^{c-d} j^d x_j=\frac{b_i}{i^d} \] ...