查询列
SELECT [ALL | DISTINCT ] * | 列名1[,......列名n] FROM 表名;
查询所有选课学生的学号,结果去除重复值
select distinct sno from sc;
选择行
查询满足条件的数据集
SELECT 字段列表 FROM 表名 WHERE 查询条件
sql
查询不属于数学系或外国语系的学生全部信息
select * from s where dept <> '数学' and dept <> '外国语';
带IN关键字的查询
用来限制查询数据的范围属于指定集合的数据集,格式为: SELECT 字段列表 FROM 表名 WHERE 表达式 IN (值1,值2...值N);
带NOT IN关键字的查询
SELECT 字段列表 FROM 表名 WHERE 表达式 NOT IN (值1,值2...值N);
sql
查询选修了课程'c02'、'c03'或'c04'任意一门课的学生学号
select distinct sno from sc where cno in('c02', 'c03','c04');
带BETWEEN AND关键字的查询
SELECT 字段列表 FROM 表名 WHERE 字段名 BETWEEN N1 AND N2; 其中N1是范围的开始值(下限),N2是结束值(上限),包含上下限。
sql
########## 查询查询成绩在80~90分的学生选课记录 ##########
select sno,cno,score from sc where score between 80 and 90;
带NOT BETWEEN AND关键字的查询
SELECT 字段列表 FROM 表名 WHERE 字段名 NOT BETWEEN N1 AND N2; 不包含上下限。
带LIKE关键字的模糊查询
1.通配符'%'可以匹配任意长度的字符,长度可以为0;
2.通配符'_'只能模糊匹配1个字符。
语法格式如下: SELECT 字段名 FROM 表名 WHERE 字段名 [NOT] LIKE '匹配串' [ESCAPE '转义字符'];
查询空值
SELECT 字段名 FROM 表名 WHERE 字段名 IS [NOT] NULL;
sql
########## 查询考试成绩为非空的学生学号和课程号 ##########
select sno,cno from sc where score is not null;
分组查询
SELECT 字段列表 FROM 表名 GROUP BY 字段名1,字段名2,......[HAVING 条件表达式];
对查询结果进行排序
SELECT 列名 FROM 表名 ORDER BY {列名 | 表达式 | 正整数} [ASC | DESC] [,...n]
sql
########## 查询所有学生学号、姓名、所在院系和年龄(别名:age),查询结果按系名升序,同系学生按年龄降序排列 ##########
select sno,sname,dept,age from s order by dept asc,age desc;
使用LIMIT限制查询结果的数量
SELECT 字段名 FROM 表名 LIMIT [OFFSET,] 记录数;
sql
########## 查询选修了'c01'课程第2名到第4名的学生学生学号、课程号和成绩 ##########
SELECT sno, cno, score
FROM sc
WHERE cno = 'c01'
ORDER BY score DESC
LIMIT 1,3 ;
LIMIT 1,3:
这一行用于限制查询结果的数量。LIMIT子句的第一个数字(1)表示从排序后的结果中跳过前1行,第二个数字(3)表示返回接下来的3行。因此,这个LIMIT子句的意思是返回排序后从第二条记录开始的3条记录。