SQL Server 基础练习题及答案
SQL Server基础查询练习(附答案)

--创建数据库USE[master]GOCREATEDATABASE[test]ONPRIMARY(NAME=N'test',FILENAME=N'D:\SQL\DataBase\test.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH= 1024KB)LOG ON(NAME=N'test_log',FILENAME=N'D:\SQL\DataBase\test_log.ldf',SIZE= 1024KB,MAXSIZE= 2048GB,FILEGROWTH= 10%)GOALTERDATABASE[test]SETCOMPATIBILITY_LEVEL= 90GOIF (1 =FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))beginEXEC[test].[dbo].[sp_fulltext_database]@action='enable'endGOALTERDATABASE[test]SETANSI_NULL_DEFAULTOFFGOALTERDATABASE[test]SETANSI_NULLSOFFGOALTERDATABASE[test]SETANSI_PADDINGOFFGOALTERDATABASE[test]SETANSI_WARNINGSOFFGOALTERDATABASE[test]SETARITHABORTOFFGOALTERDATABASE[test]SETAUTO_CLOSEOFFGOALTERDATABASE[test]SETAUTO_CREATE_STATISTICSONGOALTERDATABASE[test]SETAUTO_SHRINKOFFGOALTERDATABASE[test]SETAUTO_UPDATE_STATISTICSONGOALTERDATABASE[test]SETCURSOR_CLOSE_ON_COMMITOFFGOALTERDATABASE[test]SETCURSOR_DEFAULTGLOBALGOALTERDATABASE[test]SETCONCAT_NULL_YIELDS_NULLOFFGOALTERDATABASE[test]SETNUMERIC_ROUNDABORTOFFGOALTERDATABASE[test]SETQUOTED_IDENTIFIEROFFGOALTERDATABASE[test]SETRECURSIVE_TRIGGERSOFFGOALTERDATABASE[test]SETDISABLE_BROKERGOALTERDATABASE[test]SETAUTO_UPDATE_STATISTICS_ASYNCOFF GOALTERDATABASE[test]SETDATE_CORRELATION_OPTIMIZATIONOFF GOALTERDATABASE[test]SETTRUSTWORTHYOFFGOALTERDATABASE[test]SETALLOW_SNAPSHOT_ISOLATIONOFFGOALTERDATABASE[test]SETPARAMETERIZATIONSIMPLEGOALTERDATABASE[test]SETREAD_COMMITTED_SNAPSHOTOFFGOALTERDATABASE[test]SETREAD_WRITEALTERDATABASE[test]SETRECOVERYSIMPLEGOALTERDATABASE[test]SETMULTI_USERGOALTERDATABASE[test]SETPAGE_VERIFY CHECKSUMGOALTERDATABASE[test]SETDB_CHAININGOFFGO--创建表USE testCREATETABLE emp(EMPNO NUMERIC(5, 0)NOTNULL,ENAME NVARCHAR(10),JOB NVARCHAR(9),MGR NUMERIC(5, 0),HIREDATE DATETIME,SAL NUMERIC(7, 2),COMM NUMERIC(7, 2),DEPTNO NUMERIC(2, 0),)CREATETABLE dept(DEPTNO NUMERIC(2),DNAME NVARCHAR(14),LOC NVARCHAR(13),)--插入数据INSERTINTO EMP VALUES(7369,'SMITH','CLERK', 7902,'2000-12-17', 800,NULL, 20)。
sql server考试题

sql server考试题SQL Server考试题指的是针对SQL Server数据库管理系统进行考试的相关题目。
这些题目用于测试考生对SQL Server的掌握程度,包括理论知识、操作技能和问题解决能力等方面。
示例:1.单选题:在SQL Server中,用于创建表的语句是:A. CREATE INDEXB. CREATE DATABASEC. CREATE TABLED. CREATE VIEW答案:C. CREATE TABLE。
2.多选题:在SQL Server中,可以使用哪些语句进行数据查询?A. SELECTB. DELETEC. UPDATED. INSERT答案:A、B、C、D。
在SQL Server中,SELECT、DELETE、UPDATE和INSERT都是用于数据查询的语句。
3.简答题:请简述SQL Server中的事务处理的概念及其作用。
答案:事务处理是SQL Server中的一个重要概念,它是一个完整的业务逻辑单元,可以确保数据库的完整性和一致性。
事务可以确保一系列操作要么全部成功执行,要么全部不执行,从而保持数据库的一致性状态。
事务处理的作用是确保数据的完整性和避免数据损坏或不一致的情况。
4.案例分析题:给定一个数据库表结构,要求编写一个查询语句,从表中检索符合特定条件的记录,并按照一定顺序对结果进行排序。
答案:根据具体的表结构和条件要求,编写相应的SELECT语句,并使用WHERE子句来筛选符合条件的记录。
然后使用ORDER BY子句对结果进行排序。
具体的查询语句和排序方式应根据实际情况进行调整。
总结来说,SQL Server考试题指的是针对SQL Server数据库管理系统进行的考试所使用的相关题目。
这些题目用于测试考生对SQL Server的掌握程度,包括理论知识、操作技能和问题解决能力等方面。
考生需要通过学习和实践来掌握相关知识和技能,以顺利通过考试。
SQL_Server复习题汇总带答案

SQL Server复习题一、选择题1、数据库系统的主要特征是()A、数据的冗余度小B、数据的结构化C、数据独立性高D、数据可以共享2、下面不属于关系数据库管理系统的是( B )A、OracleB、IMSC、SQL ServerD、DB23、数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A)。
A、DBS包括DB和DBMSB、DBMS包括DB和DBSC、DB包括DBS和DBMSD、DBS就是DB,也就是DBMS4、(C)是数据库系统的核心,它负责数据库的配置、存取、管理和维护等工作。
A、操作系统B、关系模型C、数据库管理系统D、数据库5、下列四项说法中不正确的是(C ) 。
A、数据库减少了数据冗余B、数据库中的数据可以共享C、数据库避免了一切数据的重复D、数据库具有较高的数据独立性6、下列特点中哪个不是数据库系统阶段的特点( B)。
A.数据共享B.数据冗余大C.完善的数据控制D.数据和程序相互独立7、数据库设计中概念模型设计阶段的主要描述工具是(C)。
A. 数据字典B. 流程图C. E-R图D.二维表格8、关系模型的基本数据结构是(B)A、树B、二维表C、图D、二叉树9、将E-R模型转换成关系模型的过程,属于数据库设计的( C)阶段。
A、需求分析B、概念设计C、逻辑设计D、物理设计10、在E-R模型中,实体间的联系用(C)表示A、矩形B、直线C、菱形D、椭圆11、为了防止多个用户对数据库的同一数据进行非法存取操作,DBMS必须提供(A).A、安全性保护B、完整性保护C、故障恢复D、并发控制12、按照数据模型分类,数据库管理系统可分为(C)。
A.关系型,概念型,网状B.模式,概念模式,外模式C.关系型,层次型,网状模型D.SQL Server,oracle,DB213、SQL Server安装程序创建4个系统数据库,下列哪个不是系统数据库(C)。
A. masterB. modelC. AdventureWorksD. msdb14、SQL server数据库文件有三类,其中主数据文件的后缀为(D)A、NDFB、LDFC、MDFD、IDF15、SQL server 数据库文件有3类,其中日志文件的后缀为(D)。
SQL Server 2000试卷基础知识(含答案)

