数据库中的 DQL查询数据

DQL

(Data QueryLanguage )数据查询语言

  • 所有的查询操作都用 selec
  • 数据库中最核心的语言,最重要的语句
  • 使用频率最高的语句

指定查询字段

-- 查询全部的学生   select 字段 from 表 
select * from student

-- 查询指定字段  
select `studentid`,`studentname` from student

-- 别名  给结果起一个名字 AS  也可以给表起别名
select `studentid` as 学号,`studentname` as 学生姓名 from student as s

-- 函数 Concat(a,b)
select Concat('姓名:',studentname) as 新名字 from student

列名不是那么的见名知义,就可以起别名 AS

去重 distinct

-- 发现重复数据,去重
SELECT DISTINCT `studentno` FROM student

数据库的列,表达式

-- 用来计算
SELECT 30*2+1 AS 计算结果

-- 查询系统版本
SELECT VERSION()

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

select 表达式 from 表

where条件子句

作用:检索数据中符合条件的值

逻辑运算符

运算符语法描述
and &&a and b、 a && b逻辑与,两个都为真,结果为真
or ||a or b、 a||b逻辑或,其中一个为真,结果为真
not !not a、 !a逻辑非,真为假,假为真
-- 查询成绩在80~90之间的  AND &&
SELECT studentid, `studentresult` FROM result
WHERE studentresult >=80 AND studentresult <=90

-- 模糊查询 (区间) BETWEEN a AND b
SELECT studentid, `studentresult` FROM result
WHERE studentresult BETWEEN 80 AND 90

模糊查询:比较运算符

运算符语法描述
IS NULLa is null如果操作符为null,结果为真
IS NOT NULLa is not null如果操作符不为null,结果为真
BETWEENa between b and c若a在b和c之间,结果为真
Likea like bSQL匹配,如果a匹配b,结果为真
Ina in(a1,a2,a3…)假设a在a1,a2…其中某一个值中,结果为真
-- 查询姓张的同学
-- like结合  %(代表0到任意个字符),_(一个字符)
SELECT studentid, `studentname` FROM student
WHERE studentname LIKE '张%'

-- 查询姓张的同学,名字为两个字的
SELECT studentid, `studentname` FROM student
WHERE studentname LIKE '张_'

-- 查询名字中有嘉字的同学
SELECT studentid, `studentname` FROM student
WHERE studentname LIKE '%嘉%'

-- 查询地址为空的学生 NULL ''
SELECT studentid, `studentname` FROM student
WHERE address='' OR address IS NULL

-- 查询在北京、安徽的学生
SELECT studentid, `studentname` FROM student
WHERE `address` IN ('北京','安徽')

联表查询
在这里插入图片描述

mysql七种join理论

-- 内连接
select * from A inner join B where A.key=B.key;

-- 左连接
select * from A left join B on A.key=B.key where B.key is null;

-- 右连接
select * from A right join B on A.key=B.key where A.key is null;

-- 左外连接
select * from A left join B on Akey=B.key;

-- 右外连接
select * from A right join B on A.key=B.key

-- 全外连接
select * from A left join B where A.key=B.key union select * from A right join B where A.key=B.key;

-- 两表独有的数据集
select * from A left join B on A.key=B.key where B.key is null 

union 

select * from A right join B on A.key=B.key where A.key is null;
子查询
-- 子查询()
SELECT StudentNo, r.SubjectName,SubjectResult
FROM result r
-- 等价于WHERE subjectNo=xxxx(数据库-1编号)
WHERE subjectNo=(
-- 查询结果为数据库-1对应的编号
	SELECT SubjectNo FROM `subject` 
	WHERE subjectName ='数据库结构-1';
)
ORDER BY SubjectResult DESC;
-- 查询数据库-1 编号
SELECT SubjectNo FROM `subject` WHERE subjectName ='数据库结构-1';

分页和排序

排序(ORDER BY)

  • 升序 :ASC
  • 降序 :DESC
  • ORDER BY: 通过那个字段排序,怎么排
-- 查询的结果根据 成绩升序 排序
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM student s
INNER JOIN `result` r
ON s.StudentNo = r.StudentNo
INNER JOIN `subject` sub
ON r.`SubjectNo` = sub.`SubjectNo`
WHERE subjectName = '数据库结构-1'
ORDER BY StudentResult ASC

分页 (LIMIT)

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

-- 分页,每页只显示五条数据  
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM student s
INNER JOIN `result` r
ON s.StudentNo = r.StudentNo
INNER JOIN `subject` sub
ON r.`SubjectNo` = sub.`SubjectNo`
WHERE subjectName = '数据库结构-1'
ORDER BY StudentResult ASC
LIMIT 5,5

-- 第一页  limit 0,5      (1-1)*5
-- 第二页  limit 5,5       (2-1)*5
-- 第三页  limit 10,5      (3-1)*5
-- 第N页   limit 0,5       (n-1)* pageSize,pageSize
-- 【pageSize:页面大小】
-- 【(n-1)* pageSize:起始值】
-- 【n :当前页 】
-- 【数据总数/页面大小 = 总页数】

这里是果力成,欢迎你的到来阅读,关注公众号 IT果力成一起学习!

                                                                             ©果力成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果力成°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值