MySQL学习笔记(5)DQL语言

本文深入探讨了SQL,包括查询指定字段、使用别名、函数应用、去重、计算表达式、版本查询等基本操作。同时,介绍了WHERE条件语句进行数据过滤,模糊查询如LIKE操作符的使用,以及连接查询中的INNER JOIN、LEFT JOIN等。此外,还讨论了分页排序、子查询和嵌套查询在实际问题中的应用,为数据库操作提供了全面的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  • SELECT
    举例:
-- 查询全部 SELECT 字段 FROM 表
SELECT * FROM `student`

-- 查询指定字段
SELECT `studentno`,`studentname` FROM `student`

-- 别名,字段或者表都可以
SELECT `studentno` AS 学号,`studentname` AS 学生姓名 FROM `student`

-- 函数Concat(a,b)
SELECT CONCAT('姓名:',	`studentname`) AS 新名字 FROM student

-- 查询
SELECT `studentno` FROM `student`

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

-- SELECT还可以计算表达式
SELECT 100*3-1 AS `计算结果`

-- 查询版本号
SELECT VERSION()
  • where条件语句(用于检索数据表中符合条件的记录)
    举例:
-- 查询考试成绩在95-100之间的
SELECT Studentno,StudentResult
FROM result
WHERE StudentResult>=95 AND StudentResult<=100;
  • 模糊查询(比较运算符)来源见公众号水印
    举例:
-- 模糊查询 between and \ like \ in \ null

-- 查询姓刘的同学的学号及姓名
-- like结合使用的通配符 : % (代表0到任意个字符) _ (一个字符)
SELECT studentno,studentname FROM student
WHERE studentname LIKE '刘%';
  • 连接查询
操作符名称描述
INNER JOIN查询两个表中结果集中的交集
LEFT JOIN返回左表中所有的行,即使右表中没有匹配 (优先考虑、筛选左表中的信息)
RIGHT JOIN返回右表中所有的行,即使左表中没有匹配
-- 查一下缺考的同学
SELECT s.`studentno`,`studentname`,`subjectno`,`studentresult`
FROM `student` AS s
LEFT JOIN `result` AS r
ON s.`studentno`=r.`studentno`
WHERE `studentresult` IS NULL

-- 查询s.studentno,studentname,subjectname,StudentResult

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` 
  • 分页和排序
-- 查询 JAVA第一学年 课程成绩前10名并且分数大于80的学生信息(学号,姓名,课程名,分数)
SELECT s.studentno,studentname,subjectname,StudentResult
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
INNER JOIN `subject` sub
ON r.subjectno = sub.subjectno
WHERE subjectname='JAVA第一学年'
ORDER BY StudentResult DESC
LIMIT 0,10

limit:(PageNo - 1)*PageSize , PageSize
其中,PageNo为页码,PageSize为单页面显示条数。

  • 子查询和嵌套查询
    理论上,子查询可以出现在查询语句的任意位置,但是在实际开发中,子查询经常出现在WHERE和FROM子句中
-- *表示查询表中所有的列 --
-- 子查询经常出现在WHERE和FROM子句中 --
-- 查询薪资水平为高级的所有员工的编号、姓名、性别、年龄和工资--
SELECT *FROM t_employee
WHERE salary >=(SELECT salary FROM t_slevel WHERE levl = 3)
AND salary < (SELECT salary FROM t_slevel WHERE levl = 4)
-- 查询不存在年龄为33岁的员工的部门--
SELECT * FROM t_dept WHERE deptno !=(SELECT deptno FROM t_employee WHERE age = 33)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值