第四章——DQL查询数据(最重点)

4. DQL查询数据(最重点)

4.1 DQL

select语法

  • 数据库查询语言
  • 所有的查询都用它
  • 数据库最核心的语言
  • 使用频率最高

4.2 指定查询字段

语法:select 字段 ...from 表

  • 如果列名不是那么见名知意,所以会给他起别名
--查询全部学生 select 字段 from 表
select* from student --查询全部学生
select* from result -- 查询所有成绩

--查询指定字段
select `studentNo`,`studentName` from student

--使用别用查询,给结果换一个名字,表也可以使用别名
select `studentNo` as 学号,`studentName` as 学生姓名 from student as s

--拼接函数 Concat(a,b)
select cincat(`姓名:`,studentName) as 新名字 from student

去重 distinct 

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

--查询那些同学参加了考试
select * from result --查询全部的考试成绩
select diastinct `studentNo` from result --将结果去重

数据库的列

SELECT VERSION ()--查询系统版本(函数)
SELECT100*3-1 As 计算结果--用来计算(表达式)
SELECT auto increment_ increment -- 查询自增的步长(变量)

--学员考试成绩+1分查看
SELECT studentNo ' , 'studentResult`+1 AS '提分后’FROM resu1t

4.3 where 条件子句

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

逻辑运算符

运算符语法描述
and &&a and b        a&&b逻辑与
or ||a or b        a||b逻辑或
not !not a        !a逻辑非

--查询考试成绩在95~100分之间
SELECT studentNo, `StudentResult` FROM result
WHERE StudentResult>=95 AND StudentResult<=100

-- and& &
SELECT studentNo, `StudentResult` FROM result
WHERE StudentResult>=95 && StudentResult<=100


--模糊查询(区间)
SELECT studentNo, `StudentResult` FROM result
WHERE StudentResult BETWEEN 95 AND 100

-―除了1000号学生之外的同学的成绩
SELECT studentNo, `StudentResult` FROM result
WHERE studentNo != 1000

-- !=not
SELECT studentNo, `studentResult`FROM result
WHERE NOT studentNo = 1000

模糊查询:本质是比较运算符

运算符语法描述
is nulla is null如果操作符为null,结果为真
is not nulla is not null如果操作符不为null,结果为真
between anda between b and c若a在b和c之间,则结果为真
likea like bSQL匹配,如果a匹配b,则结果为真
in

a in (a1,a2,a3....)

假设a在a1,或者a2.....其中的某一个值中,结果为真

--查询姓文的同学
-- like结合%(代表0到任意个字符)_(一个字符)
SELECT `StudentNo`, 'studentName` FROM `student`
WHERE StudentName LIKE'刘%'

--查询姓刘的同学,名字后面只有一个字的
SELECT `StudentNo`, `StudentName` FROM `student`
WHEREstudentName LIKE '刘_'

--查询姓文的同学,名字后面只有两个字的
SELECT `StudentNo`, `StudentName` FROM `student`
WHERE StudentName LIKE '刘__'

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

--===== in(具体的一个或者多个值)=====
--查询1001,1002,1003号学员
SELECT `StudentNo`, 'StudentName` FROM `student`
WHERE StudentNo IN( 1001,1002,1003);

--查询在北京的学生
SELECT `StudentNo`, `StudentName` FROM `student`
WHERE `Address` IN('安徽','河南洛阳');

-- ==== null not null====
--查询地址为空的学生 nu17 ''
SELECT `studentNo` , `studentName` FROM `student`
WHERE address='' OR address IS NULL

--查询有出生日期的同学不为空
SELECT `studentNo` , `studentName` FROM `student`
WHERE `BornDate` IS NOT NULL

--查询没有有出生日期的同学为空
SELECT `studentNo` , `studentName` FROM `student`
WHERE `BornDate` IS NULL

4.4 联表查询

join 

============联表查询join ==============
--查询参加了考试的同学(学号,姓名,科目编号,分数)
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

 三种连接的对比:

 

  •  -- join (连接的表) on (判断的条件)  连接查询
  • -- where 等值查询

自连接

 自己的表和自己的表连接,核心:一张表拆为两张一样的表即可

 4.5 分页和排序

排序:升序 ASC         降序 DESC

 为什么要分页?

  • 缓解数据库压力
  • 给用户好的体验

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

练习题:

 4.6 子查询

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

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

4.7 分组和过滤

4.8 select小结 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值