SQL 语句(二)--------------数据查询(简单查询)

来源:互联网 发布:阿里云汽车荣威rx5 编辑:程序博客网 时间:2024/05/22 12:50
SELECT 学号,姓名
FROM 学生选课.学生;


SELECT 姓名,学号,院系号
FROM 学生选课.学生;
SELECT *
FROM 学生选课.学生;


ALTER TABLE 学生选课.学生 ADD COLUMN 年龄 SMALLINT;


SELECT 姓名,2017-年龄/*SELECT子句的<目标列表达式>不仅可以是表中的属性列也可以是表达式,字符串常量,函数等*/
FROM 学生选课.学生;


SELECT 姓名,'Year of Birth:',2017-年龄,LOWER(院系号)
FROM 学生选课.学生;


/*指定列名*/
SELECT 姓名 NAME,2017-年龄 BIRTH,'Year of Birth:' BIRTHDAY, LOWER(院系号) DEPARTMENT
FROM 学生选课.学生;


SELECT *
FROM 学生选课.选课;


SELECT 课程号
FROM 学生选课.选课;


/*去掉重复行*/
SELECT DISTINCT 课程号
FROM 学生选课.选课;


/*****************************比较大小************************************/
/*查询所有年龄在20岁以下的学生姓名和年龄*/
SELECT 姓名,年龄
FROM 学生选课.学生
WHERE 年龄>20;


/*查询考试成绩70分以下的学生学号*/
SELECT DISTINCT 学号 /*使用distinct,当一个学生有多门课不及格,他的学号也只列一次*/
FROM 学生选课.选课
WHERE 成绩>70;


/*****************************确定范围************************************/
/*查询年龄在20-23岁(包括20,23)之间的学生的姓名、系别和年龄*/
SELECT 姓名,院系号,年龄
FROM 学生选课.学生
WHERE 年龄 BETWEEN 20 AND 23;


/*查询年龄不在20-22岁之间的学生姓名、系别和年龄*/
SELECT 姓名,院系号,年龄
FROM 学生选课.学生
WHERE 年龄 NOT BETWEEN 20 AND 22;


/*****************************确定集合************************************/
/*查询经济学院、法学院、信息学院学生的姓名和年龄*/
SELECT 姓名,年龄
FROM 学生选课.学生
WHERE 院系号 IN('06001','06002','06003');/*谓词in 可以用来查找属性值属于指定集合的元组*/


/*查询既不是经济学院也不是法学院的学生姓名和年龄*/
SELECT 姓名,年龄
FROM 学生选课.学生
WHERE 院系号 NOT IN('06001','06002');


/*****************************字符匹配************************************/
/*查询学号为020003的学生的消息情况*/
SELECT *
FROM 学生选课.学生
WHERE 学号 LIKE '020003';/*等价于 学号='020003';*/


/*查询所有姓宋的学生的姓名和学号、年龄*/
SELECT 姓名,学号,年龄
FROM 学生选课.学生
WHERE 姓名 LIKE '宋%';/*通配符‘%’代表任意长度(可以为0)的字符串。例如a%b标识以a开头,以b结尾的任意长度的字符串*/


/*查询姓‘欧阳’且全名为3个汉字的学生的姓名*/
SELECT 姓名
FROM 学生选课.学生
WHERE 姓名 LIKE '欧阳_';/*数据库字符集未ASCII时一个汉字需要两个'_',当字符集为GBK时只需要一个*/


/*查询名字中第二个为‘阳’字的学生的姓名和学号*/
SELECT 姓名,学号
FROM 学生选课.学生
WHERE 姓名 LIKE '_阳%';


/*查询所有不姓陈的学生姓名*/
SELECT 姓名
FROM 学生选课.学生
WHERE 姓名 NOT LIKE '陈%';


/*查询'DB_Design'的课程号和学分*/
SELECT 课程号,学分
FROM 学生选课.课程
WHERE 名称 LIKE 'DB\_Design' ESCAPE '\';/*ESCAPE'\'表示'\'为换码字符。这样匹配串中紧跟在'\'后面的字符'_'不再具有通配符的含义*/


/*查询以'DB_'开头,且倒数第三个字符为'i'的课程的详细情况*/
SELECT *
FROM 学生选课.课程
WHERE 名称 LIKE 'DB\_%i__' ESCAPE '\';


/*****************************涉及空值的查询************************************/
/*查询没有先修课的课程*/
SELECT *
FROM 学生选课.课程
WHERE 先修课 IS NULL;


/*查询所有有先修课的课程*/
SELECT *
FROM 学生选课.课程
WHERE 先修课 IS NOT NULL;


/*****************************多重条件查询************************************/
/*查询经济学院年龄大于21岁的学生信息*/
SELECT *
FROM 学生选课.学生
WHERE 院系号='06001' and 年龄>'21';


/*查询经济学院、法学院、信息学院学生的姓名和年龄*/
SELECT 姓名,年龄
FROM 学生选课.学生
WHERE 院系号='06001' or 院系号= '06002' or 院系号 ='06003';


SELECT 姓名,年龄
FROM 学生选课.学生,学生选课.院系
WHERE 学生.院系号=院系.院系号 and (名称='经济学院' or 名称='法学院' or 名称='信息学院') 
ORDER BY 年龄 DESC;


/*****************************ORDER BY************************************/
/*用户可以用order by 子句对查询的结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为升序*/


/*查询选修了0003号课程的学生的学号及其成绩,查询结果按分数的降序排列*/
SELECT 学号,成绩
FROM 学生选课.选课
WHERE 课程号='0003'
ORDER BY 成绩 DESC;


/*查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列*/
SELECT *
FROM 学生选课.学生
ORDER BY 院系号 ASC,年龄 DESC;


/*****************************聚集函数************************************/
/*注意:WHERE子句中不能用聚集函数作为条件表达式*/
/*查询学生总人数*/
SELECT COUNT(*)
FROM 学生选课.学生;


/*查询选修了课程的学生人数*/
SELECT COUNT(DISTINCT 学号)
FROM 学生选课.选课;


/*查询0003号课程的学生平均成绩*/
SELECT AVG(成绩)
FROM 学生选课.选课
WHERE 课程号='0003';


/*查询选'0003'号课程的学生的最高分*/
SELECT MAX(成绩)
FROM 学生选课.选课
WHERE 课程号='0003';


/*查询学生020001选修课程的总学分*/
SELECT SUM(学分)
FROM 学生选课.选课,学生选课.课程
WHERE 学号='020001' AND 选课.课程号=课程.课程号;


/*****************************GROUP BY************************************/
/*求各个课程及相应的选课人数*/
SELECT 课程号,COUNT(学号)
FROM 学生选课.选课
GROUP BY 课程号;/*该语句对查询结果按课程号分组,所有具有相同课程号的元组为一组,然后对每一组作用聚集函数COUNT计算,求得该组的学生人数*/


/*查询选修了3门以上课程的学生学号*/
SELECT 学号
FROM 学生选课.选课
GROUP BY 学号
HAVING COUNT(*)>3;
/*WHERE子句作用在基本表或视图,从中选择满足条件的元组。*/
/*HAVING短语作用于group之后的组,从中选择满足条件的组*/

原创粉丝点击