sql练习题+答案

合集下载

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。

学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。

2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。

2查询姓名中第2个字为“明”字的学⽣学号、性别。

3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。

90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。

SQL语句练习及答案

SQL语句练习及答案

sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。

select sname from student where sname like “欧阳__‟;2.查询名字中第2个字为"阳"字的学生的姓名和学号。

select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。

select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。

select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。

select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

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

select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。

select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。

select sname from student where sdept= 'cs' and sage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

sql考试题及答案

sql考试题及答案

sql考试题及答案SQL考试题及答案一、选择题(每题2分,共20分)1. 下列哪个SQL语句用于查询数据?A. SELECTB. INSERTC. UPDATED. DELETE答案:A2. 以下哪个SQL语句用于删除表中的数据?A. DROP TABLEB. DELETE FROMC. TRUNCATE TABLED. ALTER TABLE答案:B3. SQL中的主键约束是什么?A. UNIQUEB. PRIMARY KEYC. FOREIGN KEYD. CHECK答案:B4. 以下哪个函数用于计算字符串的长度?A. CONCAT()B. SUBSTRING()C. LENGTH()D. UPPER()答案:C5. 以下哪个语句用于添加新的数据表?A. CREATE DATABASEB. CREATE TABLEC. ALTER TABLED. DROP TABLE答案:B6. SQL中的LIKE语句用于什么?A. 排序B. 条件搜索C. 聚合数据D. 连接表答案:B7. 以下哪个语句用于修改表结构?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. TRUNCATE TABLE答案:B8. SQL中的GROUP BY语句用于什么?A. 排序结果B. 聚合数据C. 过滤数据D. 连接表答案:B9. 以下哪个语句用于删除数据库?A. DROP TABLEB. DROP DATABASEC. DELETE FROMD. TRUNCATE TABLE答案:B10. SQL中的INNER JOIN用于什么?A. 内连接B. 外连接C. 全连接D. 交叉连接答案:A二、填空题(每空2分,共20分)1. SQL中的______语句用于插入数据到表中。

答案:INSERT INTO2. 要查询所有列,可以使用SQL中的______关键字。

答案:*3. SQL中的______语句用于删除表。

sql测试题带 答案

sql测试题带 答案

01、mybatis案例-需求分析02、mybatis案例-环境准备03、查询-查询所有04、查询-结果映射【多选题】关于实体类属性名和数据库表列名不一致情况,下列解决方案正确的有(CD)A、定义SQL时,结果集使用别名可以解决上述问题,但是复用性强。

B、如果有<ResultMap id="baseResultMap" type="com.itheima.pojo.Brand">,那么<select id="selectAll" resultType="baseResultMap">可以解决上述问题C、如果有<ResultMap id="baseResultMap" type="com.itheima.pojo.Brand">,那么<select id="selectAll" resultMap="baseResultMap">可以解决上述问题D、可以在Mybatis核心配置文件中开启驼峰命名的方式解决上述问题。

05、查询-查询详情【多选题】关于参数占位符和参数类型说法正确的有(AD)A、在标签中使用parameterType属性指定参数类型,也可以省略不写。

B、在标签中使用parameterType属性指定参数类型,必须要写。

C、#{}和${}都可以作为参数的占位符,它们之间没有区别。

D、#{}作为参数的占位符,执行SQL时,会将#{}占位符替换为?防止SQL注入漏洞,而使用${}作为参数占位符不会。

06、添加-添加品牌07、添加-添加后返回自增主键【多选题】下列哪些需求需要使用添加后的自增主键(BC)A、小李在京东上架了一款商品,添加完商品之后需要返回自增的主键。

B、小李在京东提交了一个订单,添加订单信息需要返回自增主键,因为在后续添加订单项时要使用到刚刚的订单id。

sql考试题及答案

sql考试题及答案

sql考试题及答案一、选择题1. SQL是什么意思?a. Structured Query Languageb. Sequential Query Languagec. Structured Question Languaged. Sequential Question Language答案:a. Structured Query Language2. 下列哪个关键词用于在SQL中创建新表?a. UPDATEb. INSERTc. CREATEd. SELECT答案:c. CREATE3. 在SQL中,用于查找符合一定条件的记录的关键词是?a. SELECTb. UPDATEc. INSERTd. DELETE答案:a. SELECT4. 在SQL中,如何在表中添加新的数据?a. INSERT INTOb. ADD INTOc. UPDATEd. MODIFY答案:a. INSERT INTO5. 在SQL中,如何删除表中的数据?a. DELETE ROWb. REMOVEc. DELETE FROMd. ERASE FROM答案:c. DELETE FROM二、填空题1. SQL中用于选择所有列的通配符是______。

答案:*2. SQL中用于指定唯一键的关键词是______。

答案:PRIMARY KEY3. SQL中用于按照某一列对结果进行排序的关键词是______。

答案:ORDER BY4. SQL中用于更新数据的关键词是______。

答案:UPDATE5. SQL中用于计算某一列的总和的函数是______。

答案:SUM三、简答题1. 请解释SQL中的JOIN操作。

答案:JOIN操作用于连接两个或多个表,基于表之间的关联关系获取相关数据。

常用的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。

2. 什么是SQL注入?如何防止SQL注入?答案:SQL注入是一种恶意的攻击方式,通过在用户输入的数据中插入恶意的SQL代码,以获取、修改或删除数据库中的数据。

sql笔试题及答案

sql笔试题及答案

