数据库学习笔记
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)
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)
相关文章推荐
- Ubuntu下mysql如何建立数据库
- plsql 在安装完整客户端后 不能连接上 oracle
- 恢复被误删除的数据表--oracle
- MySQL中比like语句更高效的写法locate position instr find_in_set
- .NET 查看 EF 查询生成的SQL 语句
- redis cluster 的手工配置
- Mysql 索引
- 连接Oracle的几种方式
- SQL Server 备份简述
- SQL Server 备份简述
- redis info参数详解
- 减小Sybase ASA数据库的数据和事务日志文件大小及分离的方法
- PB及ASA数据库程序的发布
- C#操作SQL Server数据库
- ORACLE中用ROWNUM分页并排序的SQL语句
- MySql_x64免安装版在win10下的配置(二)
- oracle的存储过程的作用
- Flask-SQLALchemy查询
- mybatis下oracle查询语句where xxx in(aa,bb)的使用方式
- mysql---mysql -e详解