SQL作业参考答案

SQL作业参考答案
SQL作业参考答案

1、设有以下三个关系:

学生关系:student(sno,sname,dep,age,sex)

选课关系:sc(sno,cno,grade)

课程关系:course(cno,cname,score)

1)建数据库,在数据库中建立以上三个关系。

要求:学生关系中:sno为主键,sname不允许为空,age默认值18,sex取值范围’男’、’女’、默认为’男’。

课程关系中:cno为主键,cname不为空,在cname上建立唯一索引。

选课关系中:sno、cno组合为主键,grade允许为空,sno为外键(参照学生关系的sno,级联删除、级联修改),cno为外键(参照课程关系的cno,限制删除、限制修改)。

2)试用SQL的查询语句表示下列查询。

(1)检索学分score等于4的所有课程的课程号和课程名。

select cno,cname

from course

where score=4;

(2)检索年龄在20和23岁之间的学生的学号与姓名。

select sno,sname

from student

where age between 20 and 23 ;

(3)检索Wang同学不学的课程的课程号。

select cno

from course

where cno not in

(select cno

from sc,student

where sc.sno =student.sno

and student.sname='Wang');

(4)检索所有姓李的学生情况。

select *

from student

where sname like '李%';

(5)检索所有学生情况及其选课情况。(可以用f1键查看左外联接)

select student.*,sc.*

from student left outer join sc

on student.sno = sc.sno;

(6)检索所有选修了课程的学生情况和选课情况。

select student.*,sc.*

from student , sc

where student.sno = sc.sno;

(7)检索至少选修两门课程的学生学号和姓名。只能用嵌套查询!

select sno,sname

from student

where sno in

(select sno

from sc

group by sno

having count(*)>=2);

注意:如果用如下的联接查询实现,会出现错误提示

列'student.sname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在GROUP BY 子句中。

select student.sno,sname

from student,sc

where student.sno= sc.sno

group by student.sno

having count(*)>=2;

(8)将所有成绩为空值的学生成绩置为0。

update sc

set grade=0

where grade is null;

注意:判断是否为null 时不能用=null

(9)删除课程名为“DB”的课程和所有成绩的元组。

delete

from sc

where cno =

(select cno

from course

where cname='DB');

delete

from course

where cname='DB';

(10)平均成绩大于60分的课程的课程号和平均成绩存入关系G1(C#,A VG_G)中。

表G1不存在:

select cno as c#,avg(grade) as A VG_G

into G1

from sc

group by cno

having avg(grade)>60;

表G1存在:

insert into G1

select cno,avg(grade)

from sc

group by cno

having avg(grade)>60;

(11)把课程名为“OS”的课程的学生成绩提高5%。

update sc

set grade=grade*(1+0.05)

where cno=

(select cno

from course

where cname='OS');

(12)统计有学生选修的课程门数。

select count(distinct cno) as 已选修课程数

from sc;

(13)查询选修了课程名为C2课程的学生的平均年龄。

select avg(sage) as 平均年龄

from student ,sc,course

where student.sno=sc.sno

and https://www.360docs.net/doc/bf11261002.html,o=https://www.360docs.net/doc/bf11261002.html,o

and cname='C2';

或:

select avg(sage) as 平均年龄

from student

where sno in (select sno

from sc,course

where https://www.360docs.net/doc/bf11261002.html,o=https://www.360docs.net/doc/bf11261002.html,o

and cname='C2');

或:

select avg(sage) as 平均年龄

from student

where sno in (select sno

from sc

where cno in (select cno from course where cname='C2') );

14)查询选修人数超过15的课程的课程名称(如果为课程号)和学生人数。查询结果按人数降序排列,若人数相同,按课程名称(如果为课程号)升序排列。

如果是课程号就是下面的答案

select cno ,count(distinct sno) as 选修人数

from sc

group by cno

having count(distinct sno)>=15

order by 2 desc,1 asc;

但是如果是课程名,就会出错,需要修改:

