一:约束条件之主键

1.什么是主键?
  • 从约束条件的角度,主键是非空且唯一的字段 not null unique
create table t1(id int not null unique,name varchar(32)
);
2.主键的特点

主键可以加快数据查询,类似于新华字典的目录

1.InnoDB存储引擎规定,mysql必须有且只有一个主键

2.当表中没有主键字段或者非空且唯一的字段的时候,mysql会自动创建一个隐藏的主键字段

3.如果创建的表中没有主键字段,而有非空且唯一的字段,InnoDB存储引擎会自动将该字段设置为主键

4.创建表的时候都应该有一个’id’字段,并且该字段为主键(eg:udi,sid,eid…)

5.联合主键:几个字段公用一个主键

create table t3(nid int,sid int,primary key(nid, sid)
);

6.主键的自增 auto_increment

  • 该约束条件不能单独使用 必须跟在键后面(主要配合主键一起使用)
  • 自增的特点:自增的操作不会因为删除数据的操作而回退和重置
create table t4(id int primary key auto_increment,name varchar(32));

7.重置主键: truncate 表名; 删除表数据并重置主键值

二:约束条件之外键

1.什么是外键?

专门用来记录表与表之间数据的关系

2.表与表之间数据的关系
  • 1.一对多
  • 2.多对多
  • 3.一对一
  • 4.没有关系
3.如何判断表与表之间的关系
  • 方法:换位思考,即:站在不同的表的角度上分析,看该表与其他表之间是否是一对多关系
4.sql语句建立表关系的顺序
  • 1.先写普通字段
  • 2.再写外键字段
  • 3.先创建被关联的表(没有外键)
  • 4.然后再是关联表(有外键)
5.有外键的表的数据操作
  • 1.插入表数据的时候 针对外键字段只能填写被关联表字段已经出现过的数据值
  • 2.被关联字段无法修改和删除
  • 级联更新、级联删除 被关联数据一旦变动 关联的数据同步变动

三:三种关系表的建立

1.一对多
1.什么是一对多表关系?

如下图:员工表中的每一条员工数据只能对应部门表中的一条部门数据,而部门表中的每一条部门数据够对应员工表中的多条员工数据,这种关系就是一对多的表关系。

2.图示:

3.sql语句创建一对多表关系

外键建在多的一方

create table dep(id int primary key auto_increment,name varchar(32)
);create table emp(id int primary key auto_increment,name varchar(32),dep_id int,foreign key(dep_id) references dep(id)on update cascadeon delete cascade
);
2.多对多
1.什么是多对多表关系?

如下图所示:书籍表中的每一条书籍数据可以对应作者表中的多条作者数据,而作者表中的一条作者数据也能对应书籍表中的多条书籍数据,这种关系就是多对多的关系

2.图示:

3.sql语句创建多对多表关系

需要单独创建第三张表来存储这种关系,外键建在第三张表中

create table Book(id int primary key auto_increment,name varchar(32)
);create table Author(id int primary key auto_increment,name varchar(32)
);create table Author2Book(id int primary key auto_increment,author_id int,foreign key(author_id) references Author(id)on update cascadeon delete cascade,book_id int,foreign key(book_id) references Book(id)on update cascadeon delete cascade
);
3.一对一
1.什么是一对一表关系?

如下图所示:用户表中的每一条数据只能对应用户详情表中的一条数据,用户详情表中的每一条数据也只能对应用户表中的一条数据,这种关系就是一对一

2.图示:

3.sql语句创建多对多表关系

外键建在任意一方都可以,建议建在调用频率高的一方

create table user(id int primary key auto_increment,name varchar(32),detial_id int unique,foreign key(detial_id) references user_detial(id)on update cascadeon delete cascade
);create table user_detial(id int primary key auto_increment,age int,phone bigint
);