SQL Server 2000一、单选题1、DELETE语句来删除表中的数据,一次可以删除( D ).A .一行 B.多行 C.一行和多行 D .多个2、不是SQL Server中所包含的约束种类的是( A ).A. 关键字约束B.外关键字约束C.唯一性约束D.默认约束3、数据库文件中主数据文件扩展名为( C ),次数据库文件扩展名为( ).A .mdf , .ldfB .ldf , .mdfC .mdf , .ndfD .ndf , .mdf4、每个触发器有两个特殊的( C )和( ).A.逻辑表、查询表B.设计表、逻辑表C.插入表、删除表D.删除表、查询表5、视图是从一个或多个表或试图中导出的( C ).A.报表B.查询C.表D.数据6、下列运算符中表示0或多个任意字符的是( B ).A. *B. %C. LIKED._7、( D )不是用来查询、添加、修改和删除数据库中数据的语句。
A、SELECTB、INSERTC、UPDATED、DROP8、( A )是SQL Server中最重要的管理工具A.企业管理器 B.查询分析器 C.服务管理器 D.事件探察器9、以下属于聚合函数的是( A )A SUM;B DATEUP;C RAND;D DROP10、角色分为服务起角色和数据库角色,一个用于为整个服务器设置权限另一个用于为单个( D )设置权限.A.服务器B.对象C.服务器组D.数据库1、以下属于聚合函数的是( A )A SUM;B DATEUP;C RAND;D DROP2、不是SQL Server中所包含的约束种类的是( A ).A. 关键字约束B.外关键字约束C.唯一性约束D.默认约束3、DELETE语句来删除表中的数据,一次可以删除( D ).A .一行 B.多行 C.一行和多行 D .多个4、视图是从一个或多个表中或视图中导出的( A )A 表;B 查询;C 报表;D 数据5、默认值的输入顺序( C )A.先输记录后确定默认.B.先输命令,后输记录C.先确定默认后输入记录.D.先输入命令后输记录.6、下列运算符中表示任意字符的是( B ).A. *B. %C. LIKED._7、索引分为( A )索引、主见索引、聚集索引.A.外键B.具体C.非具体D.唯一8、( A )是SQL Server中最重要的管理工具A.企业管理器 B.查询分析器 C.服务管理器 D.事件探察器9、角色分为服务起角色和数据库角色,一个用于为整个服务器设置权限另一个用于为单个( D )设置权限.A.服务器B.对象C.服务器组D.数据库10、SQL Server2000中支持的触发器是( C )A.CREATEB.ASC.AFTERD.SELECT1.()包含用于恢复数据库的日志信息。
SQLServer数据库考试试题与答案(doc8页)