sql笔试题及答案1. 题目1:查询员工表中工资大于5000的员工信息,并按照工资降序排列。

答案:SELECT * FROM 员工表 WHERE 工资 > 5000 ORDER BY 工资DESC;解析:使用SELECT语句查询员工表中满足工资大于5000的记录,并使用ORDER BY子句按照工资字段降序排列。

2. 题目2:统计订单表中每个客户的订单总数,并按照订单总数升序排列。

答案:SELECT 客户, COUNT(订单编号) AS 订单总数 FROM 订单表GROUP BY 客户 ORDER BY 订单总数 ASC;解析:使用SELECT语句查询订单表中每个客户的订单总数,并使用GROUP BY子句按照客户字段进行分组,COUNT函数用于统计订单编号,AS关键字用于为统计结果起别名,ORDER BY子句按照订单总数字段升序排列。

3. 题目3:查询学生表中不重复的学生姓名和对应的年龄。

答案:SELECT DISTINCT 学生姓名, 年龄 FROM 学生表;解析:使用SELECT DISTINCT语句查询学生表中不重复的学生姓名和对应的年龄。

4. 题目4:查询订单表中订单金额最大的订单信息。

答案:SELECT * FROM 订单表 WHERE 订单金额 = (SELECT MAX(订单金额) FROM 订单表);解析:使用SELECT语句查询订单表中订单金额等于最大订单金额的订单信息,使用子查询和MAX函数找出最大订单金额。

5. 题目5:查询销售表中每个月份的总销售金额。

答案:SELECT DATE_FORMAT(销售日期, '%Y-%m') AS 月份, SUM(销售金额) AS 总销售金额 FROM 销售表 GROUP BY DATE_FORMAT(销售日期, '%Y-%m');解析:使用SELECT语句查询销售表中每个月份的总销售金额,使用DATE_FORMAT函数将销售日期格式化成年月的形式,并使用SUM函数统计销售金额,使用GROUP BY子句按照月份进行分组。

3-SQL语句练习题参考答案

3-SQL语句练习题参考答案

标准SQL语言一、选择题1、下面关于SQL标准的叙述中,不正确的是(B )。

A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。

B.SQL语言是一种高度过程化的语言。

C.SQL标准规定数据库是按三级模式结构构建。

D.SQL语言是关系型数据库的标准语言。

E.SQL语言是面向集合的语言。

2、SQL语言中,修改基本表结构的语句是( B )。

A.UPDATE B.ALTER C.DROP D.CREATE3、SQL语言中,删除基本表结构的语句是( C )。

A.DELETE B.ALTER C.DROP D.CREATE4、下面关于“视图”的叙述中,不正确的是( C )。

A.视图是一种“虚表”,它的数据被存放在基本表中。

B.视图提供了逻辑数据独立性。

C.不能通过视图来更新数据库中的数据。

D.视图能提供对数据的安全保护。

5、下面关于SELECT语句的叙述中,不正确的是(C)。

A.SELECT产生的结果是一个集合。

B.HA VING子句必须与GROUP BY子句一起使用。

C.可以省略FROM子句。

D.可以省略WHERE子句。

二、填空题1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。

2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。

3、向表中插入元组时,主键的值不能取(NULL )值。

4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。

5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。

三、判断题1、SQL语言是面向集合操作的语言。

√2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。

×3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。

√4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。

(完整版)SQL复习题(附部分答案)

(完整版)SQL复习题(附部分答案)

一、单选题1.根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项:(___)A.只存在一对多的实体关系,以图形方式来表示。

B.以二维表格结构来保存数据,在关系表中不允许有重复行存在。

C.能体现一对多、多对多的关系,但不能体现一对一的关系。

D.关系模型数据库是数据库发展的最初阶段。

答案[B]2、在“连接”组中有两种连接认证方式,其中在(___)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。

A、Windows身份验证B、SQL Server 身份验证C、以超级用户身份登录时D、其他方式登录时答案[B]3、关系数据库中,主键是(___),当运用Transact-SQL语句创建主键时,可以是(__)。