MySQL中三种表关系的建立相关推荐

  1. mysql中对一个表的id建立了唯一索引,那么查询的select count(*) ,select count(1) ,select count(id),select count(列名)

    1.mysql中对一个表的id建立了唯一索引,那么查询的select count(*) ,select count(1) ,select count(id),select count(列名) 的查询结 ...

  2. PD的CDM模型中的三种实体关系

    转自:http://www.cnblogs.com/syf/articles/2480580.html PD的CDM模型中的三种实体关系 CDM是大多数开发者使用PD时最先创建的模型,也是整个数据库设 ...

  3. MySQL关系运算和连接运算_关系数据库系统能够实现的三种基本关系运算

    关系数据库管理系统能够实现的三种基本关系运算是选择(从关系中找出满足给定条件的元组的操作称为选择).投影(从关系模式中指定若干个属性组成新的关系).连接(是关系的横向组合). 选择 使用比较运算符.逻 ...

  4. android项目中有哪几种依赖关系,Android Studio项目中三种依赖的添加方式

    通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖:添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库 ...

  5. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  6. MySQL中的多表连接

    MySQL中的多表连接 当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询.根据不同表中的数据之间的关系查询相关联的数据. 一.语法结构 使用一个表在多个表中查询数据: Where子句中写连 ...

  7. 精华推荐 | 【MySQL技术专题】「主从同步架构」全面详细透析MySQL的三种主从复制(Replication)机制的原理和实战开发(原理+实战)

    前提概要 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作.此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求, ...

  8. MySQL中视图与表的区别

    1.MySQL中视图和表的区别以及联系 (1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是. (2)视图没有实际的物理记录,而表有. (3)表是内存,视图是窗口. (4 ...

  9. mysql中视图和表的区别及联系,mysql 中视图和表的区别以及联系是什么?

    表是内容,视图是窗口.视图是已经编译好的sql语句,是基于sql语句的结果集的可视化的表,而表不是. 2)实与虚 表属于全局模式中的表,是实表:视图属于局部模式的表,是虚表. 3)是否存在物理记录 视 ...

最新文章

  1. 20170307-1
  2. 针对Web应用的【攻击模式篇】
  3. 算法学习:最小圆覆盖
  4. 20161102学习笔记
  5. oracle中那个日期怎么相减_二手车鉴定中最容易混淆的日期读法,你会是那个读错的人吗?...
  6. python易学吗_所有人都说Python 简单易学,为何我觉得难?
  7. 可以使用中文作为变量名_次氯酸可以作为伤口消毒使用吗?
  8. 代码里-3gt;gt;1是-2但3gt;gt;1是1,-3/2却又是-1,为什么?
  9. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)
  10. Linux read返回不足值,系统级I/O
  11. [ ArcGIS for Server 10.1 系列 ] - 重新创建Site
  12. 本地提交到yarn_Flink on Yarn三部曲之三:提交Flink任务
  13. 实验十:图形用户界面设计
  14. ios UICollectionViewLayout 横向瀑布流
  15. Git:clone时报错403
  16. 外卖返利小程序定制美团饿了么返利系统公众号外卖返利源码代搭建
  17. 双屏怎么快速切换鼠标_Win7系统如何设置一键快速切换双屏显示(图文)
  18. android耳机上报流程,Android 耳机插入过程分析
  19. 联想IBM服务器X3650M3之硬盘扩容
  20. 软考中级软件设计师--下午题

热门文章

  1. python之meshgrid的使用
  2. Resin 3.0.14 和 IIS6 整合
  3. ubuntu 设置静态路由_ubuntu配置静态路由及重启生效
  4. 百度分享自定义分享案例
  5. ce在科学计算机器是什么意思,计算器的ce键是什么功能
  6. Git版本控制管理——补丁
  7. explicit含义
  8. 微软官方安装U盘启动盘制作方法教程
  9. Win7电脑黑屏按什么键恢复
  10. Win32关于调整窗口大小时,窗口闪烁问题及解决办法