SQLServer数据库考试试题与答案(doc8页)SQLServer数据库考试试题与答案(doc 8页)选择题:(20分)1、根据关系数据基于的数据模型——关系模型的特征判断下列正确的⼀项:(___)A、只存在⼀对多的实体关系,以图形⽅式来表⽰。
B、以⼆维表格结构来保存数据,在关系表中不允许有重复⾏存在。
C、能体现⼀对多、多对多的关系,但不能体现⼀对⼀的关系。
D、关系模型数据库是数据库发展的最初阶段。
2、在“连接”组中有两种连接认证⽅式,其中在(___)⽅式下,需要客户端应⽤程序连接时提供登录时需要的⽤户标识和密码。
A、Windows⾝份验证B、SQL Server ⾝份验证C、以超级⽤户⾝份登录时D、其他⽅式登录时3、SQL Server 2000 在安装之前,应注意的事项:(___)A、SQL Server 2000的任何版本在安装时都不⽤考虑操作系统的制约。
B、SQL Server 2000的安装对硬件的要求不作C、alter table table1 column1 primary key ;5、表在数据库中是⼀个⾮常重要的数据对象,它是⽤来(1___)各种数据内容的,数据库创建后就可以创建表了,创建表可以⽤(2___)等⽅法来创建。
⑴ A、显⽰ B、查询 C、存放 D、检索⑵ A、企业管理器 B、查询分析器C、OSQLD、企业管理器和CREATE TABLE语句6、为数据表创建索引的⽬的是(1___),可以在创建表时⽤(2___)来创建唯⼀索引,也可以⽤(2___)来创建唯⼀索引。
⑴ A、提⾼查询的检索性能 B、创建唯⼀索引C、创建主键D、归类⑵ A、设置主键约束,设置唯⼀约束B、Create table,Create indexC、设置主键约束,Create indexD、以上都可以7、在Transact-SQL语法中,⽤来插⼊数据的命令是(___),⽤于更新的命令是(___)。
A、INSERT,UPDATEB、UPDATE,INSERTC、DELETE,UPDATED、CREATE,INSERT INTO8、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但⾄少包括的部分(1___),使⽤关键字(2___)可以把重复⾏屏蔽,将多个查询结果返回⼀个结果集合的运算符是(3___),如果在SELECT语句中使⽤集合函数时,⼀定在后⾯使⽤(4___)。
SQL Server习题及答案

