MySQL学习笔记(5)DQL语言

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;
  • 模糊查询(比较运算符)MySQL学习笔记(5)DQL语言
    举例:
-- 模糊查询 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)
上一篇:mysql存储过程中的异常处理


下一篇:MockWebServer--环境