⑴ A、为标识表中唯一的实体 B、创建唯一的索引,允许空值C、只允许以表中第一字段建立D、允许有多个主键的⑵ A、create table table1(column1 char(13) not null primary key,column2 int not on primary key;B、alter table table1 with nocheck addconstraint [PK_table1] primary key nonclustered ( column1) on primary;C、alter table table1 column1 primary key ;答案[ A C]4、视图是一种常用的数据对象,可以简化数据库操作,当使用多个数据表来建立视图时,不允许在该语句中包括(___)等关键字。

A、ORDER BY,COMPUTEB、ORDER BY,COMPUTE,COMPUTR BYC、ORDER BY,COMPUTE BY,GROUP BYD、GROUP BY,COMPUTE BY答案[B ]5、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(_1_),使用关键字(_2_)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(_3__),如果在SELECT语句中使用聚合函数时,可以在后面使用(_4_)。

(完整版)sql练习题+答案

(完整版)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岁以下的学生姓名及其年龄。

SQL45题及答案

SQL45题及答案

SQL45题及答案DC)SELECT DISTINCT 仓库号FROM 职工WHERE 工资NOT 1210D)SELECT 仓库号FROM 职工WHERE 工资>1210E)SELECT DISTINCT 仓库号FROM 职工WHERE 工资>1210(49)给出在仓库”CHK1”或”CHK2”工作,并且工资少于1250元的职工号A)SELECT 职工号FROM 职工WHERE 仓库号=”CHK1” OR 仓库号=”CHK2”B)SELECT 职工号FROM 职工WHERE 工资<1250 AND (仓库号=”CHK1”OR 仓库号=”CHK2”)C)SELECT 职工号FROM 职工WHERE 工资<1250 AND (仓库号=”CHK1” AND 仓库号=”CHK2”)D)SELECT 职工号FROM 职工WHERE 工资<1250 AND (仓库号=”CHK1”OR ”CHK2”)(50)找出工资多于1230元的职工号和他们所在的城市的SQL命令为A) SELECT职工号,城市FROM 职工,仓库WHERE (工资>1230) AND (职工.仓库号=仓库.仓库号)B)SELECT职工号,城市FROM 职工,仓库WHERE (工资>1230)C) SELECT职工号,城市FROM 职工,仓库WHERE (工资>1230) OR (职工.仓库号=仓库.仓库号)D)SELECT职工号,城市FROM 仓库WHERE (工资>1230) AND (职工.仓库号=仓库.仓库号)(51)找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市的SQL命令为A) SELECT * FROM 仓库,职工WHERE (面积>400) AND (职工.仓库号=仓库.仓库号)B)SELECT 职工号,城市WHERE (面积>400) AND (职工.仓库号=仓库.仓库号)C) SELECT职工号,城市FROM 仓库,职工WHERE (面积>400) OR (职工.仓库号=仓库.仓库号)D) SELECT职工号,城市FROM 仓库,职工WHERE (面积>400) AND (职工.仓库号=仓库.仓库号)(52)哪些城市至少有一个仓库的职工工资为1250元?A) SELECT 城市FROM 仓库WHERE 仓库号IN (INDEX仓库号FROM职工WHERE 工资=1250)B)SELECT 城市FROM 仓库WHERE 仓库号IN (SELECT仓库号FROM职工)C) SELECT 城市FROM 仓库WHERE 仓库号IN (SELECT 仓库号FROM职工WHERE 工资=1250)D) SELECT 城市FROM 仓库WHERE 仓库号IN (SELECT 仓库号FROM 职工工资=1250)(53)查询所有职工的工资都多于1210元的仓库的信息的SQL命令为A) SELECT * FROM 仓库WHERE 仓库号WHERE 工资<=1210B)SELECT * FROM 仓库WHERE 仓库号NOT IN (SELECT仓库号FROM职工WHERE 工资<=1210)C) SELECT * FROM 仓库WHERE 仓库号IN (SELECT仓库号FROM职工WHERE 工资<=1210)D) SELECT * FROM 仓库WHERE 仓库号EXISTS (SELECT仓库号FROM职工WHERE 工资<=1210)(54)找出和职工Z4挣同样工资的所有职工的SQL命令为A) SELECT 职工号FROM 职工WHERE 工资=(SELECT 工资FROM 职工WHERE 职工号=’Z4’)B)SELECT 职工号FROM 职工WHERE 工资=’Z4’C) SELECT 职工号FROM 职工IN (SELECT 工资FROM 职工WHERE 职工号=’Z4’)D) SELECT 职工号WHERE 工资=(SELECT 工资FROM 职工WHERE 职工号=’Z4’) (55)检索出工资在1220到1240元范围内的职工信息的SQL命令为A) SELECT * FROM 职工WHERE 工资1220--1240B)SELECT * FROM 职工WHERE BETWEEN 1220<工资<1240C) SELECT * FROM 职工WHERE 工资BETWEEN 1220 AND 1240D) SELECT * FROM 职工WHERE 工资BETWEEN 1220 .AND. 1240(56)从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息A) SELECT * FROM 供应商WHERE 供应商名LIKE “*公司”B) SELECT * FROM 供应商WHERE 供应商名LIKE “_公司”C) SELECT * FROM 供应商WHERE 供应商名LIKE “_ _公司”D) SELECT * FROM 供应商WHERE 供应商名LIKE “%公司”(57)找出不在北京的全部供应商信息A) SELECT * FROM 供应商WHERE 地址=”北京”B) SELECT * WHERE 地址! =”北京”C) SELECT * FROM 供应商WHILE 地址<>”北京”D) SELECT * FROM 供应商WHERE 地址! =”北京”(58)按职工的工资值升序检索出全部职工信息A) SELECT * FROM 职工GROUP BY 工资B) SELECT * FROM 职工INDEX BY 工资C) SELECT * FROM 职工ORDER BY 工资D) SELECT * FROM 职工BY 工资(59)选按仓库号排序,再按工资排序并输出全部职工信息A) SELECT * FROM 职工ORDER BY 仓库号,工资B) SELECT * FROM 职工INDEX BY仓库号,工资C) SELECT * FROM 职工ORDER BY仓库号+STR(工资)D) SELECT * FROM 职工GROUP BY 仓库号,工资(60)找出供应商所在地的数目A)COUNT(DISTINCT地址) FROM 供应商B) SELECT COUNT(地址) FROM 供应商C) SELECT SUM(DISTINCT地址) FROM 供应商D) SELECT COUNT(DISTINCT地址) FROM 供应商(61)求支付的工资总数A) SELECT MAX(工资) FROM 职工B) SELECT COUNT (工资) FROM 职工C) SELECT SUM(工资) FROM 职工D) SELECT SUM(工资)(62)求北京和上海的仓库职工的工资的总和A) SELECT SUM(工资) FROM 职工WHERE 仓库号IN;(SELECT仓库号FROM 仓库WHERE 城市=”北京” AND城市=”上海”)B) SELECT SUM(工资) FROM 职工WHERE 仓库号IN;(SELECT仓库号FROM 仓库WHERE 城市=”北京” OR ”上海”)C) SELECT SUM(工资) FROM 职工WHERE 仓库号IN;(SELECT仓库号WHERE 城市=”北京”OR城市=”上海”)D) SELECT SUM(工资) FROM 职工WHERE 仓库号IN;(SELECT仓库号FROM 仓库WHERE 城市=”北京” OR城市=”上海”)(63)求所有职工的工资都多于1210的仓库的平均面积A) SELECT A VG(面积) FROM 仓库WHERE 仓库号NOT IN;(SELECT仓库号FROM 职工WHERE 工资>1210)B) SELECT SUN(面积) FROM 仓库WHERE 仓库号NOT IN;(SELECT仓库号FROM 职工WHERE 工资>1210)C) SELECT A VG(面积) FROM 仓库WHERE 仓库号NOT IN;(SELECT仓库号FROM 职工WHERE 工资<=1210)D) SELECT COUNT(面积) FROM 仓库WHERE 仓库号NOT IN;(SELECT仓库号FROM 职工WHERE 工资<=1210)(64)求在CHK2仓库工作的职工的最高工资值A) SELECT MAX(工资) FROM 职工WHERE 仓库号=”CHK2”B) SELECT MIN(工资) FROM 职工WHERE仓库号=”CHK2”C) SELECT HIGH(工资) FROM 职工WHERE 仓库号=CHK2D) SELECT MAX(工资) FROM 职工WHERE 仓库号=CHK2(65)求每个仓库的职工的平均工资A) SELECT 仓库号,A VG(工资) FROM 职工ORDER BY 仓库号B) SELECT 仓库号,SUM(工资) FROM 职工GROUP BY 仓库号C) SELECT 仓库号,A VG(工资) FROM 职工GROUP BY 仓库号D) SELECT 仓库号,COUNT(工资) FROM 职工GROUP BY 仓库号(66)求至少有两个职工的每个仓库的平均工资A) SELECT 仓库号,COUNT(*),A VG(工资) FROM 职工ORDER BY 仓库号HA VING COUNT(*)>=2B) SELECT 仓库号,COUNT(*),A VG(工资) FROM 职工GROUP BY 仓库号HA VING COUNT(*)>=2C) SELECT 仓库号,COUNT(*),A VG(工资)FROM 职工GROUP BY 仓库号WHERE COUNT(*)>=2D) A VERAGE 仓库号,COUNT(*),A VG(工资) FROM 职工GROUP BY 仓库号HA VING COUNT(*)>=2(67)找出尚未确定供应商的订单信息A) ORDER * FROM 订购单WHERE 供应商号IS NULLB) SELECT * FROM 订购单WHERE 供应商号NULLC) SELECT * FROM 订购单WHERE 供应商号IS=NULLD) SELECT * FROM 订购单WHERE 供应商号IS NULL(68)列出已经确定了供应商的订购单信息A) SELECT * FROM 订购单WHERE 供应商号IS NOT NULLB) SELECT * FROM 订购单WHERE 供应商号IS NULLC) SELECT * FROM 订购单WHERE 供应商号NOT NULLD) SELECT * FROM 订购单WHERE 供应商号NULL(69)检索哪些仓库中还没有职工的仓库的信息A) SELECT * FROM 仓库WHERE EXISTS (SELECT* FROM职工WHERE 仓库号=仓库.仓库号)B) SELECT * FROM 仓库WHERE NOT EXISTS (SELECT* FROM职工WHERE 仓库号=仓库.仓库号)C) SELECT * FROM 仓库WHERE NOT EXISTS (SELECT* FROM职工WHERE 仓库号<>仓库.仓库号)D) SELECT * FROM 仓库WHERE NOT EXISTS (WHERE 仓库号<>仓库.仓库号) (70)检索哪些仓库中至少已经有一个职工的仓库的信息A) SELECT * FROM 仓库WHERE EXISTS (SELECT* FROM职工WHERE 仓库号=仓库.仓库号)B) SELECT * FROM 仓库WHERE仓库号NOT IN (SELECT仓库号FROM职工)C) SELECT * FROM 仓库WHERE 仓库号IN (WHERE 仓库号FROM职工)D) SELECT * FROM 仓库WHERE 仓库号NOT IN(WHERE 仓库号FROM职工)二、(2)—(12)使用的数据如下:当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒7.48 上海600601 方正科技15.20 上海600602 广电电子10.40 上海600603 兴业房产12.76 上海600604 二纺机9.96 上海600605 轻工机械14.59 上海000001 深发展7.48 深圳000002 深万科12.50 深圳(2)查询交易所在”深圳”的有那些股票的信息用下列哪条命令?A) SELECT ALL FROM stock B) SELECT * FROM stock WHERE 交易所=“深圳”C) SELECT * WHERE 交易所=“深圳”D) SELECT ALL FROM stock WHERE 交易所=“深圳”(3)执行SELECT MAX(单价)FROM stock 命令后,显示A) 7.48 B) 12.50 C) 15.20 D) 10.40(4)命令SELECT * FROM stock WHERE股票名称=“青岛啤酒”的功能是A)查询青岛啤酒这支股票的所有信息B)查询青岛啤酒这支股票的单价C) 查询所有股票的所有信息D)查询青岛啤酒这支股票的股票代码(5)查询单价超过10元的股票的所有的信息用下列哪项命令?A) SELECT * FROM stock B) SELECT * FROM stock WHERE 单价>10C) SELECT ALL FROM stock WHERE单价>10D) LIST ALL(6)在此表中插入一条记录应使用哪条命令?A) INSERT INTO stock V ALUES(“000001”,“长江”,12.54,“成都”)B) INSERT V ALUES(“000001”,“长江”,12.54,“成都”)C) INSERT INTO stock SET(“000001”,“长江”,12.54,“成都”)D) INSERT TO stock V ALUES(“000001”,“长江”,12.54,“成都”)(7)查询股票名称与”电子”有关的记录应该用A) SELECT * FROM stock WHERE 股票名称=“电子”B) SELECT * FROM stock WHERE 股票名称LIKE“%电子%”C) SELECT * FROM stock WHERE 股票名称=“?电子”D) SELECT * FROM stock WHERE 股票名称=“?电子?”(8)按股票的单价值升序检索出全部的股票信息应该用A) SELECT * FROM stock WHERE ALLB) SELECT * FROM stock ORDER BY 单价C) SELECT * FROM stock ORDER BY 单价DESCD) SELECT * FROM stock GROUP BY 单价(9)检索出单价在10至15之间的所有股票的信息,应使用SQL语句A) SELECT * FROM stock WHERE 10<单价<10B) SELECT * FROM stock WHERE 单价BETWEEN 10 AND 15C) SELECT * FROM stock WHERE 单价>10 AND单价<15D) SELECT * WHERE 单价BETWEEN 10 AND 15(10)查看一共有多少支股票,应使用SQL语句A) SELECT SUN FROM stockB) SELECT SUN(*)FROM stockC) SELECT COUNT FROM stockD) SELECT COUNT(*)FROM stock (11)查看股票的最高和最低单价相差多少。

