面试很有用哦 SQL常用语句总结( 二 )


面试很有用哦 SQL常用语句总结

文章插图
 
18. ORDER BY
ORDER BY可以对结果进行排序,在没有明确指定ASC(升序)或DESC(降序)的情况下,默认按升序排列 。
SELECT <列名1>, <列名2>, …FROM <表名>ORDER BY <列名1>, <列名2>, …, ASC|DESC;例子:
SELECT * FROM course ORDER BY credits;SELECT * FROM course ORDER BY credits DESC;
面试很有用哦 SQL常用语句总结

文章插图
 
19. BETWEEN
BETWEEN语句用于指定区间 。
SELECT <列名1>, <列名2>, … FROM <表名> WHERE <列名x> BETWEEN <值1> AND <值2>;其中“值”可能是数字,文本,乃至日期等 。
例如,列出薪资在50000和100000之间的教员:
SELECT * FROM instructorWHERE salary BETWEEN 50000 AND 100000;
面试很有用哦 SQL常用语句总结

文章插图
 
20. LIKE
LIKE用于匹配文本中的特定模式 。
SELECT <列名1>, <列名2>, … FROM <表名> WHERE <列名x> LIKE <模式>;模式中可以使用以下两个通配符:
  • % (零个、一个或多个字符)
  • _ (单个字符)
例子:列出课程名中包含“to”的课程,以及课程ID以“CS-”开头的课程 。
SELECT * FROM course WHERE title LIKE '%to%';SELECT * FROM course WHERE course_id LIKE 'CS-___';
面试很有用哦 SQL常用语句总结

文章插图
 
21. IN
IN语句表示值属于某个集合 。
SELECT <列名1>, <列名2>, … FROM <表名> WHERE <列名n> IN (<值1>, <值2>, …);例子:列出计算机科学、物理、电子工程部门的学生 。
SELECT * FROM studentWHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');
面试很有用哦 SQL常用语句总结

文章插图
 
22. JOIN
JOIN用来组合两张以上表中的值 。下图展示了JOIN的三种类型:
面试很有用哦 SQL常用语句总结

文章插图
 
图片来源:zeroturnaround.com
SELECT <列名1>, <列名2>, … FROM <表名1> JOIN <表名2> ON <表名1.列名x> = <表名2.列名x>让我们来看三个例子,分别对应三种JOIN的类型 。
第一个例子,列出课程时包含开设课程的部门详情:
SELECT * FROM courseJOIN departmentON course.dept_name=department.dept_name;
面试很有用哦 SQL常用语句总结

文章插图
 
第二个例子,列出所有具有前置课程的课程的详情:
SELECT prereq.course_id, title, dept_name, credits, prereq_idFROM prereqLEFT OUTER JOIN courseON prereq.course_id=course.course_id;
面试很有用哦 SQL常用语句总结

文章插图
 
最后一个例子,列出所有课程的详情,不管是否具有前置课程:
SELECT course.course_id, title, dept_name, credits, prereq_idFROM prereqRIGHT OUTER JOIN courseON prereq.course_id=course.course_id;
面试很有用哦 SQL常用语句总结

文章插图
 
23. 视图
视图(view)是虚拟的SQL表 。它包含行和列,和一般的SQL表格很类似 。视图总是显示数据库中的最新数据 。
CREATE VIEW
创建视图:
CREATE VIEW <视图名> AS SELECT <列名1>, <列名2>, … FROM <表名> WHERE <条件>;DROP VIEW
删除视图:
DROP VIEW <视图名>;
例如,创建3学分的课程视图:
CREATE VIEW my_view AS SELECT * FROM course WHERE credits=3;
面试很有用哦 SQL常用语句总结

文章插图
 
24. 聚合函数
我们之前已经提到聚合函数,这里列出最常用的一些聚合函数:
  • COUNT(列名) 返回行数
  • SUM(列名) 返回指定列的值之和
  • AVG(列名) 返回指定列的平均值
  • MIN(列名) 返回指定列的最小值
  • MAX(列名) 返回指定列的最大值
25. 嵌套子查询
在SQL请求中,可以嵌套SELECT-FROM-WHERE表达式,称为嵌套子查询(nested subqueries) 。
例如,查找2009年秋、2010年春都开的课程:
SELECT DISTINCT course_idFROM sectionWHERE semester = ‘Fall’ AND year= 2009 AND course_id IN ( SELECT course_idFROM sectionWHERE semester = ‘Spring’ AND year= 2010 );


推荐阅读