1. 有个用户的计算机不能连接到中心机房的SQL Server 2000上。
你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL Server 2000。
下面的哪些工具有助于你诊断和解决该问题?(多选)A.Enterprise ManagerB.Server Network UtilityC.ProfilerD.Query AnalyzerE.Client Network Utility答:B和E2. 你在SQL Server 2000创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。
当下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT * FROM CustInfo?A.ModelB.TempdbC.MsdbD.MasterE.Pubs答:A、C、E3. 你正在使用SQL Server 2000开发银行交易系统,为了保证商业数据在网络传输(用TCP/IP协议)时不会被窃取,你在SQL Server 2000中启用了网络加密功能。
请问该功能在哪一层被实现?A.TCP/IP协议软件B.超级套接字层C.开放式数据服务D.关系引擎E.存储引擎答:B4. 你正在使用SQL Server 2000开发超市收银系统。
在客户端编写软件时使用SQL语句“SELECT * FROM Products”来查询商品的信息,但是不小心把Products输入成Product。
请问该错误在哪一层被发现?A.客户端的数据库APIB.客户端的NET-LIBRARYC.服务器端的开放式数据服务D.服务器端的关系引擎E.服务器端的存储引擎答:D5. 数据库操作时服务器突然掉电,当重新启动后,您如何恢复已经完成但还没把数据写入硬盘的事务,以及正在进行一半的事务?A、运行ROLL FORWARD ALL TRANSACTIONB、不用。
SQL Server 2000自动恢复,即通过日志恢复所有已经完成但还没把数据写入硬盘的事务到硬盘,并撤消正在进行一半的事务。
SQLserver复习题库及答案

SQLserver复习题库及答案SQLserver 复习题库及答案1. ()可以同一个表的不同字段进行联接。
( 选一项 )A 、内联接B 、自联接 ( 正确答案 )C 、外联接D 、左联接2. 在 SQL Server 数据库中 ,UNIQUE 约束与 PRIMARY KEY 约束之间最主要的区别是()( 选一项 )A 、 UNIQUE 约束要求数据库中至少存在一行数据 , 因此必须在创建数据库表之后才能创建 , 而 PRIMARY KEY 约束无此限制B 、 UNIQUE 约束允许有空值 , 而 PRIMARY KEY 约束不允许有空值C 、创建 UNIQUE 约束后 , 该数据行允许被更改 , 而PRIMARY KEY 约束的数据行不允许更改D 、 UNIQUE 约束列不能创建外键 , 而 PRIMARY KEY 约束可以创建外键引用 ( 正确答案 )3. 查询 student 表中的所有非空 email 信息 , 以下语句正确的是()( 选一项 )A 、 Select email from student where email !=nullB 、 Select email from student where email not is nullC 、 Select email from student where email <> nullD 、 Select email from student where email is not null ( 正确答案 )4. SQL 语句 :select from students where SNO like'010[^0]%[A,B,C]%', 可能会查询出的 SNO 是 ( )( 选两项 )A 、 01053090A ( 正确答案 )B 、 01003090A01C 、 01053090D 、 0101A01 ( 正确答案 )5. 查找 student 表中所有电话号码 ( 列名 :telephone) 的第一位为8 或6, 第三位为0 的电话号码()(‘[86]_0%’等同于'[8,6]_0%')( 选一项 )A 、 SELECT telephone FROM student WHERE telephone LIKE '[86]%0'B 、 SELECT telephone FROM student WHERE telephone LIKE '(8,6)0%'C 、 SELECT telephone FROM student WHERE telephone LIKE '[8,6]_0'D 、 SELECT telephone FROM student WHERE telephone LIKE '[86]_0%' ( 正确答案 )6. 查找 authors 表中的所有电话号码的首位为 4, 第二位为0 或 1 的电话号码()( 选一项 )A 、SELECT phone FROM authors WHERE phone LIKE '4[1,0]%' ( 正确答案 )B 、SELECT phone FROM authors WHERE phone in '4[^10]%'C 、SELECT phone FROM authors WHERE phone LIKE '4_[1,0]%'D 、 SELECT phone FROM authors WHERE phone between '41%' and '40%'7. 查找 student 表中所有电话号码 ( 列名 :telephone)的第一位为 8 或 6, 第三位为 0 的电话号码()( 选一项 )A 、 SELECT telephone FROM student WHERE telephone LIKE '[86]%0'B 、 SELECT telephone FROM student WHERE telephone LIKE '(8,6)0%'C 、 SELECT telephone FROM student WHERE telephone LIKE'[8,6]_0'D 、 SELECT telephone FROM student WHERE telephone LIKE '[86]_0%' ( 正确答案 )8. 成绩表 grade 中字段 score 代表分数 , 以下 ( ) 语句返回成绩表中的最低分。
SQLServer基础练习题及