sql试题及答案

sql试题及答案

sql试题及答案一、单选题1. Microsoft公司的SQL Server2000数据库管理系统一般只能运行于()。

A. Windows平台B. UNIX平台C. LINX平台D. NetWare平台2. 当一条SELECT语句访问一张大表里的有限几行数据时,SQL Server2000通常会()。

A. 为数据加上页级锁B. 为数据加上行级锁C. 需要用户的干涉和参与D. 使用户独占数据库3. 当采用Windows认证方式登录数据库服务器时,SQL Server2000客户端软件会向操作系统请求一个()。

A. 信任连接B. 邮件集成C. 并发控制D. 数据转换服务4. 以下对SQL Server2000描述不正确的是()。

A. 支持XMLB. 支持用户自定义函数C. 支持邮件集成D. 支持网状数据模型5. 如果在SQL Server2000上运行一个非常大的数据库,为取得较好效果应选用安装()。

A. 企业版B. 标准版C. 个人版D. 开发版6. 提高SQL Server2000性能的最佳方法之一是()。

A. 增大硬盘空间B. 增加内存C. 减少数据量D. 采用高分辨率显示器7. SQL Server2000标准版不支持的操作系统是()。

A. Windows 2000 ServerB. Windows NT ServerC. Windows98D. Windows 2000 Advanced Server8. 如果希望完全安装SQL Server2000,则应选择()。