select https://www.360docs.net/doc/bf11261002.html,ame ,count(sno) as 选修人数

from course,sc

where https://www.360docs.net/doc/bf11261002.html,o=https://www.360docs.net/doc/bf11261002.html,o

group by https://www.360docs.net/doc/bf11261002.html,ame

having count(sno)>=15

order by 2 desc,1 asc;

原题解2:

select cno, count(sno) as num

into G2

from sc

group by cno

having count(sno)>15

select cname,num

from course,G2

where https://www.360docs.net/doc/bf11261002.html,o=https://www.360docs.net/doc/bf11261002.html,o

order by 2 desc,1 asc

原题解3:

select cname,num

from course,(select cno, num=count(sno) from sc group by cno having count(sno)>15) a where https://www.360docs.net/doc/bf11261002.html,o=https://www.360docs.net/doc/bf11261002.html,o

order by 2 desc,1 asc

15)检索成绩为空值的学生姓名和课程名。

select sname, cname

from student ,sc,course

where student.sno=sc.sno and https://www.360docs.net/doc/bf11261002.html,o=https://www.360docs.net/doc/bf11261002.html,o and grade is null;

16)关系student中插入一个学生元组(02201101,“李平”,“CS”),AGE、SEX分别以默认值插入。

insert

into student

values('02201101','李平','CS',default,default);

17)为“CS”系创建一个视图:CS_S(sno,sname,cname,grade)。

create view cs_s

as

select student.sno,sname,cname,grade

from student,sc,course

where student.sno=sc.sno

and sc.sno=https://www.360docs.net/doc/bf11261002.html,o

and student.dep=’CS’

18)查询课程号为“1001”课程考试成绩排名为5-7名的学生的学号和成绩。

select top 3 sno, grade

from sc

where (cno = '1001') and (sno not in

(select top 4 sno

from sc

where cno = '1001'

order by grade desc))

order by grade desc

注:在SQL Server 2000中,支持UNION运算,但不支持EXCEPT、INTERSECT运算;

在SQL Server 2005中,开始支持EXCEPT、INTERSECT运算;

另一个比较符合思考习惯的答案:

select sno,grade

from sc

where cno = '1001' and sno not in

(select top 4 sno

from sc

where cno = '1001'

order by grade desc)and sno in

(select top 7 sno

from sc

where cno = '1001'

order by grade desc);

请思考使用EXCEPT如何实现?

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 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

大工20春《SQL数据库系统及应用》在线作业2答案

