基本上全是重点……………..
例:有三张表

(1)查询所有 & 查询部分列
查询即选择,使用SELECT关键字
1 2 3 4 5 6 7 8 9 10
|
SELECT * FROM Student;
SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student;
SELECT Sno,Sname FROM Student;
|
(2)给查询结果起别名
使用AS关键字即可
1 2 3 4
|
SELECT Sno AS "学号",Sname AS "姓名" FROM Student AS "学生表";
|
(3)结果去重
加上DISTINCT关键字就可以自动去重。
1 2
| SELECT DISTINCT Cname FROM Course;
|
(4)查询结果加条件
查询条件 |
谓词 |
比较 |
=,>,<,!=,<=,<>,!>,<!,NOT+比较运算符 |
确定范围 |
BETWEEN AND,NOT BETWEEN AND |
确定集合 |
IN,NOT IN |
字符匹配 |
LIKE,NOT LIKE |
空值 |
IS NULL,IS NOT NULL |
多重条件(逻辑运算) |
AND,OR,NOT |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
SELECT * FROM Student WHERE Sage >= 19;
SELECT * FROM Student WHERE Sage BETWEEN 18 AND 20;
SELECT 1 IN (1,2);
SELECT 3 IN (1,2);
SELECT * FROM Student WHERE Sname LIKE "王%";
SELECT * FROM Course WHERE Cpno IS NULL;
SELECT * FROM Student WHERE Ssex='女' AND Sdept='CS';
|
(5)聚集函数的使用
函数名 |
解释 |
CENTER(*) |
统计元组个数 |
COUNT([DISTINCT | ALL] <列名>) |
统计一列中值的个数 |
AVG([DISTINCT | ALL] <列名>) |
计算一列值的总和(此列必须是整数型) |
SUM([DISTINCT | ALL] <列名>) |
计算一列值的总和(此列必须是整数型) |
MAX([DISTINCT | ALL] <列名>) |
求一列值中的最大值 |
MIN([DISTINCT | ALL] <列名>) |
求一列值中的最小值 |
1 2 3 4
|
SELECT COUNT(*) FROM Student;
|
(6)分组查询
使用GROUP BY参数进行分组查询,如果要对分组进行查询则需使用HAVING关键字。
1 2 3 4 5 6 7
| SELECT Sno,Ssex,Sname,Sdept FROM Student GROUP BY Sdept;
SELECT Sno,Ssex,Sname,Sdept FROM Student GROUP BY Sdept HAVING Sdept='CS';
|
(7)连接
包含等值连接和非等值连接,以where为关键字
1 2 3 4
|
SELECT * FROM Student,SC where Student.Sno = SC.Sno;
|
自身连接
1 2 3
|
SELECT * FROM Student AS Stu1,Student AS Stu2 WHERE Stu1 = Stu2;
|
外连接
1 2 3 4 5 6 7 8 9 10 11
|
SELECT * FROM Student LEFT OUTER JOIN SC WHERE Student.Sno = SC.Sno;
SELECT * FROM Student RIGHT OUTER JOIN SC WHERE Student.Sno = SC.Sno;
SELECT * FROM Student INNER JOIN SC WHERE Student.Sno = SC.Sno;
|
多表查询
1 2 3
|
SELECT * FROM Student,SC,Course WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno;
|
嵌套查询