您的位置:首页 > 数据库

数据库学习笔记

2015-06-26 09:15 405 查看
1. 给属性列取名:

SELECT institute AS 所属学院, classNo AS 班级编号, className AS 班级名称,

FROM Class

2. 将大写字母改为小写字母:

lower()

3. 获取当前系统的日期、年份、月份:

getdate() 、year() 、month()

eg: 查询年龄大于19的学生

SELCT studentNo, studentName, birthday

FROM Student

WHERE year(getdate()) - year(birthday) > = 19

4. 查询属性值在某一个范围:

BETWEEN AND

WHERE score BETWEEN 80 AND 90

或 WHERE score > = 80 AND score < = 90

5.查询属性值不在某一个范围:

WHERE score NOT BETWEEN 80 AND 90

或 WHERE score > = 80 OR score > = 90

6. 集合查询:

IN 和 NOT IN

eg: 查询选修了指定科目的全部学生

SELECT studentNo, courseNo, score

FROM Score

WHERE courseNo IN ('001', '003', '005')

7. 空值查询:

IS null 和 IS NOT null

8. 字符匹配查询:

LIKE 和 NOT LIKE

notes:① 不含有通配符时 LIKE 与 “ = ” 查询结果一样。

② 通配符 % 表示任意长度字符串; _ 表示任意一个字符。

eg: 查询出含有“会计”的班级信息

SELECT *

FROM Class

WHERE className LIKE ' %会计% '

9. 字符匹配查询(需转码):

ESCAPE

eg: 查询出班级表中班级名称中含有“08_”符号的班级名称

WHERE className LIKE ' %08\_%' ESCAPE ' \ '

10. 排序运算(升序和降序):

ASC 和 DESC

eg: 按籍贯的降序排序输出

SELECT studentName, native, classNo

FROM Student

WHERE native != ' 南昌 ' AND native != '上海 '

ORDER BY native DESC

11. 查询表:

eg: 查询1991年出生的女同学基本信息

SELECT studentNo, studentName, birthday

FROM ( SELECT * FROM Student WHERE sec = ' 女 ' ) AS a

WHERE year (birthday) = 1991

12. 等值链接查询:

eg: SELECT studentNo, studentName, native, b.classNo, className

FROM Student AS a, Class AS b

WHERE a.classNo=b.classNo AND institute = ' 会计学院 '

eg: SELECT a.studentNo, studentName

FROM Student a, Course b, Score c

WHERE b.courseNo = c.courseNo AND c.studentNo = a.studentNo

AND b.courseName = ' 计算机原理 '

13. 外连接:

LEFT OUTER JOIN、RIGHT OUTER JOIN 、FULL OUTER JOIN

eg: SELECT className, institute, studentNo, studentName

FROM Class a LEFT OUTER JOIN Student b ON a.classNo = b.classNo

ORDER BY className

14. 聚合函数

count()、sum()、avg()、max()、min()

eg: 查询学生总人数

SELECT count (*) 学生人数

FROM Student

eg: 查询所有选课学生的人数

SELECT count ( DISTINCT studentNo ) 学生人数

FROM Score

notes: WHERE 不能直接使用聚合函数

15. 分组聚合
GROUP BY 和 HAVING

eg: SELECT studentNo, count(*) 门数, avg(score)平均分, max(score)最高分

FROM Score

GROUP BY studentNo

HAVING avg(score) >= 80

eg: 查询成绩最高分的学生

SELECT studentNo, courseNo, score

FROM Score

WHERE score = ( SELECT max (score) FROM Score )

16. 嵌套子查询(支持多重嵌套)

IN

eg: 查询选修过课程的学生姓名

SELECT studentName

FROM Student

WHERE Student.studentNo IN ( SELECT Score.studentNo FROM Score)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: