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)