当前位置:首页 » 编程语言 » sql的题目及答案
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql的题目及答案

发布时间: 2022-06-14 20:17:00

sql数据库题,急!马上给答案,给高分!!

(1) 列出1994年出版的所有图书的编号(BBH)及书名(BN)
SELECT BBH, BN FROM B WHERE BD LIKE '1994%'

(2) 列出借阅过书名为“数据库概论”的学生的学号(SBH)和姓名(SN)
SELECT S.SBH, S.SN
FROM S, B, R
WHERE S.SBH = R.SBH AND R.BBH = B.BBH AND B.BN = '数据库概论'

(3) 列出借阅过所有在1994年出版的图书的学生的学号
SELECT DISTINCT SBH
FROM R WHERE BBH IN (SELECT BBH FROM R WHERE BD LIKE '1994%')

(4) 找出1994年借阅过图书的学生的学号(SBH)及姓名(SN)
SELECT S.SBH, S.SN
FROM S, R WHERE S.SBH = R.SBH AND BD LIKE '1994%'

(5) 统计每年出版的所有图书的总数(给出年代(BD)及当年的出版总数)
SELECT SUBSTR(BD, 1, 5), COUNT(BBH)
FROM B GROUP BY SUBSTR(BD, 1, 5)

(6) 找出没有学生借阅过的图书的编号(BBH)及书名(BN)
SELECT BBH, BN
FROM R WHERE BBH NOT IN (SELECT BBH FROM R)

Ⅱ sql题目,请给出答案并解释

create view as select a.学号,a.姓名,a.性别,a.系名,b.课程名,b.成绩,b.任课老师名 from 学生 as a left join (select 学号,课程名,成绩,任课老师 from 成绩 left join 任课 on 成绩.课程名=任课.课程名) as b on a.学号=b.学号

Ⅲ SQL 题目,初学者,需要高手给答案。重谢!

create table card (
fundaccount int ,
bankno char(1),
cardno char(20)
)
insert into card
select 1,'1','111111111111'
union all
select 2,'2','111111111111'
union all
select 3,'2','222222222222222'

update card set cardno='100'+cardno from card
where bankno='2'
and len(LTRIM(RTRIM(cardno))) =12

select *,len(cardno) from card
---------------------
第二个懒的建表的,核心就是求出客户代码,然后在关联
select top 5 客户代码 from ( select

客户代码,姓名,SUM(XX) AS XX FROM XXX

where way=1 and year(date)=1998 and month(date)=3
GROUP BY
客户代码,姓名
)
order by 成交金额

Ⅳ 数据库sql题目

答案为B
其实从语法就可以排除的:where字句中不能出现聚合函数所以AD排除;出现group by字句,则select字句中查询的列要么分组要么聚合,C选项中姓名列既没分组也没在聚合函数中。
下面说说思路:
想要查询只选修1门课的学生,可以先查出每个学生选了多少门课(按学生分组group by),然后挑选出选课数为1的(对分组后得到的结果进行筛选,having)
如果还有问题请追问。

Ⅳ SQL测试题(注:最佳答案必须能在MySQL下运行)

/*
闲着没事,瞅瞅网络上的问题,今天天晚了,先解决一个,另一个明儿个再说了!
第二道题也算已经搞定了!
环境 : mysql Ver 14.12 Distrib 5.0.45, for Win32 (ia32)
参考 :
exist与in 的区别
http://blog.csdn.net/change888/archive/2008/03/31/2232778.aspx
*/
/*********************************问题 1 **************************************/

drop table if exists s;
create table if not exists s (s varchar(32), sn varchar(32), sd varchar(32),
sa int);
insert into s values ('s1', '朱', '开发本部', 23);
insert into s values ('s2', '牛', '人事部', 25);
insert into s values ('s3', '杨', '财务部', 26);
insert into s values ('s4', '马', '开发本部', 22);
insert into s values ('s5', '吕', '人事部', 27);
insert into s values ('s6', '于', '开发本部', 28);
insert into s values ('s7', '侯', '开发本部', 28);

drop table if exists c;
create table if not exists c (c varchar(32), cn varchar(32));
insert into c values ('c1', '软件工程');
insert into c values ('c2', '计算机技术与科学');
insert into c values ('c3', '车辆工程');