A. 典型安装B. 最小安装C. 自定义安装D. 仅连接9. 要想使SQL Server2000数据库管理系统开始工作,必须首先启动()。

A. SQL Server服务器B. 查询分析器C. 网络实用工具D. 数据导入和导出程序10. 用于配置客户端网络连接的工具是()。

A. 企业管理器B. 客户端网络实用工具C. 查询分析器D. 联机帮助文档11. SQL Server2000的物理存储主要包括3类文件()。

sql考试题及答案

sql考试题及答案

sql考试题及答案一、选择题1. 在SQL中,用于查询一个表中的所有记录的关键字是什么?A. SELECT ALLB. SELECT *C. SELECT DISTINCTD. SELECT TOP 10答案:B2. 下列哪个SQL语句用于添加新的数据行到表中?A. INSERT INTOB. ADD INTOC. CREATE INTOD. NEW INTO答案:A3. 在SQL中,用于删除表中的记录的关键字是什么?A. REMOVEB. DELETEC. ERASED. DROP答案:B4. 下列哪个函数用于计算字段中所有值的总和?A. COUNTB. SUMC. AVGD. MAX答案:B5. 如果你想更新表中的记录,应该使用哪个SQL语句?A. UPDATEB. ALTERC. MODIFYD. CHANGE答案:A二、填空题1. 在SQL中,________关键字用于从一个或多个表中选择数据。

答案:SELECT2. 要为表中的数据设置条件过滤,应使用________子句。

答案:WHERE3. 当需要对查询结果进行排序时,可以使用________关键字。

答案:ORDER BY4. 如果需要对表中的数据进行分组,应使用________关键字。

答案:GROUP BY5. 为了对分组后的结果进行筛选,可以使用________子句。

答案:HAVING三、简答题1. 请简述SQL中的主键和外键的区别。

答案:主键是表中用于唯一标识每条记录的字段,它不允许重复值和NULL值。

外键则是一个表中的字段,它是另一个表的主键的引用,用于建立表之间的联系。

外键可以有重复值,也可以为NULL。

2. 解释SQL中的JOIN操作。