(单选题)1: 在SQL查询语句中,ORDER BY子句的功能是()。 A: 对查询结果进行排序 B: 分组统计查询结果 C: 删除数据表 D: 创建数据库 正确答案: A (单选题)2: 下列用于定义字段的SQL语句中,正确的是()。 A: 学号 char(10) B: 学号 bitmoney C: 学号 moneys D: 学号 float_real 正确答案: A (单选题)3: 在学生成绩表中的列chengji用来存放某学生学习某课程的考试成绩(0至100分,没有小数),用下面的()类型最节省空间。 A: intf B: float C: tinyint D: char(3,0) 正确答案: C (单选题)4: 学生关系模式ST(sno,sname,sex,age),ST的属性分别表示学生的学号、姓名、性别、年龄。要在表ST中删除属性“年龄”,可选用的SQL语句是()。 A: create age from ST B: alters table ST drop age C: update ST age D: alter table ST drop column age 正确答案: D (单选题)5: 设关系数据库中一个表ST的结构为ST(sname,cname,grade),其中sname为学生姓名,cname为课程名,二者均为字符型,grade为成绩,数值型,取值范围0-100。若要把张三的化学成绩80分插入到ST中,则可用()。 A: add into ST values('张三','化学','80') B: inserts into ST values('张三','化学','80') C: insert ST values('化学','张三', '80) D: insert into ST values('张三','化学',80) 正确答案: D (单选题)6: SQL Server中字符数据类型包括()。 A: int、money、char B: char、varchar、text C: datetime、binary、int D: char、varchar、int

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时应

大工15春《SQL数据库系统及应用》在线作业2满分答案

大工15春《SQL数据库系统及应用》在线作业2 试卷得分:100 一,判断题 1. 从student表中查询给定学号范围(sno为1,2,4,5)的学生姓名sname,该语句为select sname from student where sno in (1,2,4,5)。 A. 错误 B. 正确 ? 正确答案:B 2. 视图结构类似基表,包含带有名称的行和列数据,但视图中不存储任何数据,行和列的数据均来于查询所基于的基表中。 A. 错误 B. 正确 ? 正确答案:B 3. SQL Server中常用的数据类型中datetime和char是数字数据类型,非日期信息。 A. 错误 B. 正确 ? 正确答案:A 4. 在SQL Server 2008中,如果某些列需要存储非英语字符(如中文字符),建议最好使用NCHAR、NV ARCHAR数据类型。 A. 错误 B. 正确 ? 正确答案:B 5. SQL中,日期时间数据类型用于存储日期和时间信息。 A. 错误 B. 正确 ? 正确答案:B 6. 查询功能是SQL的核心,通过SQL的查询可以从表或视图中迅速、方便地检索数据。SQL的查询最基本的方式是create语句。 A. 错误 B. 正确 ? 正确答案:A

7. 语句SELECT * FROM student,depart WHERE student.dNo=depart.dNo与SELECT * FROM student JOIN depart ON student.dNo=depart.dNo查询结果一致。 A. 错误 B. 正确 ? 正确答案:B 8. SQL中,日期和时间的数据类型包含datetime,smalldatetime等。 A. 错误 B. 正确 ? 正确答案:B 9. SQL中,字符的数据类型包含nchars,int,float,char等。 A. 错误 B. 正确 ? 正确答案:A 10. 在用户或角色权限的操作中,deny代表拒绝用户访问。 A. 错误 B. 正确 ? 正确答案:B 二,单选题 1. 在SQL语言中,用于排序的命令是()。 A. SORT BY AND OF B. ORDER BY C. SELECT D. WHERE from ? 正确答案:B 2. 如果要查询学校员工的平均收入,则使用以下()聚合函数。 A. sum() B. ABS() C. count() D. avg() ? 正确答案:D 3. 下列用于定义字段的T-SQL语句中,错误的是()。

SQL上机作业(2)

SQL上机作业(2) 一.针对SQL上机作业(1)第一题定义的三个表(book,card,borrow),用SQL语句实现如下查询:(注:藏书量=库存量+借出数) 1.求藏书种数、总册数、最高价、最低价。 select count(category)as category,sum(total)as total, max(price) as maxpric,min(price)as minpric from book group by book.category; select count(*),sum(total),max(price),min(price) from book; 2.列出藏书在十本以上的书(书名、作者、出版社、年份)。 select title,author,press,year from book where total>10; 3.哪些出版社的总藏书超过100种。 select press ,count(distinct category) from book group by press having count(distinct category)>100; 4.目前已借出多少册书? select sum(total)-sum(stock) from book; 5.年份最久远的书。 select title from book group by title having min(year)<=all(select min(year) from book group by title); 6.“数据库系统原理教程,王珊编,清华大学出版社,1998年出版”还有几本? select title ,stock from book where title='数据库系统原理教程'and press='清华大学出版社' and author='王珊' and year='1998';

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 别名表名别名

大工19秋《SQL数据库系统及应用》在线作业2【答案】

大工19秋《SQL数据库系统及应用》在线作业2 试卷总分:100 得分:100 一、单选题 (共 10 道试题,共 50 分) 1.如果想查询订单表中订购金额大于等于800的所有信息,下面()语句能够完成此任务。 A.select * FROM 订单表 WHERE 订购金额>=800 B.select * FROM 订单表 WHERE 订购金额>800 C.select * FROM 订单表 WHERE 订购金额<=800 D.select * FROM 订单表 WHERE 订购金额<800 标准参考解析:A 2.如果想查询订单表中前5条信息,下面()语句能够完成此任务。 A.select up_down 5 * FROM 订单表 B.select up 5 * FROM 订单表 C.select top_down 5 * FROM 订单表 D.select top 5 * FROM 订单表 标准参考解析:D 3.Select emp_id,emp_name,sex,title,wage from Yuangong order by emp_name 句子得到的结果集是按( )排序。 A.wage B.sex C.emp_name D.emp_id 标准参考解析:C 4.如果要查询学校员工的平均收入,则使用以下()聚合函数。 A.sum() B.count() C.avg() D.ABS() 标准参考解析:C 5.如果要查询学校员工的总收入,可以使用以下()聚合函数。 A.sum() B.count() C.MAX() D.ABS() 标准参考解析:A 6.Select count(*) from student 语句得到的结果是()。 A.某个记录的详细信息 B.所有记录的条数 C.得到16条记录

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

sql作业2答案

设有关系: SB(SNO,SNAME,CITY) 其中SNO为供应商代号,SNAME为供应商名字,CITY为供应商所在城市,主关键字为SNO。 PB(PNO,PNAME,COLOR,WEIGHT) 其中PNO为零件代号,PNAME为零件名字,COLOR为零件颜色,WEIGHT为零件重量,主关键字为PNO。 JB(JNO,JNAME,CITY) 其中JNO为工程编号,JNAME为工程名字,CITY为工程所在城市,主关键字为JNO。SPJ(SNO,PNO,JNO,QTY) 其中SNO是为指定工程提供零件的供应商代号,PNO为所提供的零件代号,JNO为工程编号,QTY表示提供的零件数量,主关键字为(SNO,PNO,JNO),SNO、PNO、JNO均为外码。 作业: 1.查询所有工程的全部信息。 Select * from jb 2.查询所在城市为上海的所有工程的编号和名字。 Select jno,jname from jb where city=’上海’ 3.查询为工程号为J1的工程提供零件的供应商代号。 Select sno from spj where jno=’j1’ 4.查询为工程号为J1的工程提供零件号为P1的零件的供应商代号 Select sno from spj where jno=’j1’ and pno=’p1’ 5.查询为工程J1或J2提供零件的供应商代号 Select sno from spj where jno=’j1’ or jno=’j2’ 6.查询为工程提供的零件数在400以上的供应商代号和零件代号 Select sno , pno from spj where qty>400 7.查询已开始供应零件的供应商代号 Select sno from spj 8.查询零件颜色为红色的零件代号和零件名字 Select pno,pname from pb where color=’红’

50个经典SQL查询语句

--一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ------------------------------------表结构-------------------------------------- --学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex) --课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId) --成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score) --教师表tblTeacher(教师编号TeaId、姓名TeaName) --------------------------------------------------------------------------------- --1、查询“001”课程比“002”课程成绩高的所有学生的学号; Select StuId From tblStudent s1 Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')> (Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002') --2、查询平均成绩大于60分的同学的学号和平均成绩; Select StuId,Avg(Score) as AvgScore From tblScore Group By StuId Having Avg(Score)>60 --3、查询所有同学的学号、姓名、选课数、总成绩; Select StuId,StuName, SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId), SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId) From tblStudent s1 --4、查询姓“李”的老师的个数; Select Count(*) From tblTeacher Where TeaName like '李%' --5、查询没学过“叶平”老师课的同学的学号、姓名; Select StuId,StuName From tblStudent Where StuId Not In ( Select StuID From tblScore sc Inner Join tblCourse cu ON sc.CourseId=cu.CourseId Inner Join tblTeacher tc ON cu.TeaId=tc.TeaId Where tc.TeaName='叶平' ) --6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; Select StuId,StuName From tblStudent st Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And