drop table if exists sc;
create table if not exists sc (s varchar(32), c varchar(32));
insert into sc values ('s1', 'c1');
insert into sc values ('s1', 'c2');
insert into sc values ('s1', 'c3');
insert into sc values ('s2', 'c1');
insert into sc values ('s2', 'c3');
insert into sc values ('s3', 'c2');
insert into sc values ('s4', 'c2');
insert into sc values ('s4', 'c3');
insert into sc values ('s5', 'c1');
insert into sc values ('s6', 'c3');

/* 1. 查询选修课程名称为 “软件工程” 的学员学号和姓名 */
select s.s '学号', s.sn '姓名' from s where s.s in
(select sc.s from sc where sc.c in
(select c.c from c where c.cn = '软件工程'));

/* 2. 查询选修课程编号为 “C2” 的学员姓名和所属单位 */
select s.sn '姓名', s.sd '所属单位' from s where s.s in
(select sc.s from sc where sc.c = 'C2');

/* 3. 查询选修课程编号 不 为 “C2” 的学员姓名和所属单位 */
select s.sn '姓名', s.sd '所属单位' from s where
s.s not in (select sc.s from sc where sc.c = 'C2')
and
s.s in (select sc.s from sc);

/* 4. 查询选修全部课程的学员姓名和所属单位 */
select s.sn '姓名', s.sd '所属单位' from s where
(select count(DISTINCT sc.c) from sc where sc.s = s.s)
=
(select count(DISTINCT c.c) from c );

/* 5. 查询选修了课程的学员人数 */
select count(DISTINCT sc.s) '人数' from sc;

/* 6. 查询选修课程 >= 2 门的学员学号和所属单位 (不得不用 CASE 语句了)*/
select s.sn '姓名', s.sd '所属单位' from s where s.s in
(select CASE WHEN count(DISTINCT sc.c) >=2 THEN sc.s END from sc group by sc.s );

/* 运行结果
------------------------------------1
+------+------+
| 学号 | 姓名 |
+------+------+
| s1 | 朱 |
| s2 | 牛 |
| s5 | 吕 |
+------+------+
------------------------------------2
+------+----------+
| 姓名 | 所属单位 |
+------+----------+
| 朱 | 开发本部 |
| 杨 | 财务部 |
| 马 | 开发本部 |
+------+----------+
------------------------------------3
+------+----------+
| 姓名 | 所属单位 |
+------+----------+
| 牛 | 人事部 |
| 吕 | 人事部 |
| 于 | 开发本部 |
+------+----------+
------------------------------------4
+------+----------+
| 姓名 | 所属单位 |
+------+----------+
| 朱 | 开发本部 |
+------+----------+
------------------------------------5
+------+
| 人数 |
+------+
| 6 |
+------+
------------------------------------6
+------+----------+
| 姓名 | 所属单位 |
+------+----------+
| 朱 | 开发本部 |
| 牛 | 人事部 |
| 马 | 开发本部 |
+------+----------+
*/

/*********************************问题 2 **************************************/

drop table if exists s ;
create table if not exists s ( sno varchar(32), sname varchar(32));
insert into s values ('s1', '朱');
insert into s values ('s2', '牛');
insert into s values ('s3', '杨');
insert into s values ('s4', '马');
insert into s values ('s5', '吕');
insert into s values ('s6', '于');
insert into s values ('s7', '侯');

drop table if exists c;
create table if not exists c ( cno varchar(32), cname varchar(32),
cteacher varchar(32));
insert into c values ('c1', '数学', '张');
insert into c values ('c2', '日语', '李'); /*假设李老师同时教授日语和英语*/
insert into c values ('c3', '英语', '李');

drop table if exists sc;
create table if not exists sc (sno varchar(32), cno varchar(32),
scgrade double);
insert into sc values ('s1', 'c1', 75);
insert into sc values ('s1', 'c2', 70);
insert into sc values ('s1', 'c3', 80);
insert into sc values ('s2', 'c1', 50);
insert into sc values ('s2', 'c3', 40);
insert into sc values ('s3', 'c1', 50);
insert into sc values ('s3', 'c2', 60);
insert into sc values ('s4', 'c1', 90);
insert into sc values ('s4', 'c2', 40);
insert into sc values ('s4', 'c3', 20);
insert into sc values ('s5', 'c1', 80);
insert into sc values ('s6', 'c1', 85);

