DQL数据查询语句使用示例


Posted in MySQL onDecember 24, 2022

DQL

(Data Query Language:数据查询语言)

  • 所有的查询操作都要用到它 select
  • 简单的查询,复杂的查询都要用到它
  • 数据库最核心的语言,最重要的语言
  • 使用频率最高的语言

指定查询字段

-- 查询所有的学生  select 字段 from 表
select * from student
-- 查询指定字段
select studentno,studentname from student
-- 给结果起一个名字 , As,可以给字段起别名,也可以给表起别名
select studentno as 学号,studentname as 学生姓名 from student
select studentno 学号,studentname 学生姓名 from student
-- 函数 concat(a,b)
select CONCAT('姓名:',studentname) as 新名字 from student

语法:select 字段 from 表

有时候,列的名字不是那么的见名之意,我们可以用as给字段起别名

字段名 as 别名 或者是 表名 as 表别名

去重 distinct

作用:去除select查询出来的结果中重复的数据,重复的数据只显示一条

-- 查询一下有哪些同学参加了考试
select * from result -- 查询全部的考试成绩
select studentno from result -- 查询有哪些学生参加了考试
select distinct studentno from result -- 去重

数据库的列(表达式)

select version() -- 查询系统版本号(函数)
select 100*3-2 -- 用来计算(表达式)
select @@auto_increment_increment -- 查询自增的步长(变量)
-- 学生考试成绩+1分查看
select studentno,studentresult+1 as '提分后' from result

数据库中的表达式:文本值,列,null,函数,计算表达式,系统变量

select 表达式 from 表

where条件子句

作用:检索符合条件的值

搜索的条件都是由一个或者多个表达式组成!结果都是布尔值

逻辑运算符

DQL数据查询语句使用示例

select studentno,studentresult from result
-- 查询考试成绩在95~100之间的
-- and &&
select studentno,studentresult from result 
where studentresult>=95 and studentresult<=100
-- 模糊查询(区间)
select studentno,studentresult from result 
where studentresult between 95 and 100
-- ! not
select studentno,studentresult from result 
where not studentno=1000

模糊查询:比较运算符

DQL数据查询语句使用示例

-- ===========模糊查询========================
-- 查询姓张的同学
-- like结合%(代表0到任意个字符) _(一个字符)
select studentno,studentname from student
where studentname like '张%'
-- 查询姓张的同学,名字只有两个字
select studentno,studentname from student
where studentname like '张_'
-- ======in(具体的一个或者多个值)========
-- 查询学号1000,1001的学生
select studentno,studentname from student
where studentno in(1000,1001)
-- 查询在北京的学生
select studentno,studentname from student
where address in('北京朝阳')
-- ========null not null====================
-- 查询地址为空的同学 null或者''
select studentno,studentname from student
where address='' or address is null
-- 查询出生日期不为空的学生
select studentno,studentname from student
where borndate is not null

联表查询

DQL数据查询语句使用示例

-- 查询参加考试的同学(学号,姓名,科目编号,分数)
select * from student
select * from result
/*思路:
1.分析需求:分析查询的字段来自哪些表(连接查询)
2.确定使用哪种连接查询? 7种
  确定交叉点,这两个表中哪些数据是相同的
	判断的条件:学生表的studentno=成绩表 studentno	
*/
select s.studentno,studentname,subjectno,studentresult 
from student as s
inner join  result as r
where s.studentno=r.studentno
-- right join 
select s.studentno,studentname,subjectno,studentresult 
from student as s
right join result as r
on s.studentno = r.studentno
-- left join 
select s.studentno,studentname,subjectno,studentresult 
from student as s
left join result as r
on s.studentno = r.studentno

DQL数据查询语句使用示例

练习:

-- ===============联表查询==================
 -- 查询参加考试的同学(学号,姓名,科目编号,分数)
select * from student
select * from result
/*思路:
1.分析需求:分析查询的字段来自哪些表(连接查询)
2.确定使用哪种连接查询? 7种
  确定交叉点,这两个表中哪些数据是相同的
	判断的条件:学生表的studentno=成绩表 studentno	
*/
-- join(连接的表) on(判断的条件) 连接查询
-- where 等值查询
select s.studentno,studentname,subjectno,studentresult 
from student as s
inner join  result as r
where s.studentno=r.studentno
select s.studentno,studentname,subjectno,studentresult 
from student as s
inner join  result as r
on s.studentno=r.studentno
-- right join 
select s.studentno,studentname,subjectno,studentresult 
from student as s
right join result as r
on r.studentno = s.studentno
-- left join 
select s.studentno,studentname,subjectno,studentresult 
from student as s
left join result as r
on s.studentno = r.studentno
-- 查询缺考的同学(只要让成绩为null,就能找到)
select s.studentno,studentname,subjectno,studentresult 
from student as s
left join result as r
on s.studentno = r.studentno where studentresult is null
-- 查询了参加考试的同学信息:学号,学生姓名,科目名称,分数
-- 表 student result subject
-- 右查询
-- 交叉点:学生表 studentno=成绩表 studentno  
--         成绩表 subjectno=科目表 subjectno
select s.studentno,studentname,sub.subjectname,studentresult
from student as s
right join result as r
on r.studentno=s.studentno
inner join `subject` as sub
on r.subjectno=sub.subjectno
-- 我要查询哪些数据 select ...
-- 从哪几个表中查询 from 表 xxx join 连接的表 on 较差条件
-- 假设存在一种多张表查询,先查询两张表开始,然后再慢慢增加
-- from a left join b
-- from a right join b