答案:JOIN操作是SQL中用于结合两个或多个表中的数据的查询操作。

通过JOIN,可以根据相关字段将不同表中的记录连接起来,以便进行更复杂的数据分析和查询。

3. 什么是SQL中的事务?答案:事务是SQL中一组操作的集合,这些操作要么全部成功执行,要么全部不执行。

SQL语言习题参考答案

SQL语言习题参考答案

第3章 SQL语言习题参考答案1.试述SQL语言的特点。

(85页)答:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。

2.试述SQL的定义功能。

(87页)答:SQL的数据定义功能包括定义表、定义视图和定义索引3.用SQL语句建立第二章习题5中的四个表。

S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY);供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:CREATE TABLE S(Sno C(2) UNIQUE,Sname C(6) ,Status N(2),City C(4))零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2), WEIGHT I(2))工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成:CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8), CITY C(4))供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2), QTY N(2))4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:(1)求供应工程J1零件的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO=’J1’(2)求供应工程J1零件P1的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'(3)求供应工程J1零件为红色的供应商号码SNO:SELECT SNO FROM SPJ,P WHERE JNO='J1' AND = AND COLOR='红'(4)求没有使用天津供应商生产的红色零件的工程号JNO:SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。

SQL练习及答案

SQL练习及答案

第1章数据库系统与数据库概念设计思考与练习一、选择题1.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A )。

A.DBS包括DB和DBMSB.DBMS包括DB和DBSC.DB包括DBS和DBMSD.DBS就是DB,也就是DBMS2.下面列出的数据库管理技术发展的3个阶段中,没有专门的软件对数据进行管理的阶段是(D)。

I.人工管理阶段II.文件系统阶段III.数据库阶段A.I 和IIB.只有IIC.II 和IIID.只有I3.描述数据库全体数据的全局逻辑结构和特性的是(A )。

A.模式B.内模式C.外模式4.要保证数据库的数据独立性,需要修改的是(C )。

A.模式与外模式B.模式与内模式C.三级模式之间的两层映射D.三级模式5.E-R方法的三要素是(C)。

A.实体、属性、实体集B.实体、键、联系C.实体、属性、联系D.实体、域、候选区6.概念设计的结果是(B )。

A.一个与DBMS相关的要领模型B.一个与DBMS无关的概念模型C.数据库系统的公用视图数据库应用技术(SQL Server 2005)D.数据库系统的数据字典7.下列四项中,不属于数据库系统特点的是(C )。

A.数据共享B.数据完整性C.数据冗余度高D.数据独立性高第2章关系模型与数据库逻辑设计思考与练习一、选择题1.关系数据模型是目前最重要的一种数据模型,它的三个要素是(A )。

A.实体完整性、参照完整性、用户自定义完整性B.数据结构、关系操作、完整性约束C.数据增加、数据修改、数据查询D.外模式、模式、内模式2.一个关系中,能唯一标识元组的属性集称为关系的(B)。

A.副键B.关键字C.从键D.参数3.现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位)、医疗(患者编号,医生编号,医生姓名,诊断日期,诊断结果),其中,医疗关系中的外码是(A )。

A.患者编号B.患者姓名C.患者编号和患者姓名D.医生编号和患者编号4.关系数据库管理系统应能实现的专门关系运算包括(B )。

sql经典练习题库(附答案)

sql经典练习题库(附答案)

