1 默认值deafult:在建表的时候字段后使用 default ,默认值字段允许为null。

2 非空 not null:在建表的时候字段后使用  not null。

非空字段必须赋值,并且不能是null。

3 唯一:主键和unique 字段必须唯一。

注意:unique 对 null 值不起作用。只对有值的字段数据进行约束。

4 主键primary key:就是not null 和 nuique的联合。

5 自增长auto_increment:

6 外键:约束两张表,主要是解决数据冗余。

alter table tablename1

add foreign key column name1

references tablename2 column name2

on delete restrict/cascade/set null;

在建表的时候创建外键,在添加完字段后 foreign key(column ame) reference table name2  (column name2) on delete cascade/restrict/set null。

注意:

1)被约束的表为附表,约束别人的表是主表,外键设置在附表上。

2)添加数据是先添加主表数据,再添加附表数据

3)不能直接修改主表,先修改附表数据。

4)删除数据,先删除附表数据,再删除主表数据。

二、数据库表的设计原则,三大范式

第一范式:要求表中的每个字段必须是不可分割的独立单元,第一范式(确保每列保持原子性)

第二范式:要求每张表表达一个思想,表的每个字段都和主键有依赖,第二范式(确保表中的每列都和主键相关)

第三范式:要求每张表主键之外的每个字段都只能和主键有直接依赖关系,第三范式(确保每列都和主键列直接相关,而不是间接相关)

三、关联查询

查询规则:1)确定查询那些表 2)确定查询哪些字段 3)表与表之间的连接条件

例如:

表1: student

CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
sgender CHAR(2) NOT NULL,
sage SMALLINT NOT NULL,
sphone VARCHAR(11),
address VARCHAR(400));

表2:englishScore

CREATE TABLE englishScore(
id INT PRIMARY KEY AUTO_INCREMENT,
sscore SMALLINT,
sid INT NOT NULL,
FOREIGN KEY(sid) REFERENCES student(id) ON DELETE CASCADE
);

查询学生姓名和成绩

3.1 内连接查询,两张表或多张表的连接条件都非空

SELECT sname, sscore
FROM student S, englishScore ES
WHERE S.id = ES.sid;

相当于是使用下面语句执行查询

SELECT sname, sscore
FROM student S
INNER JOIN englishScore ES
ON S.id = ES.sid;

3.2 左外连接

SELECT S.sname, ES.sscore
FROM student S
LEFT JOIN englishScore ES
ON S.id = ES.sid;

3.3 右外连接

SELECT S.sname, ES.sscore
FROM student S
RIGHT JOIN englishScore ES
ON S.id=ES.sid;

MySQL数据约束和关联查询相关推荐

  1. mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据

    使用pdo关联查询mysql数据 try { $pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456'); // 0.等 ...

  2. MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?

    有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多. 一.优化原则 小表驱动大表,即小的数据集驱动大 ...

  3. mysql DML操作、关联查询、联合查询、聚合函数使用

    目录 DML操作 关联查询.联合查询 按条件查询.聚合函数使用 DML操作 CREATE DATABASE db2USE db2; CREATE TABLE stu(sid INT PRIMARY K ...

  4. 『MySQL』行号关联查询

    前言 永远相信美好的事情即将发生 背景 前段时间碰到过这样一个问题,查询出一家店铺在2020年和2019年活动类型为'xxx'的日期,因历史原因,2019年的活动和2020年的活动分别存储在两张表中, ...

  5. MySQL调优之关联查询、子查询优化

    我们准备如下两个表,并插入数据. #分类 CREATE TABLE IF NOT EXISTS `type` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREME ...

  6. MySQL的多表关联查询

    一.多表关联查询 多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来. 1.1 交叉查询 交叉查询就是将多张表的数据没有条件地连接在一起进行展示. 1.1.1 语法 使用交叉查询类别和商品 ...

  7. sql server中数据约束相关的查询

    根据表名查找数据约束 SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'CMS_EventLog'; SEL ...

  8. mysql 数据操作 单表查询 where约束 between and or

    WHERE约束 where字句中可以使用: 比较运算符:>< >=  <=  != between 80 and 100 值在80到100之间   >=80  <= ...

  9. mysql 数据表父子关联数据查询sql

    mysql数据库表person_organization中,主键是organization_id,另有一列parent_organization_id指向父机构的数据记录:通过以下sql可以取出指定o ...

最新文章

  1. java的byte php_java_浅谈java的byte数组的不同写法,(由于篇幅原因阐述的不够详 - phpStudy...
  2. 8天学通MongoDB——第三天 细说高级操作
  3. VTK:BackfaceCulling背面剔除用法实战
  4. Python 标准库 urllib2 的使用细节
  5. python冒泡排序代码完整_用Python写冒泡排序代码
  6. XMPP之openfire无法启动
  7. 二进制枚举子集 CS Maxor 或运算,DP(SOS)
  8. 抛弃扎克伯格!拦不住的 Facebook 离职潮
  9. PyTorch:tensor-数据处理
  10. jQuery选择器【学习】
  11. 第7章非线性系统的分析-7.1非线性系统的基本概念
  12. 【智能制造】请拿走这份精益培训PPT,不谢!
  13. Blinky.c(171): warning: #1-D: last line of file ends without a newline
  14. 针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言466-476条如下:
  15. 使用OpenCV将一个三角形图形扭曲到另一个三角形
  16. Test-time Adaptation论文合集
  17. background 互联网图片_微信小程序 background-image设置背景图片不显示的解决办法...
  18. jpeg怎么转换成jpg格式?三步学会在线jpeg转jpg
  19. 历史时点数据统计如何设计表结构_如何做好调薪管理?年度调薪的操作方式
  20. google插件查看源码

热门文章

  1. [bzoj1355][Baltic2009]Radio Transmission_KMP
  2. Override Fuction 调用——到底使用的是谁的函数
  3. hdu 4454 Stealing a Cake 三分法
  4. SpringBoot集成Maven工程
  5. Eclipse控制台Console使用说明
  6. Java调用浏览器打开指定页面的5种方法(最全)
  7. 怎么批量在数字里加入网页_手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇
  8. c语言程序设计电大作业,2018年最新电大C语言程序设计作业答案.doc
  9. 计算机vf的讲解,计算机二级vf重点知识讲解.doc
  10. mysql数据库开发经历_六年开发经验,整理Mysql数据库技巧笔记,全网最详细的笔记集合!...