MySQL数据约束和关联查询
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() NOT NULL,
sgender CHAR() NOT NULL,
sage SMALLINT NOT NULL,
sphone VARCHAR(),
address VARCHAR());
表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数据约束和关联查询的更多相关文章
- MYSQL基础操作之数据约束与关联查询
一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 多表查询 目录
mysql 数据操作 多表查询 准备 多表连接查询介绍 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多 ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
- MySQL数据和索引占用空间查询
MySQL数据和索引占用空间查询 查询所有数据库占用磁盘空间大小的SQL语句 SELECT table_schema, -- 数据库名称 concat( TRUNCATE ( sum( data_le ...
- mysql 数据操作 多表查询 准备
为什么需要多表查询: 因为我们不可能把所有数据都放在一张表里 我们把不同数据存储 放在一张一张不同表 方便管理,但我们为了方便管理,把数据拆分到一张一张表去存储. 但是数据还是一个整体,数据之间是有关 ...
- 基于EF的数据外键关联查询
现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...
- mysql 数据操作 多表查询 子查询 介绍
子查询就是: 把一条sql语句放在一个括号里,当做另外一条sql语句查询条件使用 拿到这个结果以后 当做下一个sql语句查询条件mysql 数据操作 子查询 #1:子查询是将一个查询语句嵌套在另一个 ...
随机推荐
- 嵌入式linux内核和根目录制作
系统组成:Bootloader, Boot parameters, Kernel, Root filesystem嵌入式linux系统有linux内核与根文件系统两部分构成,两者缺一不可. 内核制作: ...
- linux ntfs模块
步骤: 1.在/usr/src/linux-2.4.18-3/configs/目录下 找适合自己机器的内核配置文件.我用的kernel-2.4.18-x86_64.config,把它拷贝到/usr/s ...
- [Android Pro] Android7.0系统 关于Android获取流量计数TrafficStats.getUidRxBytes(uid)和TrafficStats.getUidTxBytes(uid)返回-1解决方案
reference : http://blog.csdn.net/zhangyong7112/article/details/54574214 最近一个关于流量的项目在Android7.0系统的手机上 ...
- Java多线程学习(吐血超具体总结)
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 写在前面的话:此文仅仅能说是java多线程的一个入门.事实上Java里头线程全然能够写一本书 ...
- iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用
动态风火轮视图控件:UIActivityIndicatorView 介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView. 类型: typedef N ...
- 数字锁相环Octave仿真
clc; clear all; % 仿真数据长度 SimLens = 1000; % 载波信号 Fs = 2400; Ts = 1 / Fs; Fsig = 60; % 随机初相 Delta_Phas ...
- C# 利用反射动态创建对象[摘录]
摘自:http://hi.baidu.com/yangyuhang/blog/item/f12ea90e13f214e336d12250.html 在VS.Net中,有很多种方法动态调用对象的构造函数 ...
- 【转】vim折叠功能
原文:https://www.yupengsir.com/topic/content?i=140 这个作者的vim系列是高级的用法, 要学习一下. https://blog.easwy.com/arc ...
- 免费的多数据库管理工具sqldbx个人版本
SqlDbx是一个先进的Sql编辑器和数据库对象资源管理器SqlDbx仅一个可执行的文件不需要安装 SqlDbx与SSMS对象内存占差的不是一点点,但功能与SSMS相当 优点:支持多数据库,占用内存小 ...
- RS导出Excel交叉表角对应的列占用多列问题
在Cognos报表展示的时候,很多用户为了计算会把数据报表导出成excel然后再做统计,于是乎我做的一张报表导出成Excel的时候就出现了这样的问题 从上图可以看出交叉表角对应的列 ‘一级手术’和‘二 ...