SQL练习题库表结构Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表试题:1、查询“0001”课程比“C002”课程成绩高的所有学生的学号;Select s# from scWhere c#='0001' and score>any(select score from sc c#='0002')2、查询平均成绩大于60分的同学的学号和平均成绩;select s#,avg(score) from SCgroup by s#having avg(score)>603、查询所有同学的学号、姓名、选课数、总成绩;select student.s#,student.sname,count(sc.c#)as 选课数,sum(score)总成绩from student,scwhere student.s#=sc.s#group by student.s#,student.sname4、查询姓“张”的老师的个数;select count(*)人数from teacherwhere tname like'张%'5、查询没学过“叶平”老师课的同学的学号、姓名;select student.s#,student.sname from student,course,teacher,scwhere student.s#=sc.s# and course.t#=teacher.t# and teacher.t# not in(select t# from teacher where tname='张丽芬') group by student.s#,student.sname6、查询学过“0001”并且也学过编号“0002”课程的同学的学号、姓名;select sc.s#,sname from sc,studentwhere sc.c# = '0001' and student.s# = sc.s# and sc.s# in (select s# from sc where sc.c# = '0002')--并(两表值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'unionselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'--交(有相同值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'intersectselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'--差(不同值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'exceptselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select student.s#,student.sname from student,course,teacher,scwhere student.s#=sc.s# and course.t#=teacher.t# and teacher.t# in(select t# from teacher where tname='张丽芬')group by student.s#,student.sname8、查询课程编号“001”的成绩比课程编号“002”课程低的所有同学的学号、姓名;select student.s#,sname,score from student,scwhere student.s#=sc.s# and score in(( select score from sc where c#='0001' )<all( select score from sc where c#='0002' )) 9、查询所有课程成绩小于60分的同学的学号、姓名;select student.s#,sname from studentwhere s# in(select s# from sc where score<60)10、查询没有学全所有课的同学的学号、姓名;select student.s#,student.sname from student,scwhere student.s#=sc.s#group by student.s#,student.snamehaving count(c#)<(select count(c#) from course)11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select student.s#,student.sname from student,scwhere student.s#=sc.s# and c#=any(select c# from scwhere s#='1001')group by student.s#,student.sname12、查询至少学过学号为“0001”同学所有一门课的其他同学学号和姓名;Select sc.s#,sname from sc inner join student on sc.s#=student.s#Where c# in (select c# from sc where s#=’0001’)13、把“SC”表中“赵雁南”老师教的课的成绩都更改为此课程的平均成绩;update scset score=(select avg(sc.score) from sc,teacher,coursewhere sc.c#=course.c# and course.t#=teacher.t# and teacher.tname='赵雁南')where sc.c#=(select c# from course,teacher where course.t#=teacher.t# and tname='赵雁南' )14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select student.s#,sname from student,scwhere student.s#=sc.s# and sc.c#=all(select c# from sc where s#='1005') and student.s#<>'1005'15、删除学习“朱玉文”老师课的SC表记录;delete from scwhere c# in(select c# from sc where c# in (select c# from course,teacher where teacher.t#=course.t# and teacher.tname='朱玉文' ) )16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“0002”课程的同学学号、号课的平均成绩;insert into scvaluesselect s# from sc where s# not in (select s# from sc where c#='0002'select avg(score) as 平均成绩from sc where c#='0002'17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分select sc.s#,ame,sc.score,avg(score)as 平均成绩from sc inner join course on sc.c#=course.c#where sc.c# in(select c# from course where cname=any(select cname from course where cname in('计算机基础','Oracle','软件工程')))group by sc.s#,ame,sc.scoreorder by avg(score) descSELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0001') AS 计算机基础,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0002') AS Oracle,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0011') AS 软件工程,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM sc AS tGROUP BY S#ORDER BY avg(t.score) desc18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分select c# 课程ID,max(score) 最高分,min(score) 最低分from scgroup by c#19、按各科平均成绩从低到高和及格率的百分数从高到低顺序select c#, avg(score) from scwhere score>60group by c#20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(),马克思(),OO&UML (),数据库()21、查询不同老师所教不同课程平均分从高到低显示select course.t#,avg(sc.score) as 平均分from sc,coursewhere sc.c#=course.c#group by course.t#order by avg(sc.score) desc22、查询如下课程成绩第3 名到第6 名的学生成绩单:企业管理,马克思,UML,数据库[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩select student.s#,student.sname,sc.score,ame from student inner join sc on student.s#=sc.s#inner join course on sc.c#=course.c#where ame in('oracle','电路分析','计算机基础')order by ame,sc.score desc23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]select sc.c#,ame,count(*)人数from sc,coursewhere course.c#=sc.c#group by sc.c#,ame24、查询学生平均成绩及其名次select sc.s#,avg(score) from scgroup by sc.s#order by avg(score) desc25、查询各科成绩前三名的记录考虑成绩并列情况select s#,c# ,score from scwhere score in (select distinct top 3 score from scgroup by c#,score)order by score desc26、查询每门课程被选修的学生数select c# as 课程号,count(c#)as 选修人数from scgroup by c#order by count(c#) desc27、查询出只选修了一门课程的全部学生的学号和姓名select sc.s#,student.sname from sc inner join student on student.s#=sc.s#group by sc.s#,student.snamehaving count(c#)=128、查询男生、女生人数select ssex, count(*) as 总人数from studentgroup by ssex29、查询姓“张”的学生名单select sname from studentwhere sname like '张%'30、查询同名同性学生名单,并统计同名人数select ssex,count(*) from studentgroup by ssex31、同年出生的学生名单(注:Student表中Sage列的类型是datetime)32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列select c#,avg(score)平均成绩from scgroup by c#order by avg(score) asc33、查询平均成绩大于的所有学生的学号、姓名和平均成绩select top 1 student.s#,student.sname,avg(score)平均成绩from student inner join sc on student.s#=sc.s#group by student.s#,student.snameorder by avg(score) desc34、查询课程名称为“数据库”,且分数低于80的学生姓名和分数select student.sname,sc.score from sc,student,coursewhere student.s#=sc.s# and sc.c#=course.c# and ame='计算机基础' and sc.score<80group by student.sname,sc.score35、查询所有学生的选课情况;select student.s#,sname,c# from student left join sc on student.s#=sc.s#36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;select student.sname,ame,sc.score from student,sc,coursewhere student.s#=sc.s# and sc.c#=course.c# and sc.score>70order by score desc37、查询不及格的课程,并按课程号从大到小排列select c#,score from scwhere score<60order by c#38、查询课程编号为0001且课程成绩在70分以上的学生的学号和姓名;select student.s#,sname from sc,studentwhere c#='0001' and score>70 and student.s#=sc.s#39、求选了课程的学生人数select count(s#)人数from scwhere sc.score<>040、查询选修“oracle”课程的学生中,成绩最高的学生姓名及其成绩select top 1 student.sname,max(sc.score)成绩最高from student inner join sc on student.s#=sc.s# inner join course on sc.c#=course.c#where ame='oracle'group by student.snameorder by max(sc.score) desc41、查询各个课程及相应的选修人数select ame,count(sc.c#) as 选修人数from sc inner join course on sc.c#=course.c#group by ameorder by count(sc.c#) desc,ame asc42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 score FROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#44、统计每门课程的学生选修人数(超过人的课程才统计)。

sql测试题和答案.docx

sql测试题和答案.docx