川大《数据库技术2263》19春在线作业21答案

《数据库技术2263》18春在线作业2-0001 试卷总分:100 得分:0 一、单选题(共20 道试题,共60 分) 1.对多表进行操作时,选择工作区所使用的命令为()。 https://www.360docs.net/doc/bf11261002.html,E B.OPEN C.SELECT D.CREATE 正确答案:C 2.数据库系统的核心是: A.计算机硬件 B.数据库 C.数据库管理系统 D.用户 正确答案:C 3.报表文件的扩展名是()。 A.RPT; B.FRX; C.REP; D.RPX 正确答案:B 4.在浏览窗口打开的情况下,若要向当前表中连续添加多条记录应使用()。 A.“显示”菜单中的“追加方式” B.“表”菜单中的“追加新记录” C.“表”菜单中的“追加记录” D.快捷键Ctrl+Y 正确答案:A 5.对表文件建立索引,可使用命令()。 A.sort B.update C.index D.join 正确答案:C 6.在FoxPro中表达式20=10/2+4的结果是:

A..T. B.0 C.3 D..F. 正确答案:D 7.一个数据库名为student ,要想打开该数据库,应使用命令()。 A.OPENstudent B.OPENDATAstudent https://www.360docs.net/doc/bf11261002.html,EDATAstudent https://www.360docs.net/doc/bf11261002.html,Estudent 正确答案:B 8.下面SQL语句错误的是()。 A.SELECT书名,出版单位FROMWHERE出版单位IN(“高等教育出版社”,“人民出版社”); B.INSERTINTO图书(总编号,书名)VALUES(“456245”,“数据库技术”); C.UPDATE图书WITH分类号=“TP31/456”; D.SELECT“选课人数:”,COUNT(*)FROM选课 正确答案:C 9.SQL SELECT语句的功能是: A.定义 B.查询 C.修改 D.控制 正确答案:B 10.有SQL语句:SELECT AVG(工资)FROM 职工的执行结果是: A.工资的最大值 B.工资的最小值 C.工资的平均值 D.工资的合计 正确答案:C 11.专门的关系运算中,选择运算是()。 A.在基本表中选择满足条件的记录和属性组成一个新的关系 B.在基本表中选择字段组成一个新的关系 C.在基本表中选择满足条件的记录组成一个新的关系 D.上述说法都是正确的

