mysql基础-表数据操作之查

目录

1.别名

2. 单表查询

2.1 模糊查询 - like

2.2 limit

2.3 order by

2.4 group by

2.5 in

2.6 between and

2.6 is null

2.7 not

2.8 运算符

3. 联表查询

全连接

左连接

右连接


本次分享一下数据的DQL语言。

1.别名

首先分享一下别名的知识。我们在查询的时候可以对字段、表名或查询结果赋值一个别名,赋值别名的时候可以使用关键字AS,此关键字不区分大小写。

现有表机构如下:

CREATE TABLE `t_order` (
  `order_id` int(12) NOT NULL AUTO_INCREMENT COMMENT '订单主键',
  `money` decimal(10,2) DEFAULT NULL COMMENT '金额',
  `good_id` int(12) DEFAULT NULL COMMENT '商品ID',
  `good_name` varchar(20) DEFAULT NULL COMMENT '商品名称',
  PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4

字段起别名如下,以下两种方式即可,如果想规范一些,建议使用as关键字,以下就不再列两种方式,仅展示一种。

-- 方式1
select good_name as goodName from t_order  where order_id = 1;
-- 方式2
select good_name  goodName from t_order  where order_id = 1;

表名起别名如下:

select good_name from t_order as t1  where order_id = 1;

对查询结果起别名

 select * from (select good_name  from t_order) as t1

2. 单表查询

语法:

select 字段 from 表名 where 条件

以下的查询较简单,可自行执行尝试,故不再建表,表名以table表示,字段名会比较随意。

2.1 模糊查询 - like

通配符:%

表示任意字符。

右模糊,例如查询姓张的人:

select * from table where name like '张%'

左模糊,例如:查询名称最后一个字是帅的人

select * from table where name like '%帅'

通配符: _

表示一个任意的字符。

例如:查询商品名称为2个字,且最后一个字是”子“的商品

select * from t_good where good_name like '_子'

2.2 limit

语法:

limit offset, rows
offset 代表偏移量,表示从第几行开始读取数据,mysql的起始偏移量为0
rows 代表返回的行数

查询限制的条件,例如:limit 5,表示查询前5条数据,此处相当于 limit 0,5。

常用于分页处理,程序中也常使用limit 1用于提升性能。

假如:查询第三页数据,每页5条,则为 limit 10,5。

可以记住这个公式:limit (page-1) * pageSize,pageSize,page:页数,pageSize:每页大小。

2.3 order by

含义:排序。

order by 排序,默认是正序,例如order by create_time,则为按创建时间正序。

正序关键字:asc,倒序关键字:desc。

示例:奖品有金牌、银牌、铜牌,排名:如果金牌相同,则按银牌排名,如果银牌相同则按铜牌排名。

select * from 获奖表 order by 金牌 desc,银牌 desc, 铜牌 desc

扩展:按指定字段排序

语法:order by FIELD

示例:按order_id字段排序,按order_id值为'1','3','2'依次排序

select * from t_order where order_id in ('1','2','3')  order by FIELD(order_id,'1','3','2')

查询结果示例图:

mysql基础-表数据操作之查_第1张图片

无order by FIELD查询结果示例图:

mysql基础-表数据操作之查_第2张图片

2.4 group by

含义:分组。

示例:学生按性别分组

select sex from student group by sex 

注意事项:如果规范一些,那么select 后的字段写分组的字段,不要写其他表中字段,例如:学生姓名。

2.5 in

含义: 在其中,范围关键字。

示例:查询学生姓名是张三和李四的学生信息

select * from student where name in ('张三','李四')

2.6 between and

含义:在...之间。

例如:查询订单表中order_id 在10到100之间的数据

select * from  t_order where order_id between 10 and 100

2.6 is null

含义:是否为空。

示例:查询商品表中商品名称为null的数据

select * from t_good where good_name is null

2.7 not

含义:反向。

例如:not like , not in ,is not null

示例:查询除张三和李四的学生信息

select * from student where name not in ('张三','李四')

2.8 运算符

运算符:> 、< 、<=、>=、 <>

示例:查询创建时间大于‘2024-01-07 00:00:00’的数据

select * from t_order where create_time > 2024-01-07 00:00:00’

其他的运算符就不示例了。

3. 联表查询

联表查询主要包括三种:全连接、左连接、右连接

全连接

关键词:inner join ..... on 条件

示例:

select t1.*,t2.* from t_order t1 inner join t_good t2 on t1.good_id = t2.good_id

左连接

关键词: left join ...... on 条件

以左表连接的表为基础,查询右边表的内容

示例:

select t1.*,t2.* from t_order t1 left join t_good t2 on t1.good_id = t2.good_id

此语句查询到是:所有的订单数据,如果有商品数据则展示,无商品数据则展示为null

右连接

关键词: left join ...... on 条件

以右表连接的表为基础,查询左边表的内容

示例:

select t1.*,t2.* from t_order t1 right join t_good t2 on t1.good_id = t2.good_id

此语句查询到是:所有的商品数据,如果有订单数据则展示,无订单数据则展示为null

本次分享至此。

你可能感兴趣的:(MySql,mysql,select,limit,order,by,group,by,指定字段排序)