SQL-查询语句练习试题

SQL-查询语句练习试题
SQL-查询语句练习试题

SQL查询语句复习题

SQL查询语句复习题

新建学生-课程数据库的三个表:

学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码;

课程表:Course(Cno,Cname,Cpno,Credeit) Cno为主码;

学生选修表:SC(Sno,Cno,Grade) Sno,Cno,为主码;

Student

学号

Sno姓名

Sname性别

Ssex年龄

Sage所在系

Sdept

95001李勇男20CS

95002刘晨女19IS

95003王敏女18MA

95004张立男19IS

课程号

Sno课程名

Cname先行课

Cpno学分

Credit

1数据库54

2数学2

3信息系统14

4操作系统63

5数据结构74

6数据处理2

7Pascal语言64

Course:

SC:

学号

Sno课程号

Cno成绩

Grade

95001192

95001285

95001388

95002290

95002380

一:查询表中的列和行

1:查询全体学生的学与姓名

sele sno,sname from student

2:查询全体学生的姓名、学号、所在系。

sele sno,sname,sdept from student

3:查询全体学生的详细记录

sele * from student

4:查询全体学生的姓名及出生年份

sele sno,sage from student

5:查询全体学生的姓名,出生年份及所在系,要用小写字母表示系名

6:查询选修了课程的学生学号

sele sno,cno from sc

7:查询选修了课程的学生姓名

sele distinct sname from student,sc where student.sno=sc.sno

二:条件查询:

常用的查询条件

查询条件谓词

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

not+上述比较运算符

确定范围Between and,Not between And,

确定集合IN,not IN

字符匹配Like,Not Like

空值IsNull,ISNOTNULL

多重条件AND,OR

1:查询计算机系全体学生的姓名

sele sname from student where sdept=”CS”

2:查询所有年龄在20岁以下的学生姓名及其年龄

sele sname,sage from student where sage<20

3:查询考试成绩有不及格的学生的学号

sele student.sno from student,sc where student.sno=sc.sno and grade<60 4:查询年龄在20到23间的学生的姓名,系别及年龄

sele sname,sdept,sage from student where sage between 20 and 23

5: 查询年龄不在20到23间的学生的姓名,系别及年龄

sele sname,sdept,sage from student where sage not between 20 and 23 6:查询信息系(IS),数学系(MA)和计算机系(CS)学生的姓名和性别

sele sname,ssex from student where sdept in("IS","MA","CS")

7:查询不是信息系(IS),数学系(MA)和计算机系(CS)学生的姓名和性别

sele sname,ssex from student where sdept not in("IS","MA","CS")

8:查询学号为”95001”的学生详细情况

sele * from student where sno=95001

9:查询所有姓刘的学生的姓名,学号和性别(where name like ‘刘%’)

sele sname,sno,ssex from student where sname like '刘%'

10:查询姓”欧阳”且命名为三个汉字的学生的姓名

sele sname from student where sname like '欧阳_'

11:查询名字中第2个字为”阳”字的学生姓名和学号(where sname like ‘_ _阳%’)

sele sname,sno from student where sname like '_ _阳%'

12:查询所有不姓刘的学生姓名

sele sname from student where sname not like '刘%'

13:查询DB_Design课程的课程号和学分(where cname like ‘Db_Design’Escape’’)

sele cno,gredit from course where cname like ‘Db_Design’Escape’’

14:查询以”DB_”开头,且倒数第3个字符为i的课程的详细情况(where cname like ‘DB_%i__’escape’’)

‘DB_%i__’escape’’) sele cno,gredit from course where cname like ‘Db_%i__’escape’’

15:查询缺少成绩的学生的学号和相应的课程号

sele student.sno,cno from student,sc where grade is null

16:查询所有成绩的学生学号和课程号(where grade is not null)

sele student.sno,cno from student,sc where grade is not null

17:查询计算机系年龄在20岁以下的学生姓名

sele sname from student where sdept=”CS” and sage<20

18:查询选修了3号课程的学生的学号及其成绩,分数降序排列

sele student.sno,grade from student,sc where student.sno=sc.sno and o=3 order by grade desc

