㈠ 寫出創建如下三張數據表的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