/* 1. 没有 选 修过“李”老师讲授课程的所有学生姓名 */
select s.sname '姓名' from s where s.sno not in
(select sc.sno from sc where sc.cno in
(select c.cno from c where c.cteacher = '李'));

/* 2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩 */
select s.sname '姓名', AVG(sc.scgrade) '平均成绩' from s, sc
where s.sno = sc.sno
and
(select count(sc.sno) from sc where sc.sno = s.sno
and sc.scgrade < 60 ) >= 2
group by s.sno;

/* 3. 列出既学过“C1”号课程,又学过“C2”号课程的所有学生姓名 */
select s.sname '姓名' from s where s.sno in
(select t1.sno from sc t1, sc t2
where t1.sno = t2.sno and t1.cno = 'c1' and t2.cno = 'c2');
/*或者*/
select s.sname '姓名' from s where s.sno in
(select sc.sno from sc where sc.cno = 'c1' and sc.sno in
(select t1.sno from sc t1 where t1.cno = 'c2'));

/* 4. 列出“C1”号课成绩比“C2”号同学该门课成绩高的所有学生的学号 */
select t1.sno '学号' from sc t1, sc t2
where t1.sno = t2.sno and t1.cno = 'c1'
and t2.cno = 'c2' and t1.scgrade > t2.scgrade;

/* 5. 列出“C1”成绩比“C2”成绩高的学生的学号及其“C1”和“C2”的成绩 */
select t1.sno '学号', t1.scgrade 'C1成绩', t2.scgrade 'C2成绩' from sc t1, sc t2
where t1.sno = t2.sno and t1.cno = 'c1'
and t2.cno = 'c2' and t1.scgrade > t2.scgrade;

/* 运行结果
------------------------------------1
+------+
| 姓名 |
+------+
| 吕 |
| 于 |
| 侯 |
+------+
------------------------------------2
+------+----------+
| 姓名 | 平均成绩 |
+------+----------+
| 牛 | 45 |
| 马 | 50 |
+------+----------+
------------------------------------3
+------+
| 姓名 |
+------+
| 朱 |
| 杨 |
| 马 |
+------+
------------------------------------4
+------+
| 学号 |
+------+
| s1 |
| s4 |
+------+
------------------------------------5
+------+--------+--------+
| 学号 | C1成绩 | C2成绩 |
+------+--------+--------+
| s1 | 75 | 70 |
| s4 | 90 | 40 |
+------+--------+--------+
*/

Ⅵ SQL多项选择题,急求答案,最好有解析

1.答案A,D,E DESC是降序,省略ASC和DESC,默认为升序。
2.答案A,C,D,E 创建视图时不允许在所用SELECT语句中使用ORDER BY、COMPUTE子句
3.C,D,E 执行存储过程时可用WITH RECOMPLE选项进行重新编译;只有当执行存储过程的语句是批处理中的第一个语句,才可以直接通过名称来调用存储过程
4.C,E 使用SQL Server Management Studio不能运行命令行实用程序sqlcmd
5.C,D,F 一个局部变量只能在一个语句批中使用,使用SET语句只能对一个局部变量赋值,刚定义的局部变量的初值为空值
6.B 用户定义函数可以有输入参数和返回值

Ⅶ SQL server题目求解答

1
你上边的createtabledept……和createtableemp……就是答案
2
select'姓名:'+ename+'出生日期:+'convert(varchar(10),hiredate,120)+'工资:'+cast(salasvarchar)fromemp
3
selecta.ename+'’smanageris'+b.enamefromempa,empbwherea.MGR=b.empno
4
selectenamefromempwhereLEN(ename)=(selectMAX(LEN(ename))fromemp)
5
selectCAST(SALasvarchar)fromemp
selectCONVERT(varchar,sal)fromemp
6
SQLServer:datetime和dateMySQL:datetime和date
7
仿造insertintoemp……那些自己加吧
8
SQLServer:selectgetdate()
MySQL:selectnow()
9
selecttop1YEAR(hiredate)fromempgroupbyYEAR(hiredate)orderbyCOUNT(*)desc
10
selectmax(year(hiredate))-min(year(hiredate))fromemp