19:查询全体学生情况,结果按所在系的号升序排列,同一系中的学生按年龄降序

sele * from student order by sdept,sage desc

三:使用集函数

count,sum,avg,max,min

1:查询学生的总人数

2:查询选修了课程的学生人数(select count(distinct sno))

3:计算1号课程的学生平均成绩

4:查询选修1号课程的学生最高分数

5:求各个课程号及相应的选课人数( selsect cno,count (sno); from sc; group by cno)

6:查询选修了3门以上的课程的学生学号

select sno

from sc

group by sno

having count(*)>3

四:连接查询:

<1>等值与非等值的连接查询

在连接查询中用来连接两个有的条件称为连接条件或连接谓词,,当连接运算符号为”=”时,称为等值连接,使用如,=,<,>,<=,>=,!=连接时称非等值连接

1:查询每个学生及其选修课程的情况

select student.*,sc.*

from student,sc

where student.sno=sc.sno

<2>自身连接

连接操作在同一个表中进行连接查询

2:查询每一门课的间接先修课(即先修课的先修课)

select first .cno,o

from course first ,course second

where o=o

五:复合条件连接

1:查询选修2号课程且成绩在90分以上的所有学生。

Select student,sname

form student, sc

Where student.sno=sc.sno And

o=’2’ and sc.grade>90

六:嵌套查询

1:带有谓词in的子查询

<1>查询与“刘晨”在同一个系学习的学生

select sno,sname,sdept

from student

where sdept in(

select sdept

from student

where sname=”刘晨”)

或:select s1.sname,s1.sdept

from student s1,student s2

where s1.dept=s2.dept and https://www.360docs.net/doc/c19203514.html,=”刘晨”

<2>查询选修了课程名为“信息系统”的学生学号和姓名

select sno,sname

from student

where sno in

( select sno

from sc

where cno in

(select cno

from course

where cname-“信息系统”)

或:select sno,sname

from student,sc,course

where student.sno=sc.sno and

o=o and

ame=’信息系统’)

2:带有Any 或all谓词的子查询

<1>查询其他系中比信息系中某一学生年龄小的学生姓名和年龄select sname, sage

from student

where sage

from student

where sdept=’is’

and sdept<>’is’

或用集函数:select sname, sage

from student

where sage<

(select max(sage)

from student

where sdept=’is’)

and sdept<>’is’

<2> 查询其他系中比信息系所有学生年龄都小的学生姓名及年龄select sname, sage

from student

where sage

(select sage

from student

where sdept=’is’)

and sdept<>’is’

3 带有Exitst谓词的子查询

<1>查询所有选修了1号课程的学生姓名

select sname

from student

where exists

(select *

from sc

where sno=student.sno and cno=’1’)

<2>查询没有选修1号课程的学生姓名

select sname

form student

where not exists

(select *

form sc

where sno=stuedent.sno and cno=’1’)

<2>查询选修所有全部课程的学生姓名

select sname

from student

where not exists

