Web后端开发——数据库
DQL
数据查询语言,用来查询数据库中表的记录。
语法
基本查询
查询多个字段:select 字段1, 字段2, 字段3 from 表名;
查询所有字段(通配符):select * from 表名;
设置别名:select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
去除重复记录:select distinct 字段列表 from 表名;
* 号代表查询所有字段,在开发中少用(不直观、影响效率)。条件查询
条件查询:select 字段列表 from 表名 where 条件列表 ;
运算符
| between...and... | 在某个范围之内(含最小、最大值) |
| in(...) | 在in之后的列表中的值,多选一 |
| like 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
| is null | 是null |
排序查询
条件查询: select 字段列表 from 表名 order by 字段 1 排序方式 1 , 字段 2 排序方式 2 ; 排序方法: ASC :升序(默认值) DESC :降序分页查询
分页查询:select 字段列表 from 表名 limit 起始索引, 查询记录数 ;l分页查询:select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
聚合函数
将一列数据作为一个整体,进行纵向计算
语法;select 聚合函数(字段列表) from 表名 ;
分组查询
分组查询: select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having 分组后过滤条件 ]; where与having区别 1. 执行时机不同: where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤。 2. 判断条件不同: where 不能对聚合函数进行判断,而 having 可以。多表设计
- 一对多(多对一)
- 多对多
- 一对一
一对多(多对一) 举例:一个部门对应多个员工,一个员工对应一个部门
实现:一对多关系实现:在数据库表中多的一方,添加字段,来关联一的一方的主键。
-- 创建表时指定
create table 表名(字段名 数据类型,...[constraint] [外键名称] foreign key (外键字段名) references 主表 (主表列名)
);-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);
物理外键: 概念: 使用 foreign key 定义 外键关联另外一张表 。 缺点: l 影响增、删、改的效率(需要检查外键关系)。 l 仅用于单节点数据库,不适用与分布式、集群场景。 l 容易引发数据库的死锁问题,消耗性能 。
逻辑外键: 概念:在业务层逻辑中,解决外键关联。 通过逻辑外键,就可以很方便的解决上述问题。 一对一:
举例 : 用户 与 身份证信息 的关系 关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中,以提升操作效率 实现 : 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的 (UNIQUE)多对多
举例 : 学生 与 课程的关系 关系 : 一个学生可以选修多门课程,一门课程也可以供多个学生选择 实现 : 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键signed:以tinyint为例,它的取值范围-128-127,加不加signed都默认此范围。加上unsigned表示范围0-255,其实相当于把负数那部分加到正数上。例如身高、体重或者年龄等字段一般不会为负数,此时就可以设置一个 UNSIGNED ,不允许负数插入。
decimal:decimal(M,N)
M表示:不包括小数点,不包括符号位,所能存数字的总位数(包括小数部分和整数部分)
N表示:小数部分数字的位数,由此可知整数部分的位数为M-N;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