sql查询语句学习测试答案

第一部分SQL查询语句的学习 单表查询 1、--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值 use eee SELECT订购日期,订单ID,客户ID,雇员ID FROM订单 WHERE订购日期BETWEEN'1996-7-1 00:00:00'AND'1996-7-15 23:59:59' 2、--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。条件是“地区等于华北”并且“联系人头衔等于销售代表”。 use eee SELECT供应商ID,公司名称,地区,城市,电话 FROM供应商 WHERE地区='华北'AND联系人职务='销售代表'

3、--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津 use eee SELECT供应商ID,公司名称,地区,城市,电话 FROM供应商 WHERE地区IN('华东','华南')OR城市='天津'

4、--查询“Northwind”示例数据库中位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值 use eee SELECT供应商ID,公司名称,地区,城市,电话 FROM供应商 WHERE地区IN('华东','华南')

多表查询 5、--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单ID”的降序排列 use eee SELECT订购日期,订单ID,公司名称,姓氏,名字 FROM订单,雇员,客户 WHERE订购日期BETWEEN'1996-7-1 00:00:00'AND'1996-7-15 23:59:59' AND订单.雇员ID =雇员.雇员ID AND订单.客户ID =客户.客户ID ORDER BY姓氏,名字ASC,订单ID DESC

20秋大工《SQL数据库系统及应用》在线作业2答案

1.在SQL的select语句中,如果要过滤结果中的重复行,可以在字段列表前面加上()。 A.group B.order C.top D.distinct 答案:D 2.在select语句中如果要对得到的结果中某个字段按降序处理,则使用()参数。 A.asc B.desc C.between D.and 答案:B 3.查询学校员工工资信息时,结果按工资降序排列,正确的是()。 A.ORDER BY 工资 B.ORDER BY 工资 desc C.ORDER BY 工资 asc D.ORDER BY 工资 and 答案:B 4.当使用SQL语句进行分组检索时,为了按照一定的条件对分组后的数据进行筛选,应当()。 A.在join后面使用between to子句 B.在group by后面使用having子句 C.在where后面使用order by子句 D.在join后面使用order by子句 答案:B 5.在SQL查询语句中,HAVING子句的作用是()。 A.指出排序的范围 B.指出查询结果的最大值

