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的订 ...
随机推荐
- npm 加速之 yarn cnpm pnpm
npm 加速之 yarn cnpm pnpm 有没有感觉到使用 npm 的时候很慢? 安装速度 几Kb/s 不说, 还装着装着出错了, 奇奇怪怪的问题.这种情况大多数还是因为网络的原因, 很多时候虽然 ...
- matlab学习笔记13_2匿名函数
一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...
- 【MongoDB学习之六】MongoDB集群
环境 MongoDB 4.0 CentOS 6.5_x64 一.主从复制-Master-Slave这种模式已不再推荐使用了. 二.副本集-Replica Set(用的多)副本集其实一种互为主从的关系, ...
- 【Spring Boot学习之六】Spring Boot整合定时任务&异步调用
环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2一.定时任务1.启动类添加注解@EnableScheduling 用于开启定时任务 package com.wjy; i ...
- mysql新建用户host使用%但使用localhost无法连接
今天新建了一个用户,权限也给了,host设置的为% 但是使用该用户连接时出现如下错误 查看用户 mysql> select host,user,password from mysql.user; ...
- [转载]ROS开发环境之Qt Creator
ROS开发环境之Qt Creator(http://my.phirobot.com/blog/2013-12-ros_ide_qtcreator.html) Created at: 2013-12-2 ...
- 【转帖】Kafka入门介绍
Kafka入门介绍 https://www.cnblogs.com/swordfall/p/8251700.html 最近在看hdoop的hdfs 以及看了下kafka的底层存储,发现分布式的技术基本 ...
- linux 压缩文件 查找
zgrep '20190521155553776237' stdout-20190521.log.gz
- cookielib模块 for python3
python2 可以直接安装cookielib模块 而py3却不能安装 故需要安装http模块 举例子: from http import cookiejar cookie = cookiejar.C ...
- Java的访问修饰符的作用范围
访问修饰符: private default protected public 作用范围: 访问修饰符\作用范围 所在类 同一包内其他类 其他包内子类 其他包内非子类 private 可以访问 不可以 ...