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的订 ...
随机推荐
- rabbitMQ消息队列 – Message方法解析
消息的创建由AMQPMessage对象来创建$message = new AMQPMessage("消息内容");是不是很简单. 后边是一个数组.可以对消息进行一些特殊配置$mes ...
- Eclipse4.2juno安装git
因为项目需要,需要再Eclipse4.2juno上面安装git,试了几次都没有成功,网上搜了下,结合报错发现,Eclipse4.2juno支持的最高版本是git3.2,因此,选选择3.2版本的git安 ...
- LeetCode 110. Balanced Binary Tree(判断平衡二叉树)
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- Linux的.a、.so和.o文件 对比 window下的dll,lib,exe文件
连续几天终于将一个又一个问题解决了,这里说其中一个问题 描述问题:使用多线程pthread的时候,(我用的IDE,CODEBOLCKS)编译后发现直接弹出窗口,程序还没有被Build..巴拉巴拉,然后 ...
- BladeX 部署centos启动顺序
一:启动dockerservice docker start二:启动mysqldocker start mysql三:启动Harborsystemctl restart docker(如有修改daem ...
- EasyNVR摄像机网页无插件直播方案H5前端构建之:如何播放HLS(m3u8)直播流
背景描述 HLS (HTTP Live Streaming)是Apple的动态码率自适应技术,主要用于PC和Apple终端的音视频服务,包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文 ...
- SpokenEnglish01_ When's it due?
1 Pronunciation and Intonation When's it due? 解析:When’s it due? 2 Key Points 2.1 Due adj: 到期的,截止的 It ...
- es查询和更新 语句示例
文档目录: https://www.elastic.co/guide/index.html GET _search { "query": { "match_all&quo ...
- [LOJ3053]希望
对于一组$s_{1\cdots k}$,合法的$u$构成一个连通块,满足$\left\lvert V\right\rvert-\left\lvert E\right\rvert=1$ 考虑算出算$f_ ...
- 027 SSM综合练习03--数据后台管理系统--product-list.jsp和main.jsp页面制作
1.product-list.jsp页面制作 (1)创建一个product-list1.jsp文件,清空,只保留 <%@ page contentType="text/html;cha ...