C.指出分组查询的条件 D.指出创建数据表的字段 答案:C 6.以下关于HAVING子句描述错误的是()。 A.HAVING子句允许与GROUP BY 子句同时使用 B.使用HAVING子句的同时不能使用WHERE子句 C.使用HAVING子句的同时可以使用WHERE子句 D.使用HAVING子句的作用是限定分组的条件 答案:B 7.要查询book表中所有书名中以“计算机网络”开头的书籍情况,可用()语句。 A.SELECT * FROM book WHERE book_name LIKE‘计算机网络*’ B.SELECT * FROM book WHERE book_name LIKE‘计算机网络%’ C.S ELECT * FROM book WHERE book_name!=‘计算机网络*’ D.SELECT * FROM book WHERE book_name!=‘计算机网络%’ 答案:B 8.以下不属于SQL Server 2008系统全局变量的是()。 A.&@@Error B.@@Connections C.@@fetch_status D.@@Error 答案:A 9.SQL支持的流程控制语句是()。 A.Begin...End B.Ift...Then...ELSE C.Do Cases D.Does While 答案:A 10.SQL Server 2008中引用全局变量时,应以标记符()开头。

最常用的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时应 使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名as 别名 表名别名 例如上面语句可用表的别名格式表示为: SELECT username,b.cityid FROM usertable a,citytable b WHERE a.cityid=b.cityid SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: SELECT a.au_fname+a.au_lname FROM authors a,titleauthor ta

SQL查询语句例子

数据表的查询(select) select 字段列表[as 别名], * from 数据表名 [where 条件语句] [group by 分组字段] [order by 排序字段列表desc] [LIMIT startrow,rownumber] 1、Select 字段列表From 数据表 例:①、select id,gsmc,add,tel from haf (* 表示数据表中所有字段) ②、select 单价,数量,单价*数量as 合计金额from haf (As 设置字段的别名) 2、Select …from …Where 筛选条件式 筛选条件式:①、字符串数据:select * from 成绩单Where 姓名='李明' ②、万用字符:select * from 成绩单Where 姓名like '李%' select * from 成绩单Where 姓名like '%李%' select * from 成绩单Where 姓名like '%李_' ③、特殊的条件式: ⑴= / > / < / <> / >= / <= ⑵AND(逻辑与) OR(逻辑或) NOT(逻辑非) ⑶Where 字段名称in(值一,值二) ⑷Where 字段名称Is Null / Where 字段名称Is Not Null 3、Select …from …group by 字段 SQL函数: SELECT sex,count(id) as women from `user` group by 'sex'; 函数名描述函数名描述 AVG平均值Count计数 MAX最大值MIN最小值 Sum求和

作业2答案

