数据库开发—MySQL

DQL是数据查询语言,用于查询数据库表的记录。基本操作包括select字段查询,条件查询(如比较运算符,逻辑运算符),排序查询(asc/desc),分页查询(limit)和聚合函数(count,max,min,avg,sum)。此外,文章还讨论了分组查询(groupby,having)以及where和having的区别。在外键方面,区分了物理外键和逻辑外键的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库操作—DQL

查询

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

查询关键字: select

语法

select字段列表基本查询(不加任何条件)
from表名列表
where条件列表条件查询
group  by分组字段列表分组查询
having分组后条件列表
order by排序字段列表排列查询
limit分页参数分页查询

基本查询

1.查询多个字段

select 字段1, 字段2, 字段3 ...  from 表名 ;

select * from 表名 ;

2.字段设置别名

select 字段1  [ as  别名1 ] , 字段2  [ as  别名2 ]   ...  from 表名;

select 字段 1 [ 别名 ] , 字段2 [ 别名 ] ... from 表名 ;

3.去除重复记录

select distinct 字段列表 from 表名;

条件查询

1.常用比较运算符
比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
between...and...在什么之间(含最大,最小值) 
in(....)在in之后的列表中的值
like 模糊匹配(单个字符_  / 多个字符%)
is null时null
2.常用的逻辑运算符:
逻辑运算符功能
and 或&&并且,多个条件同时成立
or 或 ||或者(多个条件任意成立一个)
not 或 !非 ,不是

排序查询

1.语法

select 字段列表 from 表名 order by 字段1  排序方式1 , 字段2  排序方式2 ;

2.排序方式

asc : 升序

desc :降序

注意:

如果是升序, 可以不指定排序方式ASC ;

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

分页查询

1.语法

select 字段列表 from 表名 limit 起始索引, 查询记录数 ;

注意:

起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示数量。

分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是limit。

如果查询的是第一页数据,起始索引可以省略。

聚合函数

1.介绍

将一列数据作为一个整体,进行纵向计算 。

2.常见的聚合函数
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和
3.语法

select  聚合函数(字段列表)  from   表名 ;

注意:

对于count(*) 、count(字段)、 count(1)三种使用方式,建议大家使用count(*),因为数据库底层对此专门做了优化。

count(字段)不会统计字段中值为 null 的数

分组查询

1.语法

select 字段列表 from 表名  [ where 条件 ] group by 分组字段名  [ having 分组后过滤条件 ];

2.where与having区别

      (1)  执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

       (2) 判断条件不同:where不能对聚合函数进行判断,而having可以

注意:

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

执行顺序: where > 聚合函数 > having。

支持多字段分组, 具体语法为 : group by columnA,columnB

if 语句

统计男性和女性员工的数量 (结果展示时, 性别不能展示 1 或 2 , 要转化为 男 或 女 )

select if(gender = 1, '男性员工', '女性员工' ) name, count(*) value from 表名 group by gender;

多表设计

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:

1.一对多(多对一)

一对多关系实现:在数据库表中多的一方,添加字段,来关联一的一方的主键。

2.一对一

在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(unique)

3.多对多

建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

注意:

外键约束:让两张表的数据建立连接,保证数据的一致性和完整性。  对应的关键字:foreign key

外键的操作语法:

-- 创建表时指定
create table 表名(
    字段名    数据类型,
    ...
    [constraint]   [外键名称]  foreign  key (外键字段名)   references   主表 (主表列名)    
);
-- 建完表后,添加外键

alter table  表名  add constraint  外键名称  foreign key (外键字段名) references  主表(主表列名);

物理外键与逻辑外键

1). 物理外键

介绍:使用 foreign key 定义外键关联另外一张表

缺点:

A. 影响增、删、改的效率(需要检查外键关系)。

B. 仅用于单节点数据库,不适用与分布式、集群场景。

C. 容易引发数据库的死锁问题,消耗性能。

2). 逻辑外键

介绍:在业务层逻辑中,解决外键关联。

特点:通过逻辑外键,就可以很方便的解决物理外键的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值