(select *

from course

where not exists

(select *

from sc

where sno=student.sno

and cno=o)

<3>查询到少选修了学生95002选修的全部课程的学生号码select distinct sno

from sc scx

where not exists

( select *

from sc scy

where scy.sno=’95002’ and

not exists

( select *

from sc scz

where scz.sno=scx.sno and

o=o)

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

SQL查询语句练习作业

一、创建名为“student”的表,结构见表1,内容见表2 表1 student表结构 字段名类型宽度 学号字符型10 姓名字符型10 性别字符型 4 出生日期日期型8 专业字符型20 年级数值型10 表2 student表

二、练习SQL查询语句——基础的select 格式: select 字段名 from 表名 1、写出查找student表中所有字段的语句,并在命令窗口测试 2、写出查找student表中学号的语句,并在命令窗口测试 3、写出查找student表中姓名的语句,并在命令窗口测试 4、写出查找student表中性别的语句,并在命令窗口测试 5、写出查找student表中出生日期的语句,并在命令窗口测试 6、写出查找student表中专业的语句,并在命令窗口测试 7、写出查找student表中年级的语句,并在命令窗口测试 8、写出查找student表中学号和姓名的语句,并在命令窗口测试(注意逗号是英文状态) 9、写出查找student表中学号、姓名和性别的语句,并在命令窗口测试 10、写出查找student表中学号、姓名、性别和出生日期的语句,并在命令窗口测试 11、写出查找student表中学号、姓名、性别、出生日期和专业的语句,并在命令窗口测试 12、写出查找student表中学号、姓名、性别、出生日期、专业和年级的语句,并在命令窗口测试

三、练习SQL查询语句——where条件查询 格式: select 字段名 from 表名 where 条件 1、查找student表中学号是101001的学生,写出语句,并在命令窗口测试 2、查找student表中李玲的个人信息,写出语句,并在命令窗口测试 3、查找student表中所有的男学生,写出语句,并在命令窗口测试 4、查找student表中的在1992年3月1日(含)之后出生的学生,写出语句,并在命令窗口测试 5、查找student表中信息管理专业的学生,写出语句,并在命令窗口测试 6、查找student表中2012级的学生,写出语句,并在命令窗口测试 四、练习SQL查询语句——where条件查询AND OR 格式: select 字段名 from 表名 where 条件1 and/or 条件2 1、查找student表中学号为121001和131005的学生信息,写出语句,并在命令窗口测试 2、查找student表中李泽田和王海东的个人信息,写出语句,并在命令窗口测试 3、查找student表中工商管理专业的男生信息,写出语句,并在命令窗口测试 4、查找student表中在1992年和1993年出生的学生,写出语句,并在命令窗口测试 5、查找student表中信息管理专业和工商管理专业的女学生,写出语句,并在命令窗口测试 6、查找student表中2012级和2013级中1993年出生的学生,写出语句,并在命令窗口测试

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

SQL搜索语句

SQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n 是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 代码:SELECT TOP 2 * FROM `testtable` 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

实验四SQL单表查询语句练习

实验四SQL单表查询语句练习 一、实验目的 1.掌握SQL Server数据库的恢复技术 2.熟练掌握SQL单表查询语句 二、实验内容 1.数据库恢复 2.SQL查询语言练习 实验基础知识提要 Microsoft? SQL Server?查询分析器是一种图形工具,您可以使用它创建查询和其它 SQL 脚本,并针对 SQL Server 数据库执行它们。 连接 SQL Server 连接某个 Microsoft?SQL Server?实例以打开 SQL 查询分析器中的一个查询窗口。如果通过 SQL Server 企业管理器中的连接访问 SQL 查询分析器,则自动打开一个查询窗口。

如果未建立连接而访问 SQL 查询分析器,则显示"连接到SQL Server"对话框,使您可以指定数据库服务器。该对话框还可从工具栏和从"文件"菜单上的"连接"命令进行访问。 下表列出"SQL 查询分析器"工具栏中显示的图标。 最基本的查询语句具有以下的形式:

SELECT select_list FROM table_source [ WHERE search_condition ] select_list 描述结果集的列。它是一个逗号分隔的表达式列表。每个表达式同时定义格式(数据类型和大小)和结果集列的数据来源。每个选择列表表达式通常是对从中获取数据的源表或视图的列的引用,但也可能是其它表达式,例如常量或 Transact-SQL 函数。在选择列表中使用 * 表达式指定返回源表中的所有列。 选择列表还可包含控制结果集的最终格式的关键字: DISTINCT DISTINCT 关键字可从结果集中除去重复的行。 TOP n TOP 关键字指定返回结果集的前 n 行。如果指定了 ORDER BY,行将在结果集排序之后选定。除非指定了 PERCENT 关键字,否则 n 即为返回的行数。PERCENT 指定 n 为结果集中返回的行的百分比。

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

sql查询语句练习(解析版)

sql查询语句练习(解析版)BY DD 表情况 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar2(20),Sname varchar2(10),Sage int,Ssex varchar2(2)) ; create table Course(C# varchar2(20),Cname varchar2(10),score varchar2(4)) ; create table SC(S# varchar2(20),C# varchar2(20),score varchar2(4)) ; create table Teacher(T# varchar2(20),Tname varchar2(10)) ; insert into Student(S#,Sname,Sage,Ssex) values('1001','李五','15','男'); insert into Student(S#,Sname,Sage,Ssex) values('1002','张三','16','女'); insert into Student(S#,Sname,Sage,Ssex) values('1003','李四','15','女'); insert into Student(S#,Sname,Sage,Ssex) values('1004','陈二','14','男'); insert into Student(S#,Sname,Sage,Ssex) values('1005','小四','15','男'); 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 解析:(select s#,score from SC where C#='001') a//从SC中查询C#=001的学生学号和分数,并定义为a表。 (select s#,score from SC where C#='002') b //从SC中查询C#=002的学生学号和分数,并定义为b表。 where a.score>b.score and a.s#=b.s# 条件,a表与b表中学号相同且分数比b中的高。 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) rom sc group by S# having avg(score) >60; 解析: group by S# having avg(score) >60 这里是指平均分数大于60分的

数据库sql查询语句练习2_习题_结果(单世民)

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据: Course表: Score表: Student表:

Teacher表: 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL 1.写出上述表的建表语句。 2.给出相应的INSERT语句来完成题中给出数据的插入。 单表查询 3.以class降序输出student的所有记录(student表全部属性) 命令:select*from Student order by class desc;

4.列出教师所在的单位depart(不重复)。 命令:select distinct depart from Teacher; 5.列出student表中所有记录的name、sex和class列 命令:select name,sex,class from Student; 6.输出student中不姓王的同学的姓名。 命令:select name from Student except select name from Student where name like'王%';或

select name from Student where name not like'王%'; 7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80; 8.输出班级为95001或性别为‘女’的同学(student表全部属性) 命令:select*from Student where class=95001 or sex='女';

SQL server 查询语句 练习题

SQL server 查询语句练习题 用SQL语句创建四个表: create database tongji go use tongji go create table student ( Sno varchar(20) not null primary key ,--学号 Sname varchar(20) not null,--学生姓名 Ssex varchar(20) not null, --学生性别 Sbirthday datetime,--学生出生年月 Class varchar(20)--学生所在班级 ) go create table teacher--老师 ( Tno varchar(20) not null primary key ,--教工编号(主码) Tname varchar(20) not null,--教工姓名 Tsex varchar(20) not null, --教工性别 Tbirthday datetime,--教工出生年月 Prof varchar(20),--职称 Depart varchar(20) not null--教工所在部门 ) go create table Course--课程 ( Cno varchar(20) not null primary key ,--课程号 Cname varchar(20) not null,--课程名称 Tno varchar(20) not null references teacher(Tno), --教工编号(外码)) go create table Score--分数 ( Sno varchar(20) not null references student(Sno), --学号(外码)Cno varchar(20) not null references Course(Cno), --课程号(外码)primary key(Sno,Cno), Degree Decimal(4,1),--成绩 ) 表中数据如下: 表(一)Student

数据库SQL查询语句练习题

设教学数据库Education有三个关系: 学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)查询问题: (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno,Sname,Sex FROM S WHERE Sdept ='CS'; (2)检索学习课程号为C2的学生学号与姓名; Sname ,1.SELECT SnoSname ,2.SELECT S.SnoFROM S SC , FROM SWHERE Sno IN WHERE S.Sno=SC.Sno SELECT Sno (;C2'AND https://www.360docs.net/doc/c19203514.html,o=‘ FROM SC )‘C2' WHERE Cno= DS)检索选修课程名为“”的学生学号与姓名(3表建立它们二者的表没有直接联系,必须通过SC表中,但S和C 本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C S SC →联系。 C →基本思路: Cno;表中找出“DS”课程的课程号(1)首先在C ;Cno 集合中的某个元素Cno2)然后在SC表中找出Cno等于第一步给出的(送入结果表列。和SnameSno等于第二步中Sno 集合中某个元素的元组,取出Sno S(3)最后在关系中选出Sname ,SELECT SnoFROM S WHERE Sno IN SELECT Sno ( FROM SC WHERE Cno IN SELECT Cno ( FROM C );DS') WHERE Cname=‘ 的学生学号;C2或C4(4)检索选修课程号为SELECT Sno FROM SC ';'C2 OR Cno=‘C4WHERE Cno=‘

sql查询语句练习

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 1.查询“001”课程比“002”课程成绩高的所有学生的学号; 2.查询平均成绩大于60分的同学的学号和平均成绩; 3.查询所有同学的学号、姓名、选课数、总成绩; 4.查询姓“李”的老师的个数; 5.查询没学过“叶平”老师课的同学的学号、姓名; 6.查询所有课程成绩小于60分的同学的学号、姓名; 7.查询没有学全所有课的同学的学号、姓名; 8.查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;4 9.删除学习“叶平”老师课的SC表记录; 3 10.取各科平均成绩和及格率,按及格率的百分数从高到低顺序2 11.查询不同老师所教不同课程平均分从高到低显示5 12.统计列印各科,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60] 6\ 13.查询每门课程被选修的学生数7 14.查询出只选修了一门课程的全部学生的学号和姓名1 15.查询男生、女生人数 16.查询姓“张”的学生名单 17.查询同名同姓学生名单,并统计同名人数 18.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列 19.查询平均成绩大于85的所有学生的学号、姓名和平均成绩 20.查询课程名称为“数据库”,且分数低于60的学生姓名和分数 21.查询所有学生的选课情况,学号、课程号、姓名、课程名 22.查询任意一门课程成绩在70分以上的姓名、课程名称和分数; 23.查询有成绩不及格的课程,并按课程号从大到小排列 24.查询课程编号为003且课程成绩在80分以上的学生的学号和姓名; 25.查询各个课程及相应的选修人数 26.检索至少选修两门课程的学生学号 27.查询没学过“叶平”老师讲授的任一门课程的学生姓名 28.查询两门以上不及格课程的同学的学号及其平均成绩 29.检索“004”课程分数小于60,按分数降序排列的同学学号 30.删除“002”同学的“001”课程的成绩 经典SQL练习题 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,

数据库SQL语句实验报告

《数据库原理及应用》实验报告 SQL语句部分 总成绩:

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 3.创建课程关系表C : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 create database Studend; create table S ( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage smallint, Sdept char(20), );

3.创建课程关系表C : 课程号课程名先行课学分 Cno Cname Cpno ccredit create table C ( Cno char(4)primary key, Cname CHAR(40), Cpno char(4), Ccredit SMALLINT, ); 4.创建课程关系表SC : 学号课程号成绩 Sno Cno grade create table SC ( Sno char(9), Cno char(4), Grade smallint, ); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 alter table S add Sbirthday datetime; 7、删除表S的“年龄”属性列。 alter table S drop column Sage;

数据库中SQL查询语句习题含的答案

.word 版本可编辑. 查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.360docs.net/doc/c19203514.html,o=‘C2’ AND https://www.360docs.net/doc/c19203514.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.360docs.net/doc/c19203514.html,o=https://www.360docs.net/doc/c19203514.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.360docs.net/doc/c19203514.html,o=https://www.360docs.net/doc/c19203514.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。 17:查询选修了课程的学生人数。 18:计算选修了C1课程的学生平均成绩。

sql查询语句大全

SQL查询语句大全 《SQL语句的基本语法》 一.Select语句的完整语法为: Select[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} FROM tableexpression[,…][IN externaldatabase] [Where…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 说明: 用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。 1 FROM子句 FROM子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或 由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。 例:下列SQL语句返回所有有定单的客户: Select orderID,Customer.customerID FROM orders Customers Where orders.CustomerID=Customers.CustomeersID 2 ALL、DISTINCT、DISTINCTROW、TOP谓词 (1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 例:Select ALL FirstName,LastName FROM Employees (2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。 (3) DISTINCTROW 如果有重复的记录,只返回一个 (4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比) 例:返回5%定货额最大的定单 Select TOP 5 PERCENT* FROM [ order Details] orDER BY UnitPrice*Quantity*(1-Discount) DESC 3 用 AS 子句为字段取别名 如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。 例:返回FirstName字段取别名为NickName Select FirstName AS NickName ,LastName ,City

相关文档
最新文档