MySQL之DQL语句

文章目录

DQL语句

DQL(Data Query Language)查询数据

  • 操作查询:select
  • 简单的查询,复杂的查询
  • 数据库中最核心的语言,最重要的语句
  • 使用频繁的语句

指定查询

查询全部

语法:

sql 复制代码
select 全部字段(*) from 表名 ;

案例:

sql 复制代码
select id,username,password from demo;

select * from demo;
查询部分数据

语法:

sql 复制代码
select 字段1,字段2 from 表名;

案例:

sql 复制代码
select username,password from demo;
别名查询

语法:

sql 复制代码
select 字段1 AS 别名, 字段2 AS 别名 from 表名 AS 别名;

案例:

sql 复制代码
select  name AS 姓名,address as 地址 from students;
使用order by子句

对于结果集按照一个列或者多个列进行排序

语法:

sql 复制代码
select 字段1,字段2... from 表名 order by 字段1,字段2...  asc(升序)| desc(降序);

案例:

sql 复制代码
select * from demo1 order by age asc ;
拼接查询

语法:

sql 复制代码
select concat ('名字',字段) from 表名;

案例:

sql 复制代码
select concat('用户名',username) form demo;
去重查询

语法:

sql 复制代码
select distinct 字段 from 表名

案例:

sql 复制代码
select distinct age from demo
WHERE -- 条件过滤

如果需要从表中选取指定的数据,可将 WHERE 子句添加到 SELECT 语句。

逻辑运算符 语法 描述
and && a and b a && b 逻辑与,两个多为真,结果为真
or || a or b a|| b 逻辑或,其中一个为真,则为真
not ! not a ! a 逻辑非,真为假,假为真
运算符号 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
between 在某个范围内
like 搜索某种模式

语法:

sql 复制代码
select 字段 from 表名 where 字段 运算符 值;

实例:

sql 复制代码
select age from demo  where age >18 and age <= 50;

select username from demo where username = '张三';

select age from demo where age between 1 and 18;
sql 复制代码
select * from students where age = 18 or iphone = 120;
模糊查询

语法:

sql 复制代码
select 字段 from 表名 where 字段  like '字符';

实例

sql 复制代码
select username from demo where username like '张%';
select username form demo where username like '张_';
select username from demo where username like '% 张%';

语法:

sql 复制代码
select 字段 from 表名 where 字段 in();

实例:

sql 复制代码
select username from demo where username in('张三','李四');
JOIN -- 多表关联
sql 复制代码
select * from students,demo where students.name = demo.name;

JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

我们需要再创建一个表:Orders。

sql 复制代码
create table orders (id_o number,orderno number,id_p number);
insert into orders values(1,11111,1);
insert into orders values(2,22222,2);
insert into orders values(3,33333,3);
insert into orders values(4,44444,4);
insert into orders values(6,66666,6);
select * from orders;

"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用他们的确切姓名。

sql 复制代码
select * from persons p,orders o where p.id_p=o.id_p;

可以看到,"Id_P" 列把上面的两个表联系了起来。

语法:

sql 复制代码
select 列名
from 表A
INNER|LEFT|RIGHT|FULL JOIN 表B
ON 表A主键列 = 表B外键列;

不同的 SQL JOIN:

下面列出了可以使用的 JOIN 类型,以及它们之间的差异。

  • JOIN: 如果表中有至少一个匹配,则返回行
  • INNER JOIN: 内部连接,返回两表中匹配的行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

实例:

如果我们希望列出所有人的定购,可以使用下面的 SELECT 语句:

sql 复制代码
SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
INNER JOIN Orders o
ON p.Id_P = o.Id_P
ORDER BY p.LastName DESC;
求和查询
sql 复制代码
select sum(age) from students;
排序查询
sql 复制代码
-- 升序:asc,降序:desc
select * from students order by iphone asc;
统计查询
sql 复制代码
-- 年龄为89的数据
select sum(age = 89) from students;
sql 复制代码
-- 所有年龄的数据
select count(age) from students;
分页查询
sql 复制代码
-- 分页查询;参数0:起始值,2:每页显示2条数据
select * from students limit 0,2;

select * from students limit 2,2;

select * from students limit 4,2;
相关推荐
志栋智能几秒前
超自动化巡检:洞察未知隐患,助您事前不出事
大数据·运维·网络·数据库·自动化
杼蛘几秒前
Kali下载与简单使用/MariaDB安装/Docker安装/MySQL镜像安装
mysql·docker·kali·mariadb
光影少年5 分钟前
Android和iOS原生开发的基础知识对RN开发的重要性,RN打包发布时原生端需要做哪些配置?
android·前端·react native·react.js·ios
Teable任意门互动9 分钟前
多维表格本地化部署实践解析 企业如何实现数据自主可控路径
数据库·excel·钉钉·飞书·开源软件
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.11 分钟前
MySQL主从复制实战配置详解,以及企业级相关优化说明
android·mysql·adb
simpleeeeee11 分钟前
安卓开发者应该知道的 10 个安卓性能优化秘诀
android
You Only Live Once_214 分钟前
SQLite3部署与配置[WIN11]
数据库·sqlite
光泽雨14 分钟前
mysql体系结构
数据库·mysql
云飞云共享云桌面15 分钟前
8-10位研发3D(sw、ug、creo)画图如何共享一台工作站?
运维·服务器·网络·数据库·3d·电脑
simpleeeeee15 分钟前
Android 17:API 级别 37 的开发者指南——现在你需要构建什么
android