㈠ 写出创建如下三张数据表的sql语句
CREATETABLETEACHER
(
TIDCHAR(10)primarykey,
TNAMEVARCHAR(20),
TDEPTVARCHAR(30),
TJNAMECHAR(6)
)
insertintoTEACHERvalues('110','黄嘉欣','管理学系','教授')
insertintoTEACHERvalues('111','刘而已','计算机系','教师')
insertintoTEACHERvalues('112','王嘉骥','外语系','副教授')
CREATETABLECOURSE1
(
CNOCHAR(20)primarykey,
CNAMEVARCHAR(40),
CHOURtinyint,
TERMtinyint
)
insertintoCOURSE1values('011','酒店管理',35,1)
insertintoCOURSE1values('012','管理学基础',75,1)
insertintoCOURSE1values('021','JAVA基础',80,2)
insertintoCOURSE1values('022','安卓开发',70,2)
insertintoCOURSE1values('031','英语作文书写',40,1)
insertintoCOURSE1values('032','日语听力练习',70,1)
insertintoCOURSE1values('033','日语写作',70,1)
insertintoCOURSE1values('023','数据结构',20,1)
createtabletcourse
(
TIDCHAR(10),
CNOCHAR(20),
thourint,
tyearint--这个题有些矛盾,如果这里设为了主键,下面插入数据就没法插入重复的,c.3.就没有意义
)
_consFOREIGNKEY(TID)REFERENCESteacher;
_consFOREIGNKEY(CNO)REFERENCEScourse1;
insertintotcoursevalues('110','011',35,2014)
insertintotcoursevalues('110','012',75,2012)
insertintotcoursevalues('111','021',80,2015)
insertintotcoursevalues('111','022',70,2013)
insertintotcoursevalues('112','031',40,2014)
insertintotcoursevalues('112','032',70,2014)
--a.
SELECTTNAME,TDEPTFROMTEACHERWHERETJNAME='教授'
--b.
SELECTCOUNT(CNO)FROMCOURSE1WHERECHOUR>40
--C.
selectCNAME,CHOUR,TNAME,thourFROMCOURSE1C1,TEACHERTR,tcourseTE
WHEREC1.CNO=TE.CNOANDTR.TID=TE.TIDANDTE.tyear=2012
--D.
DELETECOURSE1WHERECNONOTIN(SELECTCNOFROMtcourse)
--3.
CREATEVIEWQL
as
SELECTTNAME,CNAME,thourFROMCOURSE1C1,TEACHERTR,tcourseTE
WHEREC1.CNO=TE.CNOANDTR.TID=TE.TIDANDTE.tyear=2014
SELECT*FROMQL
我用的数据库是SQL2008 R2,已测试。
㈡ sql期末考试试题及答案
查询题:1).select*fromEMPwhereDEPTNO='20';2).select*fromEMPwhereENAMElike'MA%';3).select*fromEMPorderbyJOB;4).selectb.DNAME,COUNT(a.*)asnumfromEMPaleftjoinDEPTbona.DEPTNO=b.DEPTNOgroupbyb.DNAME5).select*fromEMPwhereSAL>(selectmax(SAL)asSALfromEMPwhereDEPTNO='20');程序题:1).函数:CREATEFUNCTION[SumN](@nINT)RETURNSINTASBEGINdeclare@outINT,@iintset@out=0set@i=1while@i<=@nbeginset@out=@out+@iset@i=@i+1endreturn(@out)END2).存储过程:CREATEPROCEDURE[emp_info](@nDECIMAL(2))ASselect*fromEMPwhereDEPTNO=@n视图和索引1).CREATEVIEW[emp10_view]ASselect*fromEMPwhereDEPTNO='10'2).ALTERTABLE[EMP]ADDCONSTRAINT[IX_Empno]PRIMARYKEYCLUSTERED([empno]ASC)
㈢ sql 语句问题,考试题目。大虾帮忙啊
--) 用SQL语句建立P表。
USE [SPJ]
GO
/****** Object: Table [dbo].[P] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME = 'P')
DROP TABLE P
GO
CREATE TABLE [dbo].[P](
[PNO] [nvarchar](50) NOT NULL,
[PNAME] [nvarchar](50) NOT NULL,
[COLOR] [nvarchar](50) NOT NULL,
[WEIGHT] [int] NOT NULL
)
GO
--2)用SQL语句找出所有零件的名称、颜色、重量。
SELECT PNAME,COLOR,WEIGHT FROM P
--3)用SQL语句把全部红色零件的颜色改为黄色。
UPDATE P SET COLOR = 'YELLOW' WEHRE COLOR = 'RED'
--4) 用SQL语句由S5供给J4的零件P6改为由S3供应。
UPDATE SPJ SET SNO = 'S3' WEHRE PNO = 'P6' AND JNO = 'J4' AND SNO = 'S5'
㈣ SQL的查询 考试题目求教 题目已写答案求判断!
你还有马甲。。。
第一个不对,更新的是学生的成绩,而不是c001得成绩
1.对选修了课程号为c001的学生成绩提高10%
此题本人做的答案请检查:updata 选课表 set 成绩=成绩*1.1 where 课程号='c001'
UPDATE 选课表 SET set 成绩=成绩*1.1 WHERE 学生号 IN (SELECT 学生号 FROM 选课表 WHERE 课程号='c001')
2.查询没有学生选修的课程名。
此题本人做的答案请检查:select 课程名 from 课程 where 课程名 not exists(select * from 选课表 where 选课表.课程号=课程表.课程号)
SELECT 课程名 from 课程 WHERE 课程号 NOT IN (SELECT DISTINCT 课程号 FROM 选课表)
3. correct
4.查询每个学生选修的门数及平均成绩。
此题本人做的答案请检查:select AVG(成绩),姓名 from 学生,选课 where 学生.学生号=选课.学生号 group by 姓名
SELECT COUNT(c.课程号), AVG(c.成绩)
FROM 学生 stu LEFT JOIN 选课 c ON stu.学生号 = c.学生号
GROUP BY stu.学生号
5.查询2003年以前借书的读者借书证号,姓名和单位。
此题本人做的答案请检查:select 借书证号,姓名,单位 from 读者 where 借书日期<=2003 and 读者.借书证号=借书.借书证号
SELECT 借书证号,姓名,单位 FROM 读者 WHERE IN (SELECT 借书证号 FROM 借书 WHERE 借书日期<=2003)
6.查询电子系没有借书的读者姓名
此题本人做的答案请检查: select 姓名,职称 from 读者 where 职称='电子系' and 借书证号 NOT exists(select 借书证号 from 借书 where 读者.借书证号=借书.借书证号)
此题我一直有一个疑惑 我目前查询电子系没有借书的读者姓名 没有借书 也就是借书证号为空或NULL 那么读者也有一个借书证号 借书也有一个借书证号 2个是相对应的,
但是我没用到借书表 只有了读者表的借书证号 需要在where语句后写入:借书证号=借书.借书证号 这个条件吗?
SELECT 姓名
FROM 读者 t
WHERE 单位 = '电子系' AND NOT EXISTS(SELECT 1 FROM 借书 WHERE 借书证号 = t.借书证号)
7.查询出至少有两名学生所选修的全部课程。
此题我做的不怎么好:select 姓名 from 学生 where 课程名 in (select 课程名,count(*) as 课程数 group by 姓名 having count(*)>=2
SELECT * FROM 课程 WHERE 课程号 IN (SELECT 课程号 FROM 选课 GROUP BY 课程号 HAVING COUNT(*) >=2)
8
@a, @b, @c是参数, 譬如@a = '123', @b = 'c001', @c = 90
然后begin后面是执行一个update操作,将参数对应起来就可以了。
真个存储过程对例子要做的就是
UPDATE 选课
set 成绩=90
where 学号= 123 and 课程号='c001'
明白了么
㈤ 很有意思的SQL查询题目,看看大家如何解决
两个难点:
1、如何让Sql Server取到字符串中的数字,比如1、2、4和11、12、4虽然都是三位数字,但前者只有个位,后者含有十位和个位,用substring肯定是不行了。
2、如果取出了数字,还要依次遍历整张表,循环取ID,并去除重复ID
总得说来第一条智能取数比较折磨人。
标记一下,看有无高人进来
--------------------------------
仔细思考了下,还是做出来了,真的很折磨人。
下面的语句全部一下执行就可以看到结果了。
其中@strIn就是需要查找的字符串,如果要查看其他数据,修改这个值就可以了。
思路是把一个字段值变成多行数据,把','变为' union all'拼接语句实现。
--建立测试变量表@T,并赋值
declare @T table(id int,strnum varchar(50))
insert into @T
select 1,'1,2,4,5,8,9'
union all
select 2,'1,3,5,6,7,8,9,11'
union all
select 3,'3,4,5,6,7'
union all
select 4,'1,5,7,8,9'
union all
select 5,'3,5,6,9,11,12'
union all
select 6,'2,3,4,5,7'
union all
select 7,'3,4,5,6,7,8'
union all
select 8,'1,2,3,4,5,6,7,8,9,10'
union all
select 9,'1,7,8,9'
--@strIn查找的字符串
declare @strIn varchar(1000)
set @strIn = '1,11,12'
declare @strtable table(strSql varchar(4000))
insert into @strtable
Select 'select '''+cast(id as varchar(3))+''' as id,'''+replace(strnum,',',''' as num Union all Select ' + ''''+cast(id as varchar(3))+''' as id, ''') + ''' as num'
from @T
declare @comtable table(strSql varchar(4000))
insert into @comtable
select 'select '''+replace(@strIn,',',''' as num Union all Select ''' )+ ''' as num'
declare @textsql varchar(4000)
set @textsql = ''
Select @textsql=@textsql+strSql+' Union all ' from @strtable
set @textsql = substring(@textsql,1,len(@textsql)-10)
declare @comsql varchar(4000)
set @comsql = ''
Select @comsql=@comsql+strSql+' Union all ' from @comtable
set @comsql = substring(@comsql,1,len(@comsql)-10)
set @textsql = 'declare @Rtexttable table(id int,num varchar(3)) insert into @Rtexttable '+@textsql+
' declare @Rcomtable table(num varchar(3)) insert into @Rcomtable '+@comsql+' select distinct id from @Rtexttable a join @Rcomtable b on a.num = b.num'
exec (@textsql)
-------------------------
看了WHITE_WIN的,醍醐灌顶,豁然开朗。本人不喜欢用函数就改成存储过程了
declare @T table(id int,strnum varchar(50))
insert into @T
select 1,'1,2,4,5,8,9'
union all
select 2,'1,3,5,6,7,8,9,11'
union all
select 3,'3,4,5,6,7'
union all
select 4,'1,5,7,8,9'
union all
select 5,'3,5,6,9,11,12'
union all
select 6,'2,3,4,5,7'
union all
select 7,'3,4,5,6,7,8'
union all
select 8,'1,2,3,4,5,6,7,8,9,10'
union all
select 9,'1,7,8,9'
declare @strIn varchar(100)
set @strIn = '1,11,12'
declare @RT table (strnum varchar(30))
while charindex(',',@strIn)>0
begin
insert into @RT select left(@strIn,charindex(',',@strIn)-1)
set @strIn = substring(@strIn,charindex(',',@strIn)+1,len(@strIn))
end
If(len(@strIn)>0)
begin
insert into @RT select @strIn
end
select a.id from @T a, @RT b where ','+a.strnum+',' like '%,'+b.strnum+',%'
group by a.id
order by a.id
㈥ 各位高手,帮一下忙,这是一道考试试题,要用SQL语句写出基本表,如下
这几题的SQL语句如下:
1.
select 姓名 from 职工 where 年隐银龄>45
2.
select 参加.职工号 from 社会团体,参加 where 社会团体.编号=参加.编号 and 社会团体.名称='蓝球队'
3.
select 职工号 from 职工 where not exists(select 1 from 参加 where 参加.职工灶态宴号=职工.职工号)
4.
select 名称 from 社会团体 order by 名闭运称
5.
select 名称,count(1) as 人数 from 社会团体 group by 名称
㈦ 【急】如图题目:请写出以下操作的SQL语句。(1~10题)
--1.查询读者信息表中办证时间2004年以前包含2004年的男生信息
select * from [ 读者信息表]
where year([办证时间])<=2014 and [性别]='男'
--2.查询图书信息表中已经借出图书的书名和出版社
select [书名],[出版社]from [图书信息表]
where [图书状态]='借出'
--3.查询借阅信息表的全部信息
select * from [借阅信息表]
--4.查询图书信息表中书籍价格最便宜的三本书的书籍名称和书籍价格
select top (3) [图书名称],[价格] from [图书信息表]
order by asc
--5.按出版社分组查询统计桐念各出版社出版的书籍册数,显示出版社和出版册数
select [出版社],COUNT(*) as [出版册数] from [图书信息表]
group by [出版社]
--6.查询图书信息中“高等教育出版社”出版的书籍名称和作者姓名
select [书籍名称],[作者姓名] from [图书信息表]
where [出版社] ='高等教育出版社'
--7.查询借阅信息表中未归还图书的读者编号和书籍编号。未归还即还书日期为空
select [读者编号],[书籍编号] from [借阅信息表]
where [还书日期] is null and [借阅状态]='借出'
--8.查询读者信息表中悄碧姓李的读者信息
select * from [读者信息表]
where [读者姓名] like '李%'
--9.查询图书信息表中类别代码为‘001’的图书信息
select * from [图书信息表]
where [类别代码]='001'启轮举
--10.查询图书信息表中全部书籍的平均价格
select AVG([书籍价格]) as [平均价格]from [图书信息表]
㈧ 4道SQL期末考题求助,高分!
1,
use finalexamDB
go
create schema students
go
create type students.studentsID char(7) not null
2,
create trigger del_dept_trigger on dept after delete
as
begin
update emp
set deptno=null
from emp a inner join deleted b
on a.deptno=b.deptno
insert into historydept select * from deleted
end
3,
use adventureworks
go
exec sp_admpdevice @devtype='disk',@logicalname='backupfull',@physicalname='C:\backup\db.bak'
go
backup database adventureworks to backupfull with init
4,
create login [studentlogin] with password='pa$$w0rd',default_database=adventureworks
㈨ 一些SQL的试题
1.应用程序
2.实体完整性
3.distince
4.
5.create Nonclustered index IDX_authors on authors(州名列,城市名列)
6.创建表
7.select 列名 from 表名
8.sum()
9.top
10.alter procere
11.ltrim()
12.declare @变量名 数据类型
13.where
14.from
15.order by
16.cast(表达式 as 数据类型)
17.count()
18.drop procere 存储过程名
19.创建数据库
20.价格大于15美元的所有数据
21.数据库
22.rollback
23.
24.服务管理器
25.
26.数据冗余(备份)
27.3
28.数据库
29.应用程序
30.drop table
33.操作系统
权限
1.
2.是并发控制的单位,是用户定义的一个操作序列,具有原子性,一致性,隔离性,持续性四个特性。
3.共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁.
获准共享锁的事务只能读数据,不能修改数据。
4.
5.
1.存储过程可以使得程序执行效率更高、安全性更好,因为过程建立之后 已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入
2.建立过程不会很耗系统资源,因为过程只是在调用才执行。
6.聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。
7.
8.是并发控制的单位,是用户定义的一个操作序列,具有原子性,一致性,隔离性,持续性四个特性。
BEGIN TRAN [Tran_name]开始事务
COMMIT TRAN [Tran_name]事务完成提交事务
9.存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。
10.增量备份:是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件。
12.原子性,要么都做,要么不做。
13.排它锁若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
它防止任何其它事务获取资源上的锁,直到在事务的末尾将资源上的原始锁释放为止。
14.分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
15.
17同2,18同8
19.DBMS数据库管理系统,DBA数据库管理员
20.1对1,一个学生对应一个学号
1对多 一个学生对应多门功课
多对多 商品与厂商
(备注:只能做这么多了,很长时间没看书了,有时间可以看看<数据库系统概论>萨师煊 王珊 高等教育出版社,很不错的一本书哦。上有你要的答案,特别是简答题。)
21.
22.数据库完整性,对数据库提出的某种约束条件或规则。
分三种:实体完整性,参照完整性,用户自定义完整性
23.
24.原则如下:
●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
26。聚集索引确定表中数据的物理顺序。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引)
非聚集索引一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。一个表可以有多个聚集索引
㈩ 1. 用SQL语句创建满足下列要求的数据库,
在SQL Server2005中用语句创建数据库和表:
具体示例如下:
use master
go
if exists (select * from sysdatabases where name='Study')
--判断Study数据库是否存在,如果是就进行删除
drop database Study
go
EXEC sp_configure 'show advanced options', 1
GO
-- 更新当前高级选项的配置信息
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
-- 更新当前功能(xp_cmdshell)的配置信息。
RECONFIGURE
GO
exec xp_cmdshell 'mkdir D:\data', NO_OUTPUT
--利用xp_cmdshell 命令创建文件夹,此存储过程的第一个参数为要执行的有效dos命令,第二个参数为是否输出返回信息。
go
create database Study--创建数据库
on primary
(
name='Study_data',--主数据文件的逻辑名
fileName='D:\data\Study_data.mdf',--主数据文件的物理名
size=10MB,--初始大小
filegrowth=10% --增长率
)
log on
(
name='Study_log',--日志文件的逻辑名
fileName='D:\data\Study_data.ldf',--日志文件的物理名
size=1MB,
maxsize=20MB,--最大大小
filegrowth=10%
)
GO