2018.11.29_MySQL约束_总结

Posted xcs842590060

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.11.29_MySQL约束_总结相关的知识,希望对你有一定的参考价值。

2018.11.29

DQL:查询语句

排序查询:  order by 排序字段1,排序方式1,...,排序字段n,排序方式n;
排序方式
  ASC:升序,默认排序方式
  DESC:降序
注意事项:   如果有多个排序条件,只有当第一排序字段值一样时,才会按照第二排序字段值排序

聚合函数
概念:  将一列的数据作为一个整体,进行纵向的计算
分类
  count  -- 计算个数(可以写成*,建议使用非空的列,例如主键)
  max  -- 计算最大值
  min  -- 计算最小值
  sum  -- 计算和
  avg  -- 计算平均数

语法
select 聚合函数(列名)  from 表名 [where 条件];
select 聚合函数(ifnull (列名,0))  from 表名 [where 条件];
注意事项:  聚合函数计算会排除null值,可以通过ifnull函数解决,或者选择不包含非空的列进行计算

分组查询:  select 分组字段 from 表名 [where 条件] group by 分组字段 [having 条件];
注意事项:  分组之后查询的字段是分组字段或聚合函数

where与having的区别
  (1)where作用在分组之前,不符合条件,不参与分组
  (2)having作用在分组之后,不符合条件,不会被查询
  (3)where后面不能使用聚合函数,having后面可以使用聚合函数

分页查询:  select * from 表名 limit offset,length;
注意事项
  (1)limit是mysql数据库的方言
  (2)offset = (当前页数 - 1) * length  (offset:起始索引 length:每页条数)


约束
概念:  对表中的数据进行限定,保证数据的正确性、有效性和完整性
分类
  非空约束:not null
  唯一约束:unique
  主键约束:primary key
  外键约束:foreign key


非空约束
概念: 指定列的值不能为null,关键字是not null
create table 表名(列名1,数据类型 not null,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 not null;  -- 创建表之后添加
alter table 表名 modify 列名 数据类型;  -- 删除非空约束

唯一约束
概念:  指定列的值不能重复,关键字是unique
create table 表名(列名1,数据类型 unique,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 unique;  -- 创建表之后添加
alter table 表名 drop index 列名;  -- 删除唯一约束
注意事项
  (1)唯一约束作用的列可以有null值,null没有数据,不存在重复的问题
  (2)添加约束时,如果当前列有不符合条件的值,会报错

主键约束
概念:  指定列的值非空且唯一,关键字是primary key
create table 表名(列名1,数据类型 primary key,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 primary key;  -- 创建表之后添加
alter table 表名 drop primary key;  -- 删除主键约束
注意事项
  (1)主键是表中记录的唯一标识
  (2)一张表只能有一个主键

自动增长
概念: 指定列是数值类型的,可以通过auto_increment实现值的自动增长
create table 表名(列名1,数据类型 primary key auto_increment,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 auto_increment;  -- 创建表之后添加
alter table 表名 modify 列名 数据类型;  -- 删除自动增长
注意事项:  一般会和主键一起使用

外键约束
概念:  让表与表产生关系,保证数据的正确性
create table 副表名(...,constraint 外键名 foreign key (副表外键列名) references 主表名(主表列名));  -- 创建副表时候添加
alter table 副表名 add constraint 外键名 foreign key (副表外键列名) references 主表名(主表列名);  -- 创建副表之后添加
alter table 副表名 drop foreign key 外键名;  -- 删除外键约束

级联操作
alter table 副表名 add constraint 外键名 foreign key (副表外键列名) references 主表名(主表列名) on update cascade / on delete cascade;  -- 添加级联操作
分类
  级联更新:on update cascade
  级联删除:on delete cascade


多表之间的关系

一对多
实现:在多的一方建立外键,指向一的一方的主键
例子:部门和员工

多对多
实现:借助中间表,中间表至少包含两个字段,作为外键,分别指向两张表的主键
例子:学生和课程

一对一
实现:在任意一方添加唯一的外键,指向另一方的主键

例子:人和身份证

范式
概念:设计数据库时需要遵循的一些规范
分类
  第一范式(1NF):每一列都是不可分割的原子数据项
  第二范式(2NF):非主属性必须完全依赖于码(消除非主属性对码的部分函数依赖)
  第三范式(3NF):任何非主属性不能依赖于非主属性(消除传递依赖)

函数依赖
概念:通过A属性(属性组)可以确定B属性的值,则称B依赖于A
  完全函数依赖:如果A是一个属性组,确定B属性的值需要依赖于A属性组的所有属性
  部分函数依赖:如果A是一个属性组,确定B属性的值需要依赖于A属性组的部分属性
  传递依赖:通过A属性(属性组)可以确定B属性的值,通过B属性可以确定C属性的值
  码:在一张表中,一个属性或属性组的值被其他所有属性完全依赖,这个属性或属性组为该表的码
    主属性:码属性组中所有的属性
    非主属性:码属性组以外的其他属性

数据库的备份和还原
命令行
备份:mysqldump -u用户名 -p密码 数据库名 > 本地路径
还原
  (1)登录MySQL
  (2)创建数据库
  (3)使用数据库
  (4)执行语句:source 本地sql文件路径

图形化工具
  备份:选中数据库 -> 右键 -> 备份导出 -> 转储到sql -> 选择路径 -> 保存
  还原:选中[email protected] -> 右键 -> 执行sql脚本 -> 选中本地sql文件 -> 执行
































































































































以上是关于2018.11.29_MySQL约束_总结的主要内容,如果未能解决你的问题,请参考以下文章

MySQL_约束

Mysql常见约束-创建_修改_表时添加约束 自增长列

[JavaWeb-MySQL]约束(非空约束,唯一约束,主键约束,外键约束_级联操作)

i MySQL 查看约束,添加约束,删除约束

python基础_mysql约束

第七周 Java语法总结之数据库大全_DDL_DML_DQL_约束_备份与还原_表的关系_三大范式_多表查询(内连接_外连接_子查询)_musql事务_隔离级别