sql测试题和答案# SQL测试题1. 基础查询题- 题目:编写一个SQL查询,从`employees`表中选择所有员工的姓名和员工ID。

- 答案:`SELECT name, employee_id FROM employees;`2. 条件查询题- 题目:从`orders`表中选择所有订单金额超过1000的订单。

- 答案:`SELECT * FROM orders WHERE order_amount > 1000;`3. 排序题- 题目:从`products`表中选择所有产品的名称和价格,并按价格降序排列。

- 答案:`SELECT name, price FROM products ORDER BY price DESC;`4. 聚合函数题- 题目:计算`sales`表中所有销售额的总和。

- 答案:`SELECT SUM(sales_amount) AS total_sales FROM sales;`5. 分组查询题- 题目:从`sales`表中按产品ID分组,并计算每个产品的总销售额。

- 答案:`SELECT product_id, SUM(sales_amount) AStotal_sales_per_product FROM sales GROUP BY product_id;`6. 连接查询题- 题目:查询`customers`表和`orders`表,找出所有客户的姓名和他们下过的订单数量。

- 答案:`SELECT , COUNT(o.order_id) AS order_count FROM customers c JOIN orders o ON c.customer_id =o.customer_id GROUP BY ;`7. 子查询题- 题目:找出`employees`表中工资高于平均工资的员工的姓名和工资。

- 答案:`SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);`8. 多表连接查询题- 题目:查询`employees`表和`departments`表,找出所有员工的姓名、部门名称和部门ID。

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)约束。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(一)新建以下几个表
student(学生表):
其中约束如下:
(1)学号不能存在相同的
(2)名字为非空
(3)性别的值只能是’男’或’女’
(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系
(5)出生日期为日期格式
(6)年龄为数值型,且在0~100之间
cs(成绩表):
其中约束如下:
(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0~100之间,可以不输入值
course(课程表)
其约束如下:
(1)课程号(cno)不能有重复的
(2)课程名(cname)非空
(三)针对学生课程数据库查询
(1)查询全体学生的学号与姓名。

(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

(4)查全体学生的姓名及其出生年份。

(5)查询学校中有哪些系。

(6)查询选修了课程的学生学号。

(7)查询所有年龄在20岁以下的学生姓名及其年龄。

(8)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。

(9)查询年龄不在20~23岁之间的学生姓名、系别和年龄。

(10)查询信息系、数学系和计算机科学系生的姓名和性别。

(11)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。

(12)查询所有姓刘学生的姓名、学号和性别。

(13)查询学号为2009011的学生的详细情况。

(具体的学号值根据表中数据确定)
(14)查询姓“欧阳”且全名为三个汉字的学生姓名
(15)查询名字中第2个字为“晨”字的学生的姓名和学号
(16)查询所有不姓刘的学生姓名。

(17)查询sql课程的课程号和学分。

(18)查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。

(19)查询缺少成绩的学生的学号和相应的课程号。

(20)查所有有成绩的学生学号和课程号。

(21)查询计算机系年龄在20岁以下的学生姓名。

(22)查询信息系、数学系和计算机科学系学生的姓名和性别。

(使用多个条
件表达式)
(23)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年
龄。

(使用多个条件表达式)
(24)查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

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

(26)查询学生总人数。

(27)查询选修了课程的学生人数。

(28)计算1号课程的学生平均成绩。

(29)查询选修1号课程的学生最高分数。

(30)求各个课程号及相应的选课人数。

(31)查询选修了3门以上课程的学生学号。

(32)查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。

(33)查询学生2006011选修课程的总学分。

(34)查询每个学生选修课程的总学分。

(35)查询每个学生及其选修课程的情况。

(36)查询选修2号课程且成绩在90分以上的所有学生的学号、姓名
(37)查询每个学生的学号、姓名、选修的课程名及成绩。

(38)查询与“刘晨”在同一个系学习的学生(分别用嵌套查询和连接查询)
(39)查询选修了课程名为“信息系统”的学生学号和姓名
(40)查询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名和年龄
(41)查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。

分别用
ALL谓词和集函数
(42)查询所有选修了1号课程的学生姓名。

(分别用嵌套查询和连查询)
(43)查询没有选修1号课程的学生姓名。

(44)查询选修了全部课程的学生姓名。

(45)查询至少选修了学生95002选修的全部课程的学生号码。

(46)查询计算机科学系的学生及年龄不大于19岁的学生的信息。

(47)查询选修了课程1或者选修了课程2的学生的信息。

(48)查询计算机科学系中年龄不大于19岁的学生的信息。

(49)查询既选修了课程1又选修了课程2的学生的信息。

(50)查询计算机科学系的学生与年龄不大于19岁的学生的差集。

(51)通过查询求学号为1学生的总分和平均分。

(52)求出每个系的学生数量
(53)查询平均成绩大于85的学生学号及平均成绩。

(54)要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如
果年龄相等,则按照学号从低到高排序
1.在SELECT语句中DISTINCT、ORDER BY、GROUP BY和HAVING子句的功能各是什么?
答各子句的功能如下。

DISTINCT:查询唯一结果。

ORDER BY:使查询结果有序显示。

GROUP BY:对查询结果进行分组。

HAVING:筛选分组结果。

2.在一个SELECT语句中,当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如何?
答其执行顺序如下:
(1)执行WHERE子句,从表中选取行。

(2)由GROUP BY对选取的行进行分组。

(3)执行聚合函数。

(4)执行HAVING子句选取满足条件的分组。

相关文档
最新文档