MySQL数据库~~~~ 完整性约束
1. not null 与 default
not null : 不可空
default : 默认值
例: create table t1(id int not null default 2);
2. unique
unique : 唯一属性
例: create table t1(name varchar(20) unique);
create table t1(name varchar(20), constraint uk_name unique(name));
联合唯一:
create table t1(name varchar(20),host varchar(15), unique(name,host));
3. primary key
primary key : 主键,字段不为空切唯一
主键 primary key是 innodb存储引擎组织数据的依据,innodb称之为索引组织表,一张表中必须有且只有一个主键。
create table t1(id int primary key);
4. auto_increment
auto_increment: 自增属性,默认起始位置为1,步长也为1.
create table t1(id int primary key auto_increment);
5. foreign key
foreign key : 外键,标明表和表之间的关系,表和表之间的关系:一对一,多对一,多对多
一对多
部门表是被关联表,员工表是关联表,创建表的时候应该先创建部门表(被关联表),再创建员工表(关联表)
create table dep(id int primary key auto_increment,
dep_name char(10),);
create table emp(id int primary key auto_increment,
name char(10),
dep_id int,
foreign key(dep_id) references dep(id)
on update cascade on delete cascade);
# 加入on update cascade on delete cascade语句可以使员工表中的数据跟着部门数据的改动而变动
插入数据时,先插入部门数据(被关联表),再插入员工数据(关联表)
多对多
先创建作者表和书表,然后创建第三张表,用两个外键字段关联作者表和书表.
create table author(id int primary key auto_increment,
name char(20));
create table book(id int primary key auto_increment,
bname char(20));
insert into author(name) values('liky'),('小虎');
insert into book(bname) values('book1'),('book2');
create table author_book(id int primary key auto_increment,
author_id int,
book_id int,
foreign key(author_id) references author(id) on update cascade on delete cascade,
foreign key(book_id) references book(id) on update cascade on delete cascade);
insert into author_book(author_id,book_id) values(1,2),(2,2);
一对一
学生表(student)和客户表(customer),把学生表(关联表)的外键字段设置成唯一属性.
create table student(
id int primary key,
name char(10),
cid int unique,
foreign key(cid) references customer(id)
);
删除或修改被关联字段
场景: book表和publish表为多对一关系,book表的pid字段外键关联到了publish表的id字段
1.查看外键关系名称:
show create table book;
2.删除外键关系
alter table book drop foreign key book_ibfk_1(外键名称);
3.删除字段
alter table publish drop id(字段名称);
4.添加字段
alter table pulish add id(字段名称) int(数据类型) primary key auto_increment(约束条件);
5.创建表完成之后,添加外键关系
alter table book add foreign key(pid) references publish(id);
创建外键时指定外键名称:
create table t1(id int,
pid int,
constraint fk_t1_publish foreign key(pid) references publish(id));
创建表完成之后,添加外键关系
alter table book add constraint fk_t1_publish foreign key(pid) references publish(id);
- 外键约束的三种约束模式(都是针对父表的约束):
1.district严格约束(默认):父表不能删除或者更新已经被子表数据引用的记录
2.cascade级联模式:父表的操作,对应的子表关联的数据也跟着操作
constraint fk_t1_publish foreign key(pid) references publish(id) on delete cascade on update cascade;
3.set null置空模式:被关联字段删除时,关联它的字段数据会置空成null
注意:删除置空的前提条件是外键字段允许为空,不然外键会创建失败.
MySQL数据库~~~~ 完整性约束的更多相关文章
- MySQL数据库----完整性约束
一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...
- mysql 数据库引擎
一.数据库引擎 数据库引擎是用于存储.处理和保护数据的核心服务.利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求. 使用数据库引擎创建用于联机事务处理或 ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- MySQL数据库基本命令-1
第一章:数据库概述1.数据(data) 数据库(DB) 数据库管理系统(DBMS) 数据库系统(DBS)2.数据库管理系统提供的功能: (1)数据定义语言:DDL (2)数据操作语言:DML 基本的数 ...
- MySQL数据库对象-索引
1. 概述2. 索引分类2.1 不同索引的概念2.1.1 普通索引2.1.2 唯一索引2.1.3 全文索引2.1.4 多列索引3. 索引操作3.1 普通索引3.1.1 创建表时创建普通索引3.1.2 ...
- MySQL数据库之part1
一.初始数据库 链接:http://www.cnblogs.com/linhaifeng/articles/7126847.html 一.MySQL介绍 1.MySQL是什么 MySQL是一个关系型数 ...
- mySql 数据库设计原则
mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...
- MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...
- 超全面的JavaWeb笔记day15<mysql数据库>
1.数据库的概述 2.SQL 3.DDL 4.DML 5.DCL 6.DQL MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优 ...
- MySQL数据库实验:任务一 创建数据库和表
目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...
随机推荐
- HDU1224-Free DIY Tour(SPFA+路径还原)
Weiwei is a software engineer of ShiningSoft. He has just excellently fulfilled a software project w ...
- 【CSS】329- 非常强!3行核心css代码的rate评分组件
像rate评分组件一般都用javascript写,所以这次将是一个全新的尝试,用css实现一个rate评分 ❗ 核心代码也就三行? 01 效果图 02 原理 主要是借助radio单选框,梳理如下: 去 ...
- 【JS】327- javascript 的 api 设计原则
点击上方"前端自习课"关注,学习起来~ 前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博 ...
- 常见排序汇总C&C++
常见排序主要有以下四种: 1.交换排序 2.选择排序 3.插入排序 4.归并排序 (以下代码基本都有输出每步排序结果) 一.交换排序 交换排序主要是冒泡排序和快排 1.冒泡排序 流程: (1)对数组中 ...
- JS-常考算法题解析
常考算法题解析 这一章节依托于上一章节的内容,毕竟了解了数据结构我们才能写出更好的算法. 对于大部分公司的面试来说,排序的内容已经足以应付了,由此为了更好的符合大众需求,排序的内容是最多的.当然如果你 ...
- JS基础-垃圾回收机制与内存泄漏的优化
[V8引擎]浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略 垃圾回收机制 如何判断回收内容 如何确定哪些内存需要回收,哪些内存不需要回收,这是垃圾回收期需要解决的最基本问题.我们可以这样 ...
- Rabbit安装(单机及集群,阿里云)
Rabbit安装(单机及集群,阿里云) 前言 虽然我并不是部署人员,但是自己私人测试环境的各类东东还是得自己安装的. 尤其在规模不大的公司,基本安装部署工作都是后端的份内之事. 那么最令人痛苦的,莫过 ...
- [从今天开始修炼数据结构]图的最短路径 —— 迪杰斯特拉算法和弗洛伊德算法的详解与Java实现
在网图和非网图中,最短路径的含义不同.非网图中边上没有权值,所谓的最短路径,其实就是两顶点之间经过的边数最少的路径:而对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,我们称路径上第 ...
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze (分层dijkstra)
There are NN cities in the country, and MMdirectional roads from uu to v(1\le u, v\le n)v(1≤u,v≤n). ...
- Python工作好找吗?没有工作经验和学历怎么找?【就业必学】
大家都知道,随着人工智能时代的到来,Python的需求也变的越来越大了.从目前各大IT招聘网上显示招聘需求是非常大,而且薪资基本都在10k起,高的可达40-50k,当然这个要求很高,看下普遍的吧: 一 ...