Ⅷ sql的4道题目.要正确答案

回如下,希望对您有帮助.
1.Inner Join 把两个表连接在一起,返回两个表中相匹配的记录

Left outer join,左侧表所有的记录都返回,右侧匹配的记录返回,没有匹配的返回Null

Right outer join 与Left outer join相反,右侧的记录返回,左侧返回匹配的记录,没有匹配返回Null

Cross join 两个表的笛卡儿积,返回所有可能的值,不允许有连接条件!

2.select 科目,avg(成绩) from 成绩表 group by 科目
order by 科目

3.建立索引是提高select语句最好的方法
(1).使用exists关键字检查结果集:不要用count(*)来检查结果集中是否包含行。
(2).使用标准联接代替嵌套查询:在执行嵌套查询时,SQL server将先执行内部的子查询,然后将查询结果返回给外部查询的作为检索的数据源,最后执行外部的主查询。而在执行包含标准联接的查询时,SQL server将要执行的仅仅是一个查询。
(3).有效避免整表扫描,使用索引。
(4).在like子句的匹配条件的开始使用了%,若在like子句的匹配条件的开始使用了%,那么包含这个like分句的查询将会调用整表扫描。

4.这个..简单的select * from table 结果这个是根据不同数据库不同类型表而有所区别的,要分情况来说的,一般认为是记录在数据库里面的物理位置吧,不过这样答也不完全正确,表是分有索引和无索引的,不同类型在不同数据库也有不同的处理方法 .
如果一次查询出来多个数据集,那么可以减少对数据库的连接和查询(这是很耗时的)

那么如果你想要一次查询出多个数据集,如果这些数据集与检索出的一批数据相关,因此可能用临时表将那些ID抽出来,然后再根据这些ID查其他的记录。
这里需要临时表。
临时表一般存在tempdb里,不会有大问题的。

Ⅸ SQL题目求答案

/*创建Moonfox_db数据库*/
use master
if exists(select * from sysdatabases where name='Moonfox_db')
drop database Moonfox_db
create database Moonfox_db
on
(
name='Moonfox_db_data',
filename='D:\Visual Studio 2008 & Sql server 2005\Sql server\Moonfox_db.mdf',
size=10,
filegrowth=2MB
)
log on
(
name='Moonfox_db_log',
filename='D:\Visual Studio 2008 & Sql server 2005\Sql server\Moonfox_db.ldf',
size=5,
filegrowth=20%
)/*创建Department表*/
use Moonfox_db
if exists(select * from sysobjects where name='Department')
drop table Department
create table Department
(
DID int identity (1,1)primary key,--部门编号,主键
Dname nvarchar(20),--部门名称
Address nvarchar(50),--部门地址
Photo decimal(12,0),--电话
)/*创建Employee表*/
use Moonfox_db
if exists(select * from sysobjects where name='Employee')
drop table Employee
create table Employee
(
EID int identity (1,1)primary key,--职工编号,主键
Ename varchar(10),--职工名
Gender nchar(2) check(Gender='男' or Gender='女'),--性别,添加限制
Position nvarchar(10) check(Position='员工' or Position='组长' or Position='经理'),--职务,添加限制
Address nvarchar(50),--家庭地址
DID int,--部门编号,外键
foreign key(DID) references Department(DID)--外键约束
)
/*创建Care表*/
use Moonfox_db
if exists(select * from sysobjects where name='Care')
drop table Care
create table Care
(
CID int identity (1,1)primary key,--保健卡编号,主键
EID int,--职工号,外键
foreign key(EID) references Employee(EID),--外键约束
CheckDate datetime,--检查身体日期
PhysicalCondition nvarchar(4) check(PhysicalCondition='一般' or PhysicalCondition='差' or PhysicalCondition='好'),--健康状况
)
/*创建Care表约束*/
alter table Care
add
constraint DF_CheckDate default(getdate()) for CheckDate--缺省,默认净时间为当前计算机时间 路径自己修改,试图自己做,选择语句自己写。我该睡觉了,抱歉,你试着在sql server中运行下,我等着休息,也不知道写的有没有错误,没时间帮你写省下的了。不急着用的话我明天帮你写吧。