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


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

    4.1 DQL

    select语法

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

    4.2 指定查询字段

    语法:select 字段 ...from 表

    • 如果列名不是那么见名知意,所以会给他起别名
    1. --查询全部学生 select 字段 from 表
    2. select* from student --查询全部学生
    3. select* from result -- 查询所有成绩
    4. --查询指定字段
    5. select `studentNo`,`studentName` from student
    6. --使用别用查询,给结果换一个名字,表也可以使用别名
    7. select `studentNo` as 学号,`studentName` as 学生姓名 from student as s
    8. --拼接函数 Concat(a,b)
    9. select cincat(`姓名:`,studentName) as 新名字 from student

    去重 distinct 

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

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

    数据库的列

    1. SELECT VERSION ()--查询系统版本(函数)
    2. SELECT100*3-1 As 计算结果--用来计算(表达式)
    3. SELECT auto increment_ increment -- 查询自增的步长(变量)
    4. --学员考试成绩+1分查看
    5. 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逻辑非

    1. --查询考试成绩在95~100分之间
    2. SELECT studentNo, `StudentResult` FROM result
    3. WHERE StudentResult>=95 AND StudentResult<=100
    4. -- and& &
    5. SELECT studentNo, `StudentResult` FROM result
    6. WHERE StudentResult>=95 && StudentResult<=100
    7. --模糊查询(区间)
    8. SELECT studentNo, `StudentResult` FROM result
    9. WHERE StudentResult BETWEEN 95 AND 100
    10. -―除了1000号学生之外的同学的成绩
    11. SELECT studentNo, `StudentResult` FROM result
    12. WHERE studentNo != 1000
    13. -- !=not
    14. SELECT studentNo, `studentResult`FROM result
    15. 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.....其中的某一个值中,结果为真

    1. --查询姓文的同学
    2. -- like结合%(代表0到任意个字符)_(一个字符)
    3. SELECT `StudentNo`, 'studentName` FROM `student`
    4. WHERE StudentName LIKE'%'
    5. --查询姓刘的同学,名字后面只有一个字的
    6. SELECT `StudentNo`, `StudentName` FROM `student`
    7. WHEREstudentName LIKE '刘_'
    8. --查询姓文的同学,名字后面只有两个字的
    9. SELECT `StudentNo`, `StudentName` FROM `student`
    10. WHERE StudentName LIKE '刘__'
    11. --查询名字中间有嘉字的同学%嘉%
    12. SELECT `StudentNo`, `StudentName` FROM `student`
    13. WHERE StudentName LIKE '%'
    14. --===== in(具体的一个或者多个值)=====
    15. --查询1001,1002,1003号学员
    16. SELECT `StudentNo`, 'StudentName` FROM `student`
    17. WHERE StudentNo IN( 1001,1002,1003);
    18. --查询在北京的学生
    19. SELECT `StudentNo`, `StudentName` FROM `student`
    20. WHERE `Address` IN('安徽''河南洛阳');
    21. -- ==== null not null====
    22. --查询地址为空的学生 nu17 ''
    23. SELECT `studentNo` , `studentName` FROM `student`
    24. WHERE address='' OR address IS NULL
    25. --查询有出生日期的同学不为空
    26. SELECT `studentNo` , `studentName` FROM `student`
    27. WHERE `BornDate` IS NOT NULL
    28. --查询没有有出生日期的同学为空
    29. SELECT `studentNo` , `studentName` FROM `student`
    30. WHERE `BornDate` IS NULL

    4.4 联表查询

    join 

    1. ============联表查询join ==============
    2. --查询参加了考试的同学(学号,姓名,科目编号,分数)
    3. SELECT * FROM student
    4. SELECT * FROM result
    5. /*思路
    6. 1.分析需求,分析查询的字段来自哪些表,(连接查询)2.确定使用哪种连接查询?7种
    7. 确定交叉点(这两个表中哪个数据是相同的)
    8. 判断的条件:学生表的中 studentNo =成绩表studentNo*/
    9. SELECT s.studentNO, studentName, SubjectNo,StudentResult
    10. FROM student AS s
    11. INNER JOIN result As r
    12. WHERE s.studentNo = r.studentNo

     三种连接的对比:

     

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

    自连接

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

     4.5 分页和排序

    排序:升序 ASC         降序 DESC

     为什么要分页?

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

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

    练习题:

     4.6 子查询

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

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

    4.7 分组和过滤

    4.8 select小结 

     

  • 相关阅读:
    算法通关村第十六关青铜挑战——原来滑动窗口如此简单!
    被锁总时间
    【算法刷题】链表篇-删除链表中的重复节点
    C++输入输出
    tiup cluster upgrade
    数据挖掘一些概念
    GPT润色指令
    Java 对象排序(Object Ordering)
    贪心算法学习——最长单调递增子序列
    NSS [NCTF 2018]小绿草之最强大脑
  • 原文地址:https://blog.csdn.net/weixin_44564247/article/details/126579312