作业2 安全管理 1.通常情况下,数据库中的权限划分为哪几类? 答:一类是对数据库管理系统进行维护的权限,另一类是对数据库中的对象和数据进行操作的权限。这类权限又可以分为两种,一种是对数据库对象的权限,包括创建、删除和修改数据库对象;另一种是对数据库数据的操作权限,包括对表、视图数据的增、删、改、查权。 2.数据库中的用户按其操作权限可分为哪几类,每一类的权限是什么? 答:数据库中的用户按其操作权限可分为三类,分别是:数据库系统管理员、数据库对象拥有者和普通用户。数据库系统管理员在数据库中具有全部的权限;数据库对象拥有者对其所拥有的对象具有一切权限;普通用户具有对数据库数据的增、删、改、查权。 3.SQL Server 2005的安全验证过程是什么? 一个用户如果要访问SQL Server数据库中的数据,必须要经过三个认证过程。 第一个认证过程是身份验证,使用登录帐号来标识用户,身份验证只验证用户连接到SQL Server数据库服务器的资格。 第二个认证过程是当用户访问数据库时,必须具有对具体数据库的访问权,即验证用户是否是数据库的合法用户。 第三个认证过程是当用户操作数据库中的数据或对象时,必须具有所要进行的操作的操作权,即验证用户是否具有操作许可。 4.SQL Server 2005的登录账户的来源有哪两种? 答:SQL Server的登录帐号的来源有两种类型: ●Windows授权用户:来自于Windows的用户或组。 ●SQL授权用户:来自于非Windows的用户。 5.SQL Server 2005的权限有几种类型? 在SQL Server 2000 中,权限分为对象权限、语句权限和隐含的权限三种。 对象权限是指用户对数据库中的表、视图等对象所包含的数据的操作权限, 语句权限是指是否允许执行与创建数据库对象有关的操作的权限, 隐含权限是指由SQL Server预定义的服务器角色、数据库角色、数据库拥有者和数据库象拥有者所具有的权限。 、

SQL常用查询语句

SQL基本常用查询语句 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from student; --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student; --top 取前N条记录 select top 3 * from student; --alias column name 列重命名 select id as 编号, name '名称', sex 性别from student; --alias table name 表重命名 select id, name, s.id, https://www.360docs.net/doc/bf11261002.html, from student s; --column 列运算 select (age + id) col from student; select https://www.360docs.net/doc/bf11261002.html, + '-' + https://www.360docs.net/doc/bf11261002.html, from classes c, student s where s.cid = c.id; --where 条件 select * from student where id = 2;

select * from student where id > 7; select * from student where id < 3; select * from student where id <> 3; select * from student where id >= 3; select * from student where id <= 5; select * from student where id !> 3; select * from student where id !< 5; --and 并且 select * from student where id > 2 and sex = 1; --or 或者 select * from student where id = 2 or sex = 1; --between ... and ... 相当于并且 select * from student where id between 2 and 5; select * from student where id not between 2 and 5; --like 模糊查询 select * from student where name like '%a%'; select * from student where name like '%[a][o]%'; select * from student where name not like '%a%'; select * from student where name like 'ja%'; select * from student where name not like '%[j,n]%'; select * from student where name like '%[j,n,a]%'; select * from student where name like '%[^ja,as,on]%';

免费在线作业答案大工15秋《SQL数据库系统及应用》在线作业2 100分答案

大工15秋《SQL数据库系统及应用》在线作业2 100分答案 一、判断题(共 10 道试题,共 50 分。) 1. 从student表中查询选修了2号(cno)课程的学生学号sno,该语句为select sno from electCourse where cno=2。 A. 错误 B. 正确 ————选择:A 2. Select 姓名,性别 from student group by 性别,这个语句是正确的。 A. 错误 数据库系统概论答案 B. 正确 ————选择:A 3. 变量均为int型,begin set @t=@x set @x=@y set @y=@t end语句块完成两个变量的数值交换。 A. 错误 B. 正确 ————选择:B 4. 把student表按照“性别”这个单列进行分组的语句为select 女 from student group by 性别。 A. 错误 B. 正确 ————选择:A 5. 查询每个学生的姓名,并且按照所在系的人数升序显示,其中应该采用decs来显示数据的升序排列。 A. 错误 B. 正确 ————选择:A 6. 外连接分为左外连接、右外连接和全外连接。 A. 错误 B. 正确 ————选择:B 7. T-SQL语言中流程控制语句有while,return,goto等语句。 A. 错误 B. 正确 ————选择:B 8. Select * from ss left join gs on ss.名称=gs.名称,这条语句没有语法错误。 A. 错误 B. 正确 ————选择:B 9. Select 性别,年龄from student group by 性别,年龄。在这个表中,先按照年龄分组,然后按照性别分组。 A. 错误 B. 正确

相关文档
最新文档