约束是为了保证数据的完整性和一致性

--对一个数据列建立的约束,就是列级约束
--对多个数据列建立的约束,就是表级约束
--列级约束既可以在列定义时声明,也可以在列定义后声明,
--表级约束只能在列定义后声明
--注意!
--NOT NUll和DEFAULT没有表级约束

约束类型包括:


NOT NULL (非空约束)
PRIMARY KEY (主键约束)
UNIQUE KEY (唯一约束)
DEFAULT (默认约束)
FOREIGN KEY (外键约束)
CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY);
--主键:PRIMARY KEY
--主键约束,每张数据表只可以有一个主键,
--主键保证记录的唯一性,且其自动为NOT NULL
CREATE TABLE users(name VARCHAR(20) NOT NULL UNIQUE KEY);
--唯一约束:UNIQUE KEY
--唯一约束可以保证记录的唯一性,且唯一约束字段可以为空
--每张数据库表可以存在多个唯一约束
CREATE TABLE users(sex ENUM('1','2','3') DEFAULT '3');
--默认约束:DEFAULT
--默认值,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
--ENUM是枚举,表示用户只能从3个选项中选一个字段赋值,详细内容可自行搜索
CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
--父表,省份信息
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id)
);
--子表,用户信息,用户pid 对应 省份id
--外键约束:FOREIGN KEY
--外键约束要求:
--1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表
--2.数据表的存储引擎只能为InnoDB
/*
3.外键列和参照列必须具有相似的数据类型。
其中数字的长度或者是否有符号位都必须相同
但是,若是字符的长度,则可以不同
*/
--4.外键列和参照列必须创建索引,如果外键列不存在索引。!mysql将自动创建索引!

外键约束的参照操作及功能:


1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL
(ps.如果使用该选项,必须保证子表列没有指定NOT NULL)
3.RESTRICT:拒绝对父表的删除或更新操作
4.NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同
--例子
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
);
--ON DELETE 意思为删除操作发生时

本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具

主题: SQLMySQL数据RESTAUInnoDBRIMRY数据库UT
分页:12
转载请注明
本文标题:MySQL数据库――创建约束基本操作 mysql mysql数据库 mysql函数 MySQL创建约束
本站链接:http://www.codesec.net/view/530010.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(mysql) | 评论(0) | 阅读(51)