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命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...
随机推荐
- [TimLinux] Python __hash__ 可哈希集合
规则: __hash__ 应该返回一个整数,hash()函数计算基础类型的hash值 可哈希集合:set(), forzenset(), dict() 三种数据结构操作要求 key 值唯一,判断唯一的 ...
- java中List、Map、Set、Stack、Queue、Collections等的使用
java中List.Map.Set.Stack.Queue.Collections等的使用 List 创建方法: List<String> list=new ArrayList<&g ...
- LeetCode--300. 最长递增子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4 ...
- Runtime - 关联对象使用方法及注意点
大家都知道在分类里,可以间接的添加属性,运用runtime关联对象. 如下图,只是声明了btnClickedCount的set, get方法而已 并没有生成_btnClickedCount 成员变量, ...
- Oracle GoldenGate for Sql Server连接ODBC失败的处理方法
Oracle GoldenGate for Sql Server连接oracle数据库的时候还是比较容易的,命令行下面只要: GGSCI> dblogin useridalias [ alias ...
- 【译】在React中实现条件渲染的7种方法
原文地址:https://scotch.io/tutorials/7-ways-to-implement-conditional-rendering-in-react-applications 借助R ...
- django基础之day04,聚合查询和分组查询
聚合查询: 聚合函数必须用在分组之后,没有分组其实默认整体就是一组 Max Min Sum Avg Count 1.分组的关键字是:aggretate 2.导入模块 from django.db.mo ...
- 2、手写Unity容器--第一层依赖注入
这个场景跟<手写Unity容器--极致简陋版Unity容器>不同,这里构造AndroidPhone的时候,AndroidPhone依赖于1个IPad 1.IPhone接口 namespac ...
- VS2019添加Link to SQL类之后,LinqDataSource配置数据源没有可选项
原创. 环境:visual studio 2019 ,.net framwork 4.0 问题: 1.新建Linq to SQL类后(.dbml文件),从服务器资源管理面板中数据库连接中,把表Mill ...
- C#线程学习笔记五:线程同步--事件构造
本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/23/Event_Constructor.html,记录一下学习过程以备后续查用. 前面讲的线 ...