一、无条件查询

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询

例3.11 查询全体学生的详细记录。这是一个无条件的选择查询,其命令为:

select*
from Students;
等价于
select Sno,Sname,Ssex,Sage,Sdept
from Students;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_02

 

例3.12  查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这是一个无条件的投影查询,其命令为:

 

select Sno,Sname,Sdept
from Students;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_03

例3.13  查询全体学生的姓名(Sname)、出生年份及学号(Sno)。由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。其命令为:

select Sno,Sname,2020-Sage
from Students;

显示--- 列名
select Sno,Sname,2020-Sage as '2020-Sage' 
from Students;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_04

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_05

例3.14 查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。其命令为:

select Sname,'Year of Birth:',2020-sage,LOWER(Sdept)
from Students;

书本-P91有详解

增加 列表表

select Sname,'Year of Birth:'as 'Year of Birth:',
2020-sage as '2020-sage',LOWER(Sdept) as 'LOWER(Sdept)'
from Students;

通过指定别名来改变查询结果列标题

select Sname NAME,'Year of Birth:'BIRTH,2020-Sage BIRTHDAY,
LOWER(Sdept)DEPARTMENT
FROM Students;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询_06

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_07

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_08

例3.15  查询选修了课程的学生学号。其命令为:

SELECT DISTINCT Sno
FROM Reports;
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。  Cno 是课程号

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_09

二、条件查询

例3.16  查询数学系全体学生的学号(Sno)和姓名 (Sname)。其命令为:

 

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_10

select Sno,Sname
FROM Students
WHERE Sdept IN('数学');

或者

select Sno,Sname
FROM Students
WHERE Sdept='数学';

例3.17 查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:

SELECT Sname, Sage
FROM Students
WHERE Sage=18 AND Sage<=22;


题目有毒吧????欺负我语文不及格,就差了两个字,意义差距那么大?
ε=(´ο`*)))

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询_11

例3.18 查询年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:

 

select Sname,Sage
FROM Students
WHERE Sage BETWEEN 18 AND 22;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_12

例3.19 查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。其命令为:

SELECT Sname, Sage
FROM Students
WHERE Sage NOT BETWEEN 18 AND 22;

因为不存在 所以是空表

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询_13

例3.20 查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。其命令为:

 

SELECT Sno, Sname, Ssex
FROM Students
WHERE Sdept IN ('自动化', '数学', '计算机');

等价于

SELECT Sno,Sname, Ssex
FROM Students
WHERE Sdept='自动化' OR Sdept='数学' OR Sdept='计算
机';

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_14

例3.21  查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。其命令为:

SELECT Sname, Ssex
FROM Students
WHERE Sdept NOT IN ('信息', '数学', '计算机');

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_15

例3.22  查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其命令为:

 

SELECT Sname, Sno, Ssex
FROM Students
WHERE Sname LIKE '刘%';

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_16

例3.23  查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。其命令为:

 

SELECT Sname, Sdept
FROM Students
WHERE Sname LIKE '刘____';

 

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_17

例3.24  查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。

SELECT Sname, Sage
FROM Students
WHERE Sname NOT LIKE '刘%';

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询_18

例3.25  查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。其命令为:

SELECT Cno, Credits
FROM Courses
WHERE Cname LIKE 'DB\_设计' ESCAPE '\';

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_19

例3.26  查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。其命令为:

 

SELECT *
FROM Courses
WHERE Cname LIKE 'DB\_%设__'ESCAPE'\';

 

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_20

 

例3.27  假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为:

SELECT Sno, Cno
FROM Reports
WHERE Grade IS NULL;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_21

例3.28  查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为:

 

SELECT Sno, Cno
FROM Reports
WHERE Grade IS NOT NULL;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_22

三、查询结果排序

例3.29  查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。其命令为:

 

SELECT Sno, Grade
FROM Reports
WHERE Cno='C03'
ORDER BY Grade DESC;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询_23

 

例3.30  查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_24

SELECT *
FROM Students
ORDER BY Sdept, Sage DESC;

 

 

四、聚集函数的使用

例3.31  查询学生总人数。其命令为:

SELECT COUNT(*)
FROM Students;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_条件查询_25

例3.32  查询选修了课程的学生人数。其命令为:

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_26

SELECT COUNT(DISTINCT Sno)
FROM Reports;

例3.33  计算选修C01号课程的学生平均成绩。其命令为:

SELECT AVG(Grade)
FROM Reports
WHERE Cno='C01';

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_27

 

例3.34  查询选修C01号课程的学生最高分数。其命令为:

SELECT MAX(Grade)
FROM Reports
WHERE Cno='C01';

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_升序_28

五、查询结果分组

例3.35  求各个课程号(Cno)及相应的选课人数。其命令为:

 

SELECT Cno , COUNT(Sno) CntSno
FROM Reports
GROUP BY Cno;

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_Sage_29

例3.36  查询选修了3门或3门以上课程的学生学号(Sno)。其命令为:

SELECT Sno
FROM Reports
GROUP BY Sno
HAVING COUNT(Cno)>=3

mysql1查询所有学生信息和课程信息 查询所有学生的信息sql_mysql1查询所有学生信息和课程信息_30