自连接

自己的表和自己的表连接;

核心:一张表拆分成两张一样的表即可

父类表:

DQL数据查询语句使用示例

子类表

DQL数据查询语句使用示例

查询父类对应的子类关系

DQL数据查询语句使用示例

-- 查询父子信息:把一张表看为两个一模一样的表
select a.categoryname as '父栏目',b.categoryname as '子栏目'
from category as a,category as b
where a.categoryid = b.pid

分页和排序

排序

-- 排序:升序 ASC  降序DESC
-- 通过哪个字段排序,怎么排
select s.studentno,studentname,subjectname,studentresult
from student as s
inner join result as r
on s.studentno = r.studentno
inner join `subject` as sub
on sub.subjectno=r.subjectno
where subjectname = '高等数学-1'
order by studentresult DESC

分页

-- 为什么要分页
-- 缓解数据库的压力,给人更好的体验  ---瀑布流
-- 分页,每页显示五条数据
-- 语法:limit 起始值,页面的大小
-- 网页应用:当前页,总页数,页面的大小
-- limit 0,5 1~5条数据
-- limit 1,5 2~6条数据
select * from student limit 0,5
-- 第一页 limit 0,5   (1-1)*5
-- 第二页 limit 5,5   (2-1)*5
-- 第二页 limit 10,5  (3-1)*5
-- 第N页  limit       (n-1)*5
-- pageSize:页面的大小
-- (n-1)*pageSize:起始值
-- n:当前页
-- 数据总数/页面大小=总页数

语法:limit (查询起始下标,pageSize)

子查询

where (值是固定的,这个值是计算出来的)

本质:在where语句中嵌套一个子查询语句

-- 查询高等数学-1的所有考试结果(学号,科目编号,成绩),降序排列
-- 方式1
select studentno,subjectno,studentresult
from result as r
inner join `subject` as sub
on r.subjectno=sub.subjectno
where subjectname='高等数学-1'
order by studentresult DESC
-- 方式2:使用子查询
select studentno,subjectno,studentresult
from result
where subjectno=(
	select subjectno from `subject` 
	where  subjectname='高等数学-1'
)order by studentresult DESC
-- 查询所有高等数学-1的学生的学号
select subjectno from `subject` where subjectname='高等数学-1'
-- 查询分数不小于80分的学生的学号和姓名
select studentno,studentname
from student 
where studentno=(
select distinct studentno from result where studentresult>=80
)
-- 查询课程为高等数学-2并且分数不小于80分的同学的学号和姓名
-- 联表查询
select s.studentno,studentname
from student as s
inner join result as r
on s.studentno=r.studentno
inner join `subject` as sub
on r.subjectno=sub.subjectno
where subjectname='高等数学-2' and studentresult>=80
-- 子查询
select DISTINCT s.studentno,studentname
from student as s
inner join result as r
on s.studentno=r.studentno
where studentresult>=80 and subjectno=(
	select subjectno from `subject` where subjectname='高等数学-2'
)
-- 子查询:(由里及外)
select studentno,studentname
from student where studentno in(
	select studentno from result where studentresult>=80 and subjectno=(
		select subjectno from `subject` where subjectname='高等数学-2'
	)
)

到此这篇关于DQL数据查询语句使用示例的文章就介绍到这了,更多相关DQL数据查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
mysql如何能有效防止删库跑路
Oct 05 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
mysql数据库如何转移到oracle
Dec 24 #MySQL
mysql序号rownum行号实现方式
Dec 24 #MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 #MySQL
Mysql如何查看是否使用到索引
Dec 24 #MySQL
MySQL新手入门进阶语句汇总
Sep 23 #MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 #MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 #MySQL
You might like
PHP中的数组处理函数实例总结
2016/01/09 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
python 多线程实现检测服务器在线情况
2015/11/25 Python
python中PIL安装简单教程
2016/04/21 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
巴西购物网站:Onofre Agora
2020/06/08 全球购物
小学校长先进事迹材料
2014/05/13 职场文书
城市创卫标语
2014/06/17 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2014年电厂工作总结
2014/12/04 职场文书
迟到检讨书
2015/01/26 职场文书
昆虫记读书笔记
2015/06/26 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书