3.4数据查询-3.4.1单表查询【SQl】

SQL2008R2

3.4.1   单表查询

1-选择表中的若干列


(1)查询指定列


【例】查询全体学生的学号和姓名

SELECT Sno,Sname FROM STUDENT;


(2)查询全部列

【例】查询全体学生的详细记录

SELECT * FROM STUDENT;

(3)查询经过计算的值

【例】查询全体学生的姓名及其出生年份

SELECT Sname,2017-Sage 'DATE OF BIRTH'FROM STUDENT;

3.4数据查询-3.4.1单表查询【SQl】_第1张图片

【例】查询全体学生的姓名,出生年份和所在院系,要求用小写字母表示系名

SELECT Sname,'DATE OF BIRTH' ,LOWER(Sdept) FROM STUDENT;

3.4数据查询-3.4.1单表查询【SQl】_第2张图片

2 选择表中的若干元组

(1)消除取值重复的行

【例】SELECT DISTINCTSno FROM SC;

(2)查询满足条件的元组

表3.6 常用的查询条件

比较  > ,<,>=,<=,<>,!>,!<

确定范围 BETWEEN AND, NOT BETWEEN AND

确定集合 IN,NOT IN

字符匹配 LIKE ,NOT LIKE

空值 IS NULL,IS NOT NULL

多重条件 AND ,OR ,NOT

(A)比较大小

【例】SLECT Sname FROM WHERE Sdept=‘CS’;

           SLECT Sname FROM WHERE Sage<20;

           SLECT Sname FROM WHERE Grade<60;


(B)确定范围

SELECT Sname,Sdept FROM STUDENT WHERE Sage BETWEEN 20 AND 25;

(C)确定集合

SELECT Sname,Sex IN('CS','MA','IS');

(D)字符匹配

% 代表任意长度包括0个长度,

_代表单个字符

EXCAPE'\' 代表\后面的_或者% 是查询字符,不是匹配字符


【例】


查询学号是20121512系列的学生信息

SELECT * FROM STUDENT WHERE Sno LIKE '20121512_';

查询所有刘姓的学生信息

SELECT * FROM STDENT WHERE Sname LIKE '刘%';


查询DB_Design 课程的课程号和学分

SELECT Cno,Grade FROM COURE WHERE Cname LIKE 'DB\_Design' ESCAPE '\';

查询DB_开头,且倒数第三个字符为i的课程的详细情况

SELECT * FROAM SC WHERE Cname LIKE "DB\_%i_ _" EXCAPE '\'

(E)空值(NULL)的查询 

SELECE Sno,Cno FROM SC WHERE GRADE IS NOT NULL;

(F)多重条件查询 

SELECT Sname FROAM STUDENT WHERE Sdept ='CS'AND Sage>20;

3 ORDER BY 语句

SELECT Sno,GradeFROM SC DRDER BY Grade ASC(DESC)  // 升序和降序

4 聚集查询

COUNT (*)                                                                               统计元组个数

COUNT ([DISTINCT|ALL]<列名>)                                            统计一列中的值的个数

SUM([DISTINCT|ALL]<列名>)                                                计算一列中值的总和(此列必须为数值项)

AVG([DISTINCT|ALL]<列名>)                                              计算一列中值的平均数(此列必须为数值项)

MAX([DISTINCT|ALL]<列名>)                                             找出一列中最大的数值

MIN([DISTINCT|ALL]<列名>)                                          找出一列中最大的数值

【例】

查询学生总人数

SELECT COUNT(*) FROM STUDENT;

计算选修了一号课程的学生平均成绩

SELECT Sno,AVG(Grade) FROM SC  WHERE Cno='1';

查询学生201215012选修课程的总学分数

SELECT SUM(Grade) FROM SC WHERE Sno='201215012'

5 GROUP BY 子句 HAVING 语句

【例子】

求各个课程号及相应的选课人数

SELECT Cno,COUNT(Sno)

FROM SC

GROUP BY Cno;

求选修了三门以上课程的学生学号

SELECT Sno

FROM SC

GROUP BY Sno

HAVING COUNT(Sno)>3

查询平均成绩大于等于90,学生学号和平均成绩

SELECT Sno,AVG(Grade)

FROM SC

GROUP BY Sno

HAVING AVE(Grade>90)





你可能感兴趣的:(SQL学习)