SQL Server基础练习题及答案【幻天火焰】目录一、单表盘问练习 (1)二、聚合函数练习 (3)三、分组盘问练习 (3)四、嵌套盘问练习 (4)五、联接盘问练习 (6)六、外联接盘问 (7)七、补充提高 (7)一、单表盘问练习1、盘问 <学生信息表 >,盘问学生 "张三 "的全部根本信息Select *from A_studentinfowhere sname=' 张三 '2、盘问 <学生信息表 >,盘问学生 "张三 "和〞李四〞的根本信息Select *from A_studentinfowhere sname=' 张三 'or sname=' 李四 '3、盘问 <学生信息表 >,盘问姓 " 张 "学生的根本信息Select *from A_studentinfowhere sname like ' 张%'4、盘问 <学生信息表 >,盘问姓名中含有 "四 " 字的学生的根本信息Select *from A_studentinfowhere sname like '% 四 %'5、盘问 <学生信息表 >,盘问姓名长度为三个字,姓“李〞,且最后一个字是“强〞的全部学生信息。
select *from A_studentinfowhere sname like ' 李_强 '6、盘问 <学生信息表 >,盘问姓 " 张 "也许姓〞李〞的学生的根本信息。
Select *from A_studentinfowhere sname like ' 张%'or sname like ' 李 %'7、盘问 <学生信息表 >,盘问姓 " 张 "并且 " 所属省份 " 是 "北京 "的学生信息Select *from A_studentinfowhere sname like ' 张%'and province=' 北京 '8、盘问 <学生信息表 >,盘问 "所属省份 "是 " 北京 " 、〞新疆〞、〞山东〞也许 "上海 " 的学生的信息 Select *from A_studentinfowhere province in (' 北京 ',' 上海 ',' 新疆 ','山东 ')9、盘问 <学生信息表 >,盘问姓 " 张 ",但是 " 所属省份 " 不是 " 北京 "的学生信息Select *from A_studentinfowhere sname like ' 张%'and province !=' 北京 '10、盘问 <学生信息表 >,盘问全部学生信息,并依照“性别〞排序,性别相同的情况下依照“所属省份〞排序,所属省份相同的情况下再依照“班级〞排序select *from A_studentinfoorder by sex,province,class11、盘问 <学生信息表 >,盘问现有学生都来自于哪些不相同的省份select distinct province as省份from A_studentinfo12、盘问 <学生选修信息表 >,盘问没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、盘问 <学生选修信息表 >,盘问全部填写了成绩的学生的选修信息,并依照“成绩〞从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计 <学生信息表 >,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计 <学生信息表 >,统计年龄大于20 岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2021-yearofbirth)>203、统计 <学生信息表 >,统计入学时间在1980 年至 1982 年的学生人数select count(*) as学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2003-12-30'对照以下盘问方式,看看有何不相同,为什么?select count(*) as学生数量from A_studentinfowhere enrollment between '1998' and '2003'4、统计 <学生选修信息表>,统计学号为"S001"的学生的平均成绩Select avg(score) as 平均成绩from A_studentcoursewhere sno='S001'5、统计 <学生选修信息表>,统计学号为"S001"的学生的总成绩select sum(score) as 总成绩from A_studentcoursewhere sno ='S001'6、统计 <学生选修信息表>,盘问课程号为〞C001〞的课程的最高成绩select max(score) as 最高成绩from A_studentcoursewhere cno='C001'7、统计 <学生信息表 >,盘问全部学生中的最大年龄是多少select 2021-min(yearofbirth) as最大年龄from A_studentinfo三、分组盘问练习1、统计 <学生选修信息表>,统计每个课程的选修人数select cno,count(*)as 学生数量from A_studentcoursegroup by cno2、统计 <学生选修信息表>,统计每个同学的总成绩select sno,sum(score) as 总成绩from A_studentcoursegroup by sno3、统计 <学生信息表 >,统计每个班级中每种性其余学生人数,并依照班级排序select class as 班级 ,sex as 性别 , count(*) as 人数 from A_studentinfogroup by class,sexorder by class4、统计 <学生选修信息表>,统计每门课程的平均成绩,并依照成绩降序排序Select cno,avg(score) as 平均成绩from A_studentcoursegroup by cnoorder by avg(score) desc5、统计 <学生选修信息表>,显示有两门以上课程不及格的学生的学号Select sno as 不及格学生学号from A_studentcoursewhere score<60group by snohaving count(*)>16、统计 <学生信息表 >,统计每个班级中的最大年龄是多少select class as班级, 2021-min(yearofbirth) as最大年龄from A_studentinfogroup by class四、嵌套盘问练习1、用子盘问实现,盘问选修“高等数学〞课的全部学生的总成绩select sum(score) as 高等数学总成绩from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject=' 高等数学 ')2、用子盘问实现,统计 <学生选修信息表 >,显示学号为 "S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩select score,cnofrom A_studentcoursewhere sno='S001'and score =(select max(score)from A_studentcoursewhere sno ='S001')思虑:若是该学号学生有两个课程分数都为最高的100 分,盘问会有什么结果3、用子盘问实现,盘问 2 班选修 " 数据库技术 " 课的全部学生的成绩之和select sum(score) as 数据库技术总成绩 from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject=' 数据库技术 ')and sno in(select snofrom A_studentinfowhere class='2')4、用子盘问实现,盘问 3 班 "张三 "同学的 " 测试管理 " 成绩select scorefrom A_studentcoursewhere cno=(select cnofrom A_courseinfowhere subject=' 测试管理 ')and sno in(select snofrom A_studentinfowhere class='3'and sname=' 张三 ')五、联接盘问练习1、盘问 " 张三 " 的各科考试成绩,要求显示姓名、课程号和成绩 select sname as 姓名 ,cno as 课程号 ,score as 成绩 fromA_studentinfo,A_studentcourseand sname='张三 '2、盘问 " 张三 " 的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩 select sname as 姓名 ,cno as 课程号 ,score as 成绩 fromA_studentinfo,A_studentcourseand sname='张三 'and score is null3、盘问 " 张三 " 的各门课程成绩,要求显示姓名、课程名称和成绩 select sname as 姓名 ,subject as 课程名称 ,score as 成绩 fromA_studentinfo,A_courseinfo,A_studentcourseandand A_studentinfo.sname=' 张三 '4、盘问 3 班" 张三 " 的" 测试管理 " 成绩,要求显示姓名、成绩select sname as 姓名 ,score as 成绩from A_studentcourse,A_courseinfo,A_studentinfoandand subject=' 测试管理 'and class='3'and sname='张三 '5、盘问全部 2000 年以前入学的,各班男生的各科考试平均成绩select class as 班级 ,avg(score) as 男生平均成绩 fromA_studentcourse,A_courseinfo,A_studentinfoandand sex='男 'and enrollment<'2000-01-01'group by class六、外联接盘问盘问李刚毅全部课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:('S009','S010','S011') 1、使用左联接select A_studentinfo.sno as 学生表学号 ,sname as 姓名 ,A_studentcourse.sno as 成绩表学号 , cno as 课程号 ,score as成绩from A_studentinfoleft join A_studentcoursewhere sname='李刚毅 '2、使用右联接select A_studentinfo.sno as 学生表学号 ,sname as 姓名 ,A_studentcourse.sno as 成绩表学号 , cno as 课程号 ,score as 成绩from A_studentcourseright join A_studentinfowhere sname='李刚毅 '3、对照等值连接select sname,scorefrom A_studentinfo,A_studentcourseand sname='李刚毅 '七、补充提高1、盘问“张三〞比“王三〞入学早几年select A.sname as 姓名 ,year(A.enrollment) asB.sname as 姓名 ,year(B.enrollment) as 入学时间入学时间,,datediff(year,A.enrollment,B.enrollment) as年差from A_studentinfo A,A_studentinfo Bwhere A.sname=' 张三 'and B.sname='王三 '2、盘问所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20 岁,每个班的年龄之和大于60 岁select class as 班级 ,sum(2021-yearofbirth) as 年龄和from A_studentinfowhere (2021-yearofbirth) >20group by classhaving sum(2021-yearofbirth)>60order by class3、从学生表中盘问第 2 到 5 条数据〔以学号排序〕select top 4 *from a_studentinfowhere sno not in(select top 1 snofrom a_studentinfoorder by sno)order by sno4、计算每种产品的节余库存量表 1,为产品进货表,产品名称 name[char(10)] ,产品数量 amount[int] 表 2,为产品出货表,产品名称 name[char(10)] ,产品数量 amount[int]业务逻辑:表 1 储藏产品的总进货量,表 2储藏每种产品每次的出货量,如产品 A 进货为 100,出货了 3 次,每次分别为 10、 20、 30,那么 A 产品的库存就为40表 A1|表 A2---------------------------------|---------------------------name amount|name amountA100|A10B100|A20|A30|B10|B40--方法 1--建立视图create view A2Sumasselect name,sum(amount) as thesumfrom A2group by name--关系盘问from A1,A2Sum--方法 2select ,A1.amount-A2Table.A2amount as stocks--方法 3--定义单个产品变量declare @aa int(select sum(amount)from A2where name='A'group by name)--计算单个产品节余select name,amount-@aa as leavefrom A1where name='A'5、盘问学生表,在结果中将性别为“男〞的显示为“先生〞,将性别为“女〞的显示为“女士〞,否那么显示为空。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 基础练习题及答案【幻天火焰】目录一、单表查询练习 (1)二、聚合函数练习 (3)三、分组查询练习 (3)四、嵌套查询练习 (4)五、联接查询练习 (6)六、外联接查询 (7)七、补充提高 (7)一、单表查询练习1、查询<学生信息表>,查询学生"张三"的全部基本信息Select *from A_studentinfowhere sname='张三'2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息Select *from A_studentinfowhere sname='张三'or sname='李四'3、查询<学生信息表>,查询姓"张"学生的基本信息Select *from A_studentinfowhere sname like '张%'4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息Select *from A_studentinfowhere sname like '%四%'5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select *from A_studentinfowhere sname like '李_强'6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
Select *from A_studentinfowhere sname like '张%'or sname like '李%'7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province='北京'8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息Select *from A_studentinfowhere province in ('北京','上海','新疆','山东')9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province !='北京'10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select *from A_studentinfoorder by sex,province,class11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份select distinct province as 省份from A_studentinfo12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2008-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2003-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量from A_studentinfowhere enrollment between '1998' and '2003'4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩Select avg(score) as 平均成绩from A_studentcoursewhere sno='S001'5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩select sum(score) as 总成绩from A_studentcoursewhere sno ='S001'6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩select max(score) as 最高成绩from A_studentcoursewhere cno='C001'7、统计<学生信息表>,查询所有学生中的最大年龄是多少select 2009-min(yearofbirth) as 最大年龄from A_studentinfo三、分组查询练习1、统计<学生选修信息表>,统计每个课程的选修人数select cno,count(*) as 学生数量from A_studentcoursegroup by cno2、统计<学生选修信息表>,统计每个同学的总成绩select sno,sum(score) as 总成绩from A_studentcoursegroup by sno3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序select class as 班级,sex as 性别, count(*) as 人数from A_studentinfogroup by class,sexorder by class4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序Select cno,avg(score) as 平均成绩from A_studentcoursegroup by cnoorder by avg(score) desc5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号Select sno as 不及格学生学号from A_studentcoursewhere score<60group by snohaving count(*)>16、统计<学生信息表>,统计每个班级中的最大年龄是多少select class as 班级, 2008-min(yearofbirth) as 最大年龄from A_studentinfogroup by class四、嵌套查询练习1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩select sum(score) as 高等数学总成绩from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject='高等数学')2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩select score,cnofrom A_studentcoursewhere sno='S001'and score =(select max(score)from A_studentcoursewhere sno ='S001')思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和select sum(score) as 数据库技术总成绩from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject='数据库技术')and sno in(select snofrom A_studentinfowhere class='2')4、用子查询实现,查询3班"张三"同学的"测试管理"成绩select scorefrom A_studentcoursewhere cno=(select cnofrom A_courseinfowhere subject='测试管理')and sno in(select snofrom A_studentinfowhere class='3'and sname='张三')五、联接查询练习1、查询"张三"的各科考试成绩,要求显示姓名、课程号和成绩select sname as 姓名,cno as 课程号,score as 成绩from A_studentinfo,A_studentcoursewhere A_studentinfo.sno=A_studentcourse.snoand sname='张三'2、查询"张三"的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩select sname as 姓名,cno as 课程号,score as 成绩from A_studentinfo,A_studentcoursewhere A_studentinfo.sno=A_studentcourse.snoand sname='张三'and score is null3、查询"张三"的各门课程成绩,要求显示姓名、课程名称和成绩select sname as 姓名,subject as 课程名称,score as 成绩from A_studentinfo,A_courseinfo,A_studentcoursewhere A_studentcourse.sno=A_studentinfo.snoand A_o=A_oand A_studentinfo.sname='张三'4、查询3班"张三"的"测试管理"成绩,要求显示姓名、成绩select sname as 姓名,score as 成绩from A_studentcourse,A_courseinfo,A_studentinfowhere A_o=A_oand A_studentcourse.sno=A_studentinfo.snoand subject='测试管理'and class='3'and sname='张三'5、查询所有2000年以前入学的,各班男生的各科考试平均成绩select class as 班级,avg(score) as 男生平均成绩from A_studentcourse,A_courseinfo,A_studentinfowhere A_o=A_oand A_studentcourse.sno=A_studentinfo.snoand sex='男'and enrollment<'2000-01-01'group by class六、外联接查询查询李坚强所有课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:('S009','S010','S011') 1、使用左联接select A_studentinfo.sno as 学生表学号,sname as 姓名,A_studentcourse.sno as 成绩表学号, cno as 课程号,score as 成绩from A_studentinfoleft join A_studentcourseon A_studentinfo.sno=A_studentcourse.snowhere sname='李坚强'2、使用右联接select A_studentinfo.sno as 学生表学号,sname as 姓名,A_studentcourse.sno as 成绩表学号, cno as 课程号,score as 成绩from A_studentcourseright join A_studentinfoon A_studentinfo.sno=A_studentcourse.snowhere sname='李坚强'3、对比等值连接select sname,scorefrom A_studentinfo,A_studentcoursewhere A_studentinfo.sno=A_studentcourse.snoand sname='李坚强'七、补充提高1、查询“张三”比“王三”入学早几年select A.sname as 姓名,year(A.enrollment) as 入学时间,B.sname as 姓名,year(B.enrollment) as 入学时间,datediff(year,A.enrollment,B.enrollment) as 年差from A_studentinfo A,A_studentinfo Bwhere A.sname='张三'and B.sname='王三'2、查询所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20岁,每个班的年龄之和大于60岁select class as 班级,sum(2008-yearofbirth) as 年龄和from A_studentinfowhere (2008-yearofbirth) >20group by classhaving sum(2008-yearofbirth)>60order by class3、从学生表中查询第2到5条数据(以学号排序)select top 4 *from a_studentinfowhere sno not in(select top 1 snofrom a_studentinfoorder by sno)order by sno4、计算每种产品的剩余库存量表1,为产品进货表,产品名称name[char(10)],产品数量amount[int]表2,为产品出货表,产品名称name[char(10)],产品数量amount[int]业务逻辑:表1存储产品的总进货量,表2存储每种产品每次的出货量,如产品A进货为100,出货了3次,每次分别为10、20、30,那么A产品的库存就为40表A1 | 表A2---------------------------------|---------------------------name amount | name amountA 100 | A 10B 100 | A 20| A 30| B 10| B 40--方法1--建立视图create view A2Sumasselect name,sum(amount) as thesumfrom A2group by name--关联查询select ,A1.amount-A2Sum.thesumfrom A1,A2Sumwhere =--方法2select ,A1.amount-A2Table.A2amount as stocksfrom A1,(select name,sum(amount) as A2amount from A2 group by name) as A2Tablewhere =--方法3--定义单个产品变量declare @aa int(select sum(amount)from A2where name='A'group by name)--计算单个产品剩余select name,amount-@aa as leavefrom A1where name='A'5、查询学生表,在结果中将性别为“男”的显示为“先生”,将性别为“女”的显示为“女士”,否则显示为空。