sql 课堂作业
sql练习题
以下是SQL练习题:题目1:假设有两个表格:学生表(Student)和课程表(Course)。
Student表格包含学生的ID(StudentID)和姓名(StudentName)两列。
Course表格包含课程的ID(CourseID)、名称(CourseName)和学生ID(StudentID)三列,其中学生ID是指该课程所属的学生ID。
请编写一条SQL查询语句,查询同时选修了所有课程的学生的姓名。
以下是其中一种可能的解法:解释:1.首先,使用子查询查询所有选修了课程的学生ID。
子查询使用GROUP BY和HAVING子句来筛选出选修了所有不同课程的学生,这里使用了DISTINCT关键字以避免重复课程的计数。
2.然后,将子查询的结果作为条件,使用IN运算符来查询对应的学生姓名。
该查询语句首先将选修了所有课程的学生筛选出来,然后返回这些学生的姓名。
题目2:假设有两个表格:学生表(Student)和成绩表(Score)。
Student表格包含学生的ID(StudentID)和姓名(StudentName)两列。
Score表格包含学生的ID(StudentID)、课程的ID(CourseID)和成绩(Grade)三列。
请编写一条SQL查询语句,查询每个学生的平均成绩,并按平均成绩从高到低排序,显示学生姓名和平均成绩。
以下是其中一种可能的解法:解释:1.首先,使用JOIN操作将学生表和成绩表连接起来,以便查询每个学生的成绩。
2.然后,使用AVG函数计算每个学生的平均成绩,并使用GROUP BY子句对每个学生进行分组。
3.最后,使用ORDER BY子句按平均成绩从高到低对结果进行排序,并选择学生姓名和平均成绩作为查询结果。
SQL语言课后练习[大全5篇]
SQL语言课后练习[大全5篇]第一篇:SQL语言课后练习岳阳市湖湘认证培训学校学院路504号************SQL语言课后练习题以下练习都是基于数据库XSG,及数据库表XSCJ与XSDA中操作,表结构如下:XSCJ(学号C(10),语文N(4,1),数学N(4,1),英语N(4,1),计算机N(4,1),平均成绩N(4,1))XSDA(学号C(10),姓名C(10),性别C(4),班级C(10),出生日期D,籍贯C(20),家庭情况G,简历M,照片G)1、用SQL语句建立XSDA表,并为学号字段创建为主关键字,约束性别字段的值只能为男或为女,如果在不输入信息的情况下默认值是女。
2、用SQL语句建立XSCJ表,并与XSDA表建立联系。
3、为XSDA表增加一个学费字段,要求为货币型,约束字段有效性规则:学费必须在0至20000元内(含),否则提示:学费错了。
4、修改XSDA表学费字段,要求学费必须在2000-20000间(含),否则提示:学费错了。
5、修改XSDA表学费字段,删除它的字段有效性规则。
6、修改XSDA表学费字段,将其改名为:学杂费。
7、修改XSDA表的籍贯字段的宽度为10。
8、删除XSDA表的学费字段。
9、将XSDA表的姓名字段和性别字段定义为候选索引,索引名为:TEMP。
10、删除XSDA表的候选索引TEMP。
11、删除XSDA表及XSCJ表。
12、在XSCJ表中插入一个元组:学号:19980405,语文:78,数学:68,英语:74,计算机:90,平均成绩:77.50。
13、在XSDA表中插入一个元组:学号:19980405,姓名:王小辉,性别:男,出生日期:1981年12月5日14、在XSCJ表中为所有学生的英语成绩加10分15、在XSDA表中为学号为:19980405的学生的籍贯改为岳阳市16、删除XSDA表中学号为19980405的记录17、将XSDA表复制到XSDABAK表18、从XSG数据库中的XSDA表查找所有学生的学号、姓名和班级的情况19、从XSG数据库的XSDA表查找计981班的学生的学号、姓名和班级的情况20、从XSG数据库中的XSCJ表中查找计算机成绩大于80的学生的学号21、从XSG数据库的XSDA表查找所有学生的学号、姓名和班级的情况,并按学号降序排序22、从XSG数据库中的XSCJ表中查找计算机成绩大于60的学生学号、语文、计算机和平均成绩,并按计算机的降序排序,如计算机成绩相同,按学号的升序排序23、从XSG数据库的XSDA表查找前4个学生的情况,按学号降序排序24、从XSG数据库中的XSCJ表中查找计算机成绩大于70的前40%学生的学生信息,并按计算机的降序排序25、从XSG数据库的XSDA和XSCJ表查找所有学生的姓名、语文、数学、英语和计算机成绩。
学生选课系统sql大作业
学生选课系统sql大作业当涉及到学生选课系统的SQL大作业时,以下是一些可能涉及的表和相关SQL查询的示例:1. 学生表(Students):- 学生ID(StudentID)- 学生姓名(StudentName)- 年级(Grade)- 专业(Major)2. 课程表(Courses):- 课程ID(CourseID)- 课程名称(CourseName)- 教师ID(TeacherID)- 学分(Credits)3. 教师表(Teachers):- 教师ID(TeacherID)- 教师姓名(TeacherName)- 所属学院(College)4. 选课记录表(Enrollments):- 学生ID(StudentID)- 课程ID(CourseID)- 成绩(Grade)示例查询:1. 获取所有学生的姓名和所选课程的名称:```SELECT Students.StudentName, Courses.CourseNameFROM StudentsINNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentIDINNER JOIN Courses ON Enrollments.CourseID = Courses.CourseID;```2. 获取特定学生的选课情况及成绩:```SELECT Students.StudentName, Courses.CourseName, Enrollments.GradeFROM StudentsINNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentIDINNER JOIN Courses ON Enrollments.CourseID = Courses.CourseIDWHERE Students.StudentID = '学生ID';```3. 获取某门课程的平均成绩:```SELECT AVG(Grade) AS AverageGradeFROM EnrollmentsWHERE CourseID = '课程ID';```4. 获取某个教师所教授的课程及学生选课情况:```SELECT Teachers.TeacherName, Courses.CourseName, Students.StudentNameFROM TeachersINNER JOIN Courses ON Teachers.TeacherID = Courses.TeacherIDINNER JOIN Enrollments ON Courses.CourseID = Enrollments.CourseIDINNER JOIN Students ON Enrollments.StudentID = Students.StudentIDWHERE Teachers.TeacherID = '教师ID';```这些仅是示例查询,具体的SQL查询语句和数据库设计会根据需求和具体情况有所变化。
SQL课上作业与答案
1、查询xs表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。
Select 学号 as number,姓名 as name,总学分 as mark from xs where 专业名="计算机";2、查询xs表中计算机专业各同学的学号、姓名和总学分,对总学分按如下规则进行替换:若总学分为空值,替换为“尚未选课”;若总学分小于50,替换为“不及格”;若总学分在50~52之间,替换为“合格”;若总学分大于52,替换为“优秀”。
总学分列的标题更改为“等级”。
select 学号,姓名,casewhen 总学分 is null then "尚未选课"when 总学分 < 50 then "不及格"when 总学分 >=50 and 总学分 <=52 then "合格"else "优秀"end as 等级from xswhere 专业名="计算机";3、按120分制重新计算成绩,显示xs_kc表中学号为81101的学生成绩信息。
select 学号,课程号,成绩* as 成绩120 from xs_kc where 学号="81101";3 rows in set4、对xscj数据库的xs表只选择专业名和总学分,消除结果集中的重复行。
select distinct 专业名,总学分 from xs;8 rows in set5、统计备注不为空的学生数目。
select count(备注) as 人数 from xs where 备注 is not null;6、统计总学分在50分以上的人数。
select count(总学分) as 人数 from xs where 总学分 > 50;1 row in set7、求选修101课程的学生的最高分和最低分。
(完整版)sql练习题+答案
(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。
Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。
(3)查询全体学生的详细记录。
select * from student(4)查全体学生的姓名及其出生年份。
select sname , birth from student(5)查询学校中有哪些系。
select distinct dept from student(6)查询选修了课程的学生学号。
select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。
sql课后习题答案
sql课后习题答案SQL课后习题答案随着信息技术的快速发展,数据库管理系统(DBMS)在各行各业中扮演着重要的角色。
而SQL(Structured Query Language)作为一种用于管理和操作关系型数据库的语言,被广泛应用于企业和组织的数据管理和分析中。
在学习SQL的过程中,课后习题是巩固知识的重要环节。
下面将为大家提供一些常见SQL课后习题的答案,希望对大家的学习有所帮助。
1. 查询所有学生的姓名和年龄。
答案:SELECT name, age FROM students;2. 查询所有学生的姓名和年龄,并按照年龄降序排列。
答案:SELECT name, age FROM students ORDER BY age DESC;3. 查询学生表中年龄大于20岁的学生信息。
答案:SELECT * FROM students WHERE age > 20;4. 查询学生表中年龄大于20岁并且性别为男的学生信息。
答案:SELECT * FROM students WHERE age > 20 AND gender = '男';5. 查询学生表中年龄大于20岁或者性别为女的学生信息。
答案:SELECT * FROM students WHERE age > 20 OR gender = '女';6. 查询学生表中的学生总数。
答案:SELECT COUNT(*) FROM students;7. 查询学生表中不重复的年龄。
答案:SELECT DISTINCT age FROM students;8. 查询学生表中年龄在20岁到25岁之间的学生信息。
答案:SELECT * FROM students WHERE age BETWEEN 20 AND 25;9. 查询学生表中每个班级的学生数量。
答案:SELECT class, COUNT(*) FROM students GROUP BY class;10. 查询学生表中每个班级的平均年龄。
SQL课后练习题(1-9章答案)
SQL课后练习题(1-9章答案)第一章1、数据完整性是指( D )A.数据库存中的数据不存在重复B.数据库中所有的数据格式是一样的C.所有的数据全部保存在数据库中D.数据库中的数据能够正确反映情况2、SQL中pubs数据库属于(A )A.用户数据库B.系统数据库C.数据库模板D.数据库管理系统3、数据冗余指的是( D )A.数据与数据之间没有联系B.数据有丢失C.数据量太大D.存在重复的数据4、SQL Server数据库的主数据文件的扩展名为( B )A. .sqlB. .mdfC. .mdbD. .ldf5、下列关于关系数据库叙述错误的是(B )A.关系数据库的结构一般保持不变,但也可根据需要进行改变B.一个数据表组成一个关系数据库,多种不同数据则需要创建多个数据库C. 关系数据库表中的所有记录的关键字字段的值互不相同D. 关系数据库表中的外部关键字不能用于区别该表中的记录6、创建数据库时,需要指定( C )属性。
A.数据库初始大小B.数据库的存放位置C.数据库的物理名和逻辑名D.数据库的访问权限7、以下说法正确的是( A )A.通过SQL Server服务器对SQL Server的启动、停止和通过服务管理器对SQL Server的启动、停止是同等功效B.必须先启动服务管理器中的SQL Server服务之后才能通过SQL Server服务管理器启动SQL ServerC.必须先通过SQL Server服务管理器启动SQL Server之后才能启动服务管理器中的SQL Server服务D.只能通过服务管理器对SQL S erver进行启动和停止8、SQL Server提供的4个系统数据库,以下说法正确的是( D )A.tempdb数据库是一个空数据库,完全可以删除B.adventure works是用来做模板的一个数据库C.msdb数据库是用来做例子的数据库D.创建新的空白数据库时,将使用Model数据库所规定的默认值9、以下说法错误的是(C)A.数据完整性是指存储在数据库中数据的准确性B.SQL Server是一个DBMSC.ERP、CRM、MIS等都是DBMSD.设计数据库时允许必要的冗余第二章1、创建银行的贷款情况表时,“还款日期”默认为当天,且必须晚于“借款日期”,应采用(A)约束。
数据库(sql)课堂练习题(答案)
假设有如下4个样表student(学号,姓名,性别,出生日期,班级) teacher(教工号,姓名,性别,出生日期,职称,所在系) course(课程号, 课程名,教工号) score(学号,课程号,成绩)1、查询学生信息表中所有的姓名、性别和班级select sname,sex,class from student2、查询成绩表中成绩在60到80之间的所有记录select * from score where degree between 60 and 803、查询学生信息表中‘95031’班的学生或性别为‘女’的学生记录select * from student where class=95031 or sex='女'4、以班级降序显示学生信息表的所有记录select * from student order by class desc5、以课程号升序、成绩降序显示成绩表的所有记录select * from score order by cno asc , degree desc6、查询‘95031’班的学生人数select count(sno) 人数 from student where class=950317、查询成绩表中的最高分的学生的学号,课程号select sno,cno from score where degree=(select max(degree) from score)8、查询成绩表中课程号为‘3-105’的平均分*/select avg(degree) 平均成绩 from score where cno='3-105'9、显示成绩表中至少有5名学生选修的并以3开头的课程号的平均分数select avg(degree) 平均分数 from score where cno like '3%' group by cno having count(sno)>=510、列出95033班和95031班全体学生的记录select * from student where class in('95031','95033')11、显示所有学生的姓名、课程号和成绩select sname,cno,degree from student,score where student.sno=score.sno12、列出所有同学的姓名、课程名和成绩select sname,cname,degree from student,score,course where student.sno=score.sno and o=o13、显示'张旭'教师任课的学生成绩select student.sno, sname,degree from student,scorewhere student.sno=score.sno and cno in(select cno from coursewhere tno in (select tno from teacher where name='张旭' ) )14、列出存在有85分以上成绩的课程号select distinct cno from score where degree in (select degree from score where degree>85)15、列出最高分同学的学号、课程号和成绩*/select * from score where sno=(select sno from score where degree=(select max(degree) from score))16、列出所有未讲课的教师的姓名和系别select name,depart from teacher where not exists (select * from course where course.tno=teacher.tno)17、列出成绩比该课程平均成绩低的同学的成绩表select * from score x where degree<(select avg(degree) from score y where o=o)18、列出所有选修‘计算机导论’课程的‘男’同学的成绩表select student.sno,sname,degreefrom score,studentwhere student.sno=Score.sno and cno=( select cnofrom coursewhere cname='计算机导论' )and sex='男'第三章习题5.试用SQL语言完成以下各项操作:四个关系模式:S(SNO,SNAME,STATUS,CITY)P(PNO,PNAME,COLOR,WEIGHT)J(JNO,JNAME,CITY)SPJ(SNO,PNO,JNO,QTY)(1) 找出所有供应商的姓名和所在城市。
sql 作业答案
现有学生表(学号,姓名,性别,年龄,入学年份,籍贯,手机号码,系号,班长学号),学号是主码,系号和班长学号是外部码,手机号码必须唯一,学生的年龄不得小于10岁和大于50岁,性别必须是'男'或者'女'。
系表(系号,系名,系主任),其中系号是主码,系名不能有重复的。
选课表(学号,课程号,成绩),(学号,课程号)是主码,学号和课程号是外部码,成绩不能小于0分和大于100分课程表(课程号,课程名,先修课,学分),课程号是主码,课程名必须唯一,学分必须大于0小于5。
学分计算表(最低成绩,最高成绩,计算比率)。
最低成绩和最高成绩都必须大于0小于100,同时最低成绩不能大于最高成绩。
试完成以下工作:create table系表(系号char(4)PRIMARY KEY,系名varchar(50)UNIQUE,系主任varchar(10))create table学生表(学号char(10)PRIMARY KEY,姓名nvarchar(10),性别char(2)CHECK(性别IN ('男','女')),年龄int CHECK(年龄between 10 and 50 ),入学年份datetime,籍贯nvarchar(100),手机号码varchar(20)UNIQUE,系号char(4),班长学号char(10),FOREIGN KEY(班长学号)REFERENCES学生表(学号),FOREIGN KEY(系号)REFERENCES系表(系号))create table课程表(课程号char(10)PRIMARY KEY,课程名nvarchar(100)UNIQUE,先修课char(10) FOREIGN KEY REFERENCES课程表(课程号),学分int CONSTRAINT CK_课程表_学分CHECK(学分between 0 and 5))create table选课表(学号char(10),课程号char(10),成绩int CHECK(成绩between 0 and 100 )default 0,PRIMARY KEY(学号,课程号),FOREIGN KEY(学号)REFERENCES学生表(学号),FOREIGN KEY(课程号)REFERENCES课程表(课程号))create table学分计算表(最低成绩real CHECK(最低成绩between 0 and 100),最高成绩real CHECK(最高成绩between 0 and 100),计算比率real,CHECK(最高成绩>=最低成绩))2. 在学生表中插入学号为26,姓名为'李四',性别为'女',年龄为20,入学年份为2008,籍贯为'广东',手机号码为10010001000,班长学号为10 的一条记录。
SQL语言(综合)_课堂练习和习题
SQL语言(综合)_课堂练习和习题SQL语言课堂练习和习题一、选择题1. SQL语言是( )的语言,容易学习.A.过程化B. 非过程化C.格式化D. 导航式2. SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是( ) .A. SELECTB. INSERTC. UPDATED. DELETE3. 在视图上不能完成的操作是( ) .A. 更新视图B. 查询C. 在视图上定义新的表D. 在视图上定义新的视图4. SQL语言集数据查询,数据操纵,数据定义和数据控制功能于一体,其中,CREATE,DROP,ALTER语句是实现哪种功能( ).A. 数据查询B. 数据操纵C. 数据定义D. 数据控制5. SQL语言中,删除一个视图的命令是( ).A.DELETEB.DROPC.CLEARD.REMOVE6. 在SQL语言中的视图VIEW是数据库的( ) .A. 外模式B. 模式C. 模式D. 存储模式7. 下列的SQL语句中,( )不是数据定义语句.A. CREATE TABLEB. DROP VIEWC. CREATE VIEWD. GRANT8. 若要撤销数据库中已经存在的表S,可用( ).A. DELETE TABLE SB. DELETE SC. DROP TABLE SD. DROP S9. 若要在基本表S中增加一列CN(课程名),可用( ).A.ADD TABLE S(CN CHAR(8))B.ADD TABLE S ALTER(CN CHAR(8))C.ALTER TABLE S ADD(CN CHAR(8))D.ALTER TABLE S (ADD CN CHAR(8))10. 学生关系模式S( S#,Sname,Sex,Age),S的属性分别表示学生的学号,,性别,年龄.要在表S中删除一个属性"年龄",可选用的SQL语句是( ).A. DELETE Age from SB. ALTER TABLE S DROP AgeC. UPDATE S AgeD. ALTER TABLE S 'Age'11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME 是学生,SAGE是学生年龄, C#是课程号,CNAME是课程名称.要查询选修"ACCESS"课的年龄不小于20的全体学生的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句.这里的WHERE子句的容是( ).A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME='ACCESS'B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in 'ACCESS'C. SAGE in>=20 and CNAME in 'ACCESS'D. SAGE>=20 and CNAME=' ACCESS'12. 设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN 为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值围0-100.若要把"二的化学成绩80分"插入S中,则可用( ).A. ADD INTO S V ALUES('二','化学','80')B. INSERT NTO S V ALUES('二','化学','80')C. ADD INTO S V ALUES('二','化学',80)D. INSERT INTO S V ALUES('二','化学',80)13. 设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN 为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值围0-100.若要更正王二的化学成绩为85分,则可用( ) .A. UPDATE S SET grade=85 WHERE SN='王二' AND CN='化学'B. UPDATE S SET grade='85' WHERE SN='王二' AND CN='化学'C. UPDATE grade=85 WHERE SN='王二' AND CN='化学'D. UPDATE grade='85' WHERE SN='王二' AND CN='化学'14. 在SQL语言中,子查询是( ) .A. 返回单表中数据子集的查询语言B. 选取多表中字段子集的查询语句C. 选取单表中字段子集的查询语句D. 嵌入到另一个查询语句之中的查询语句15. SQL是一种( )语言.A. 高级算法B. 人工智能C. 关系数据库D. 函数型16. 有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME是学生,SEX是性别, C#是课程号,CNAME是课程名称.要查询选修"数据库"课的全体男生的SQL 语句是SELECT SNAME FROM S,C,SC WHERE子句.这里的WHERE子句的容是( ).A.S.S# = SC.S# and C.C# = SC.C# and SEX='男' and CNAME='数据库'B.S.S# = SC.S# and C.C# = SC.C# and SEX in'男'and CNAME in'数据库'C.SEX '男' and CNAME ' 数据库'D.S.SEX='男' and CNAME=' 数据库'17. 若用如下的SQL语句创建了一个表SC:CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如下行时,( )行可以被插入.A.('201009','111',60,必修)B.('200823','101',NULL,NULL)C.(NULL,'103',80,'选修')D.('201132',NULL,86,' ')18. 假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE).要查询选修"Computer"课的男生,将涉及到关系( ).A. SB. S,SCC. C,SCD. S,C,SC19.SQL Server2000的字符型系统数据类型主要包括()。
简单的SQL语句练习大全
简单的SQL语句练习大全一:本题用到下面三个关系表:CARD借书卡。
CNO 卡号,NAME姓名,CLASS 班级BOOKS图书。
BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY库存册数BORROW借书记录。
CNO 借书卡号,BNO 书号,RDA TE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
要求实现如下15个处理:1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。
//表名borrow2.找出借书超过5本的读者,输出借书卡号及所借图书册数。
3.查询借阅了"水浒"一书的读者,输出姓名及班级。
4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
5.查询书名包括"网络"关键词的图书,输出书号、书名、作者。
6.查询现有图书中价格最高的图书,输出书名及作者。
7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。
8.将"C01"班同学所借图书的还期都延长一周。
9.从BOOKS表中删除当前无人借阅的图书记录。
10.如果经常按书名查询图书信息,请建立合适的索引。
11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SA VE表中(注ORROW_SA VE表结构同BORROW表)。
12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。
13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。
14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。
课堂练习一:SQL语言练习
广东技术师范学院实验报告学院:计算机科学学院专业:计算机科学与技术班级:成绩:姓名:孔哥哥学号:组别:组员:实验地点:Win 10电脑实验日期:指导教师签名:实验名称:SQL语句练习一、实验目的:二、实验内容:以下查询基于SCOTT模式中的表1.查询每个雇员的编号、姓名、工作,并为这些列各起相应的中文别名。
2.查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。
3.查询工资介于1500和3000的雇员信息。
4.查询出雇员姓名中第二个字母为M的雇员信息。
5.查询雇员的信息,并按工资从高到低排序,若工资相同,则按员工编号排序。
6.查询所有雇员的编号、姓名、工资、部门编号、部门名称、工资在公司的等级(salgrade表)信息。
7.查找雇员的编号、姓名,及其领导的编号、姓名。
(注:使用外连接)三、实验步骤:以下查询基于SCOTT模式中的表1.查询每个雇员的编号、姓名、工作,并为这些列各起相应的中文别名。
2.查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。
3.查询工资介于1500和3000的雇员信息。
4.查询出雇员姓名中第二个字母为M的雇员信息。
5.查询雇员的信息,并按工资从高到低排序,若工资相同,则按员工编号排序。
6.查询所有雇员的编号、姓名、工资、部门编号、部门名称、工资在公司的等级(salgrade表)信息。
7.查找雇员的编号、姓名,及其领导的编号、姓名。
(注:使用外连接)四、实验问题及原因1.SCOTT用户默认是锁定的解锁同时修改密码:alter user scott identified by tiger account unlock;2.解锁完要记得切换用户3.第二题可以用not in条件是Not in (‘MANAGER’,’CLERK’,)。
SQL语句课堂练习题及答案
设有三个关系:
3、查询学号为S3学生所学课程的课程名 与任课教师名
S(sno,sname,sex,age) 4、查询至少选修LIU老师所授课程中一 SC(sno,cno,grade) 门课程的女学生姓名
C(cno,cname,teacher) 5、查询WANG同学不学的课程的课程
试用SQL语句表示下 号
S(sno,sname,sex,age)
方法二:用IN嵌套查询
Select sno,sname from S where age>23 and sno in (select sno from s where sex=‘男’)
An Introduction to Database System
综合练习答案
综合练习答案
S(sno,sname,sex,age) SC(sno,cno,grade) C(cno,cname,teacher)
5、查询WANG同学不学的课程的课程号
涉及到全部的表:S,SC,C 方法一:NOT EXISTS嵌套查询
Select cno from C where not exists
第三章 综合练习
设有三个关系:
10、求LIU老师所授课程的每门课程的平均 成绩
S(sno,sname,sex,age) 11、检索姓名以L打头的所有学生的姓名和
SC(sno,cno,grade) 年龄。
C(cno,cname,teacher) 12、求年龄大于所有女同学年龄的男学生姓
试用SQL语句表示下 名和年龄。
5、查询WANG同学不学的课程的课程号
涉及到全部的表:S,SC,C 方法二:集合查询
Select cno from C Except Select distinct cno from S, SC where S.sno=SC.sno
最全的SQL练习题(做完你就是高手)
最全的SQL练习题(做完你就是⾼⼿)最全的SQL练习题(做完你就是⾼⼿)补充作业⼀设有三个关系:S(SNO, SNAME, AGE, SEX,Sdept)SC(SNO, CNO, GRADE)C(CNO, CNAME, TEACHER)试⽤关系代数表达式表⽰下列查询:-- 1、查询学号为S3学⽣所学课程的课程名与任课教师名。
SELECT c.`name`, c.teacher FROM student_class sc LEFT JOIN `class` c ON o = c.NO WHERE sc.sno = 's3';-- 2、查询⾄少选修LIU⽼师所教课程中⼀门课的⼥⽣姓名。
select s.sname from student as s where s.sno in(select DISTINCT sc.sno from student_class as sc left join class as c on o=o where c.teacher='LIU')and s.sex=2;-- 3、查询WANG同学不学的课程的课程号。
select o from class as c where o not in(select DISTINCT o from student as s inner join student_class as sc on s.sno=sc.sno where s.sname='WANG');-- 4、查询⾄少选修两门课程的学⽣学号。
select sno, count(*) as cou from student_class group by sno having cou>=2;-- 5、查询选修课程中包含LIU⽼师所教全部课程的学⽣学号。
select sc.sno from student_class as sc INNER JOIN class as c on o=o where c.teacher='LIU';补充作业⼆三个关系同上,试⽤SQL语⾔表⽰下列查询:1、查询门门课程都及格的学⽣的学号⽅法1:提⽰:根据学号分组,就得到每个学⽣所有的课程成绩,在某个学⽣这⼀组成绩⾥,如果他所有的课程成绩都⼤于60分则输出该组学⽣的学号Select sno frome sc group by sno having min(grade)>=60;2、查询既有课程⼤于90分⼜有课程不及格的学⽣的学号⾃⾝连接:Select sno from sc where grade >90 and sno in (select sno from sc where grade<60)3、查询平均分不及格的课程号和平均成绩Select cno , avg(GRADE) from sc group by cno having avg(grade)<60查询平均分及格的课程号和课程名Select o , Cname from SC,C where o=o group by o having avg(grade)>=604、找出⾄少选修了2号学⽣选修过的全部课程的学⽣提⽰:不存在这样的课程y,学⽣2选修了y,⽽学⽣x没有选。
教学管理数据库SQL练习
教学管理数据库SQL练习教学管理数据库SQL练习2010-12-08 21:01教学管理数据库SQL练习四个关系:教师关系T(t#,tname,title)课程关系C(c#,cname,t#)学生关系S(s#,sname,age,sex)选课关系SC(s#,c#,score)1、检索年龄小于17岁的女学生的学号和姓名。
2、检索男学生所学课程的课程号和成绩。
3、检索男学生所学课程的任课教师的工号和姓名。
4、检索至少选修两门课的学生学号。
5、检索至少有学号为S2和S4学生选修的课程的课程号。
6、检索wang同学不学的课程号。
7、检索全部学生都选修的课程的课程号和课程名。
8、检索选修课程包含liu老师所授全部课程的学生学号。
9、统计有学生选修的课程门数。
10、求选修C4课程的女学生的平均年龄。
11、求liu老师所授课程的每门课程的平均成绩。
12、统计每门课程的学生选修人数(超过10人的课程才统计)。
要求显示课程号和人数,查询结果按人数降序排序,若人数相同,按课程号升序排序。
13、检索学号比wang同学大,而年龄比她小的学生姓名。
14、在表SC中检索成绩为空的学生学号和年龄。
15、检索姓名以l打头的所有学生的姓名和年龄。
16、求年龄大于所有女同学年龄的男学生姓名和年龄。
17、往关系C中插入一个课程元组('C8','VC++','T1')。
18、检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表faculty(tname)。
19、在SC中删除尚无成绩的选课元组。
20、把选修liu老师课程的女同学选课元组全部删除。
21、把maths课不及格的成绩全改为60分。
22、在表SC中,把成绩低于全部课程的平均成绩的女同学成绩提高5%。
sql课程设计作业
sql课程设计作业一、教学目标本课程的教学目标是使学生掌握SQL语言的基本语法和操作,能够熟练地使用SQL进行数据库的创建、表的创建和操作、数据的查询和更新等操作。
1.掌握SQL语言的基本语法和操作。
2.了解数据库的基本概念和原理。
3.掌握数据库的创建、表的创建和操作、数据的查询和更新等操作。
4.能够独立完成数据库的创建、表的创建和操作、数据的查询和更新等操作。
5.能够编写简单的SQL脚本程序。
情感态度价值观目标:1.培养学生的逻辑思维能力和问题解决能力。
2.培养学生的团队合作意识和沟通能力。
3.培养学生的自主学习和持续学习的意识。
二、教学内容本课程的教学内容主要包括SQL语言的基本语法和操作、数据库的基本概念和原理、数据库的创建、表的创建和操作、数据的查询和更新等操作。
1.SQL语言的基本语法和操作:SELECT、INSERT、UPDATE、DELETE等命令的语法和用法。
2.数据库的基本概念和原理:数据库的概念、关系型数据库的原理、SQL的作用和地位。
3.数据库的创建:使用SQL创建数据库的基本语法和步骤。
4.表的创建和操作:使用SQL创建表的基本语法和步骤,表的属性和约束,表的插入、更新和删除操作。
5.数据的查询:使用SQL进行数据查询的基本语法和用法,包括单表查询、多表查询、聚合函数等。
三、教学方法本课程的教学方法包括讲授法、案例分析法、实验法等。
1.讲授法:通过教师的讲解和解释,使学生掌握SQL语言的基本语法和操作,理解数据库的基本概念和原理。
2.案例分析法:通过分析实际案例,使学生掌握SQL语言的应用和实际操作,培养学生的问题解决能力。
3.实验法:通过实验操作,使学生掌握数据库的创建、表的创建和操作、数据的查询和更新等操作,培养学生的实际操作能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料、实验设备等。
1.教材:选用权威、实用的SQL语言教材,作为学生学习的主要参考资料。
《SQL_Server_2008_实验指导》课后作业
SQL Server 2008 实验指导课后作业问题一:创建数据库1.使用以下 SQL 语句创建一个名为myDB的数据库。
CREATE DATABASE myDB;2.使用以下 SQL 语句查询系统中的所有数据库。
SELECT name FROM sys.databases;问题二:创建表格1.在myDB数据库中,创建一个名为students的表格,包含以下字段:–id:学生编号,整数类型,主键;–name:学生姓名,字符串类型;–age:学生年龄,整数类型;–gender:学生性别,字符串类型。
USE myDB;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(100),age INT,gender VARCHAR(10));2.使用以下SQL 语句查询students表格的结构信息。
EXEC sp_columns students;问题三:插入数据1.使用以下SQL 语句向students表格插入一条记录。
INSERT INTO students (id, name, age, gen der)VALUES (1, '张三', 20, '男');2.使用以下 SQL 语句查询students表格中的所有记录。
SELECT*FROM students;问题四:更新数据1.使用以下 SQL 语句更新students表格中的一条记录。
UPDATE studentsSET age =21WHERE id=1;2.使用以下 SQL 语句查询更新后的students表格中的记录。
SELECT*FROM students;问题五:删除数据1.使用以下 SQL 语句删除students表格中的一条记录。
DELETE FROM studentsWHERE id=1;2.使用以下 SQL 语句查询删除后的students表格中的记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
select 班级名 from 学生表 where 班级名!='软件2班'
select [课程名] from [课程表.] where [先修课] is null
select*from 学生表 order by 入学年份 desc , 学号 asc
select count(*)'教师总数' from 授课表
select [成绩],[姓名],[课程名],[成绩表].[课程号],[成绩],[老师名],[学时数]
from [学生表],[课程表.],[授课表],[成绩表]
where [学生表].[学号]=[成绩表].[学号] and
[成绩表].[课程号]=[课程表.].[课程号]and
select * from 学生表 where 班级名='软件2班'and 性别='女'
select * from 学生表 where 入学年份<='2002-1-1'
select 姓名 from 学生表 where 所在院系='计算机'
select 姓名 from 学生表 where 年龄<='19' or 性别='女'
as
(select 学号,姓名,入学年份,所在院系 from 学生表 where 所在院系='计算机')
go
select*from 计算机学生表
create view 选课学生
as
(select distinct a.学号,姓名,入学年份,所在院系 from 成绩表 a join 计算机学生表 b on a.学号=b.学号)
select * from 学生表,成绩表 where 学生表.学号=成绩表.学号
select 成绩,姓名,课程号 from 学生表,成绩表 where 学生表.学号=成绩表.学号
select a.[先修课],b.[课程号] from [课程表.] a,[课程表.] b where a.[课程号]=b.[先修课]
select max(成绩)'最高分' from 成绩表 where 课程号='C801'
select avg(年龄)'平均年龄'from 学生表
select sum(年龄)'年龄总和'from 学生表
select sum(年龄+1)'年龄+1总和'from 学生表
select sum(年龄)'女同学年龄总和'from 学生表 where 性别='女'
select count(*)'女同学总数'from 学生表 where 年龄>'19'
select count(*)'先修课人数'from [课程表.] where [先修课] is not null
select max(年龄)'最大年龄',min(年龄)'最小年龄' from 学生表
select @sum=10
declare @num char(9)
select @num=学号 from 学生表
declare @age tinyint
select @age=年龄 from 学生表
declare @two_num char(9)
select @two_num=学号 from 学生表 where 姓名='沈香娜'
go
select*from 选课学生
create view 选课学生a
as
(select a.学号,a.姓名,a.入学年份,a.所在院系 from 选课学生 a join 学生表 b on a.学号=b.学号
where b.性别='女')
when 成绩 between 80 and 90 then 成绩*1.05
else 成绩*1.2
end
from 成绩表
declare @x int,@y int, @z int
select @x =1, @y=1
while @x <3
begin
go
select*from 选课学生a
create view avg(学号,平均成绩)
as
(select 学号,avg(成绩)'平均成绩' from 成绩表 group by 学号)
go
select*from avg
declare @ptr int
declare @sum int
print @x
while @y <3
begin
select @z= 100*@x +@y
print @z
select @y=@y+1
end
set @y=2
set @z=3 ຫໍສະໝຸດ if (@x<@y and @y<@z)
print 'y<z'
else
print 'Y>z'
select * from 成绩表
update 成绩表
set 成绩=
case when 成绩<70 then 成绩*1.1
when 成绩 between 70 and 80 then 成绩*1.08
select 老师名 from 授课表 where 课程号='C801'union select 老师名 from 授课表 where 课程号='C803'
select 学号 from 学生表 union select 学号 from 成绩表
create view 计算机学生表(学号,姓名,入学年份,所在院系)
[课程表.].[课程号]=[授课表].[课程号]
select*from 学生表,成绩表 where 学生表.学号=成绩表.学号 and
成绩表.课程号='C801'and
成绩表.成绩>'90'
declare @two_age tinyint
select @two_age=年龄 from 学生表 where 姓名='沈香娜'
select @ptr,@sum,@num,@age,@two_num,@two_age
declare @x int,@y int,@z int
set @x=1
select @x=@x+1
select @y=1
end
select * from 学生表 where 年龄!='19'
select * from 学生表 where 年龄 between '18' and '20'
select * from 学生表 where 年龄 not between '18' and '20'
select*from 学生表 where 所在院系 in('计算机' , '国际贸易')
select*from 学生表 where 年龄=(select max(年龄) from 学生表)
select*from 学生表 where 年龄>(select avg(年龄) from 学生表) order by 年龄 asc
select*from 学生表 where 所在院系='计算机'union select*from 学生表 where 性别='女'
select*from 学生表 where 所在院系 not in('电子学' , '会计学')
select 老师名 from 授课表 where 老师名 like '苏%'
select 老师名 from 授课表 where 老师名 like '苏_步'
select 所在院系 from 学生表 where 姓名 like '_成%'