⑴ sql Server資料庫系統實訓(sos!!!)把在sqlcmd中執行的命令拷貝至題目下方即可。求解任何三題,謝謝!
第三題。素數那是個老題了,用oracle的方法是這么寫的
declare
counter int:=0;
begin
for i in 1..100 loop
for j in 1..i loop
if(mod(i,j)=0) then
counter:=counter+1;
--dbms_output.put_line(i|| '--' || j ||' counter='||counter);
end if;
end loop;
if(counter=2) then
dbms_output.put_line(i);
end if;
counter:=0;
end loop;
end;
第一題。
alter table dept add constraint pk_d primary key (deptno); --給dept表加主鍵
alter table emp add constraint fk_e foreign key(deptno) references dept(deptno); --給emp表加外鍵指向dept表中的deptno列。
至於那個目標視圖,我不清楚SQL_SERVER裡面有什麼視圖了,oracle的dba_constraints視圖只能查詢到你上面要求的一部分
select r_constraint_name from dba_constraints where table_name='emp';
第二題。
oracle裡面裝載了資料庫的情況下貌似不能創建database了,給你一個創建表空間的數據文件的語句吧
create tablespace flash datafile 'd:\myoracle\flash.dbf' size 50m reuse;
⑵ 資料庫技術與應用 sql server 2005教程實訓答案
順著你的思路說:現在是按VV1,VV2,VV3,VV4,VV5排序(適用於任意類型的欄位):
select no=
(select count(1) from aaa t where
t.vv1<o.vv1 or --一個欄位排序到此為止,但把<換成<=
t.vv1=o.vv1 and t.vv2<o.vv2 or--兩個到此為止,但把最後的<換成<=
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3<o.vv3 or--三個、四個以此類推
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3=o.vv3 and t.vv4<o.vv4 or
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3=o.vv3 and t.vv4=o.vv4 and t.vv5<=o.vv5
),*
from aaa o
order by vv1,vv2,vv3,vv4,vv5
------------------------------
看出來了吧?有多少個變數排序,就寫多少層,書寫起來麻煩,但查詢起來,一個和多個速度基本是一樣的,沒有多大差別。
按照規律書寫也並不麻煩,
規律總結一下,就是,
一層層復制,稍作修改。每層長出一組
每層最後一個符號是小於號(<),其餘都是等號。
所有層的最後一個符號是小於等於(<=)。
如果按排序欄位(本例為VV1,VV2,VV3,VV4,VV5)進行了索引,查詢速度會大大加快。
⑶ SQL資料庫(簡單)簡答題
Microsoft SQL Server 2000 簡答題及其答案
1.在安裝SQL Server 2000時,「僅客戶端工具」、「伺服器和客戶端工具」及「僅連接」等安裝定義有什麼差別?
答:僅客戶端工具:僅安裝客戶端工具。伺服器和客戶端工具:同時安裝伺服器和客戶端工具。僅連接:僅安裝客戶端連接。
2.一個資料庫中包含哪幾種文件?
答:主資料庫文件,輔助數據文件,事務日誌文件。
3.事務文件和數據文件分開存放有什麼好處?
答:因為利用事務日誌備份可以將資料庫恢復到特定的即時點(如輸入不想要的數據之前的那一點)或故障發生點。在媒體恢復策略中應考慮利用事務日誌備份。
4.什麼是批處理?使用批處理有何限制?
答:包含一個或多個T-SQL語句的組,從應用程序將一次性發送到SQL Server執行,SQL Server批處理語句作為整體編譯成一個可執行單元。
限制:如不能夠在同一個批處理中更改表,然後引用新列。如在一個批處理程序中,有兩條語句。第一條語句用來在一張表中插入一個欄位,如在User表中插入員工的出生年月;第二條語句則用來引用這個列,如根據身份證號碼來推算出這個員工的出身年月並把這個值賦值給這個第一條語句創建的出身年月欄位。
5.數據檢索時,COMPUTE和COMPUTE BY產生的結果有何不同?
答:Compute:第一個為明細行 第二個為聚合函數的合計 Compute by:第一個為明細行第二個為聚合函數的小計
6.什麼是索引?索引分為哪兩種?各有什麼特點?
答:1、資料庫中的索引與書籍中的目錄類似。在一本書中,利用目錄可以快速查找所需信息,無須閱讀整本書。在資料庫中,索引使資料庫程序無須對整個表進行掃描,就可以在其中找到所需數據。 2、聚集索引和非聚集索引。
3、聚集索引的特點:行的物理位置和行在索引中的位置是相同的,每個表只能有一個聚集索引,聚集索引的平均大小大約為表大小的5%左右。
非聚集索引特點:若未指定索引類型,則默認為非聚集索引,葉節點頁的次序和表的物理存儲次序不同,每個表最多可以有249個非聚集索引,在非聚集索引創建之前創建聚集索引。
7.創建索引有什麼優點和缺點?
答:優點:索引在資料庫中的作用類似於目錄在書籍中的作用,用來提高查找信息的速度。
使用索引查找數據,無需對整表進行掃描,可以快速找到所需數據。
缺點:索引需要佔用數據表以外的物理存儲空間。創建索引和維護索引要花費一定的時間。當對表進行更新操作時,索引需要被重建,這樣降低了數據的維護速度。
8.什麼是視圖?使用視圖的優點和缺點是什麼?
答:視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在資料庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。
優點:1隱蔽資料庫的復雜性2控制用戶提取數據3簡化資料庫用戶管理 4簡化查詢
缺點:1性能:SQL Server必須把視圖的查詢轉化成對基本表的查詢,如果這個視圖是由,一個復雜的多表查詢所定義,那麼,即使是視圖的一個簡單查詢,SQL Server也,把它變成一個復雜的結合體,需要花費一定的時間。2修改限制:當用戶試圖修改視圖的某些行時,SQL Server必須把它轉化為對基本,表的某些行的修改。對於簡單視圖來說,這是很方便的,但是,對於比較復雜的,視圖,可能是不可修改的。
9. 修改視圖中的數據會受到哪些限制?
答:1、必須有許可權 2、單表視圖直接改
3、多表可在視圖中定義 instead of 觸發器.
4、對由多表連接成的視圖修改數據時,不能同時影響一個以上的基表,也不能刪除視圖中的數據
5、對視圖上的某些列不能修改,這些列是:計算列,內置函數列和行集合函數列
6、對具有NOT NULL 的列進行修改時可能會出錯。通過視圖修改或者插入數據時,必須保證未顯示的具有NOT NULL 屬性的列有值,可以是默認值,IDENTITY 等,否則不能像視圖中插入數據行。
7、如果某些列因為規則或者約束的限制不能接受從視圖插入的數據時,則插入數據可能會失敗
8、刪除基表並不刪除視圖,建議採用與表明顯不同的名字命名規則
10. 什麼是數據完整性?如果資料庫不實施數據完整性會產生什麼結果?
答:數據完整性是指數據的精確性和可靠性。它是應防止資料庫中存在不符合語義規定的數據和防止因錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。
11.數據完整性有哪幾類?如何實施?
答:1、數據完整性分為四類:實體完整性、域完整性、參照完整性、用戶定義的完整性。
2、資料庫採用多種方法來保證數據完整性,包括外鍵、束約、規則和觸發器。系統很好地處理了這四者的關系,並針對不同的具體情況用不同的方法進行,相互交叉使用,相補缺點。
12. 什麼是主鍵約束?什麼是惟一約束?兩者有什麼區別?
答:主鍵約束:有一列或列的組合,其值能唯一的標識表中的每一行。
唯一約束:不允許資料庫表在指定列上具有相同的值,但允許有空值。
區別:一個表可以定義多個唯一約束,只能定義一個主鍵約束;空值得列上可以定義唯一約束,不能定義主鍵約束。
13.什麼是外鍵,怎樣建立外鍵約束?
答:外鍵是用於建立和加強兩個表數據之間的鏈接的一列或多列。通過將保存表中主鍵值的一列或多列添加到另一個表中,可創建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
14.什麼是存儲過程?使用存儲過程有什麼好處?
答:1、是存儲在伺服器上的 Transact-SQL 語句的命名集合,是封裝重復性任務的方法,支持用戶聲明變數、條件執行以及其他強有力的編程特性。
2、存儲過程封裝了商務邏輯,確保一致的數據訪問和修改。若規則或策略有變化,則只需要修改伺服器上的存儲過程,所有的客戶端就可以直接使用
屏蔽資料庫模式的詳細資料。用戶不需要訪問底層的資料庫和資料庫內的對象
提供了安全性機制。用戶可以被賦予執行存儲過程的許可權,而不必在存儲過程引用的所有對象上都有許可權
改善性能。預編譯的 Transact-SQL 語句,可以根據條件決定執行哪一部分
減少網路通信量。客戶端用一條語句調用存儲過程,就可以完成可能需要大量語句才能完成的任務,這樣減少了客戶端和伺服器之間的請求/回答包
15.什麼是觸發器?觸發器分有什麼作用?
答:觸發器是一類特殊的存儲過程,不能被直接調用,也不傳遞或接受參數
作用:1、維護不可能在表創建時刻通過聲明性約束進行的復雜的完整性約束限制。
2、通過記錄所進行的修改以及誰進行了修改來審計表中的信息。
3、當表被修改的時候,自動給其他需要執行操作的程序發信號。
⑷ SQL Server 實用教程(第3版)課後實驗答案 鄭阿奇主編的 郵箱[email protected]
--查詢全體學生的學號和姓名.
select Sno,Sname from Student
--查詢全體學生的詳細記錄.
select * from Student
--查詢所有選修課程的學生學號.
select distinct Sno from SC
--查詢考試有不及格的學生學號.
select distinct Sno from SC where Grade<60
--查詢不是信息系(is)、計算機系(cs)的學生性別、年齡、系別。
select Ssex,Sage,Sdept from Student where Sdept not in('is','cs')
--查詢選修了4號課的學生學號和成績,結果按成績降序排列.
select Student.Sno,Grade from Student,SC where Cno='004' order by Grade desc
--查詢每個課程號和相應的選課人數.
select Cno,count(Sno)選課人數 from SC group by Cno
--查詢計算機系(cs)的學生姓名、年齡、系別。
select Sno,Sage,Sdept from Student where Sdept in('cs')
--查詢年齡18~20歲的學生學號、姓名、系別、年齡。
select Sno,Sname,Sdept,Sage from Student where Sage between 18 and 20
--查詢姓劉的學生的情況.
select * from Student where Sname like '劉%'
--查詢既選修1號課程,又選修2號課程的學生學號.
select Sno from SC where Cno='001' and Cno='002'
select sno from SC where Cno='001' and Sno in (select Sno from SC where Cno='002')
select sno from SC where Cno='001' intersect select Sno from SC where Cno='002'
--查詢學生的姓名和出生年份(今年2008年)
select Sname,2008-Sage as 出生年份 from student
--查詢沒有成績的學生學號和課程號。
select Sno,Cno from sc where grade is null
--查詢總成績大於200分的學生學號。
select Sno from sc group by sno having sum(grade)>200
--查詢每門課程不及格學生人數。
select cno,count(sno) 不及格人數 from sc where grade<60 group by cno
--查詢不及格課程超過3門的學生學號。
select Sno from sc where grade<60 group by sno having count(grade)>3
--查詢年齡為10~19歲的學生信息。
select * from student where Sage between 10 and 19
--查詢全體學生情況,按所在系升序排列,同一個系的學生按年齡降序排列。
select * from student order by sdept, sage desc
--查詢選了1號課程的學生平均成績。
select avg(grade) from sc where cno='001'
--查詢選了3號課程的學生的最高分。
select max(grade) from sc where cno='003'
--查詢每個同學的總成績。
select sno,sum(grade) 總成績 from sc group by sno
---實驗五
--查詢每個學生及其選課情況。
select student.*,sc.*,course.* from student,sc,course where student.sno=sc.sno and sc.cno=course.cno
--select * from sc,student,course
--查詢每門課程的間接選修課。
select first.cno,second.cpno from course first,course second where first.cpno=second.cno;
--將STUDENT,SC進行右連接。
select * from student,sc
select student.*,sc.* from student right join sc on student.sno=sc.sno
--查詢有不及格學生的姓名和所在系。
select Sname,Sdept from student,sc where grade<60 and student.sno=sc.sno
--查詢所有成績為優秀(大於90)的學生姓名。
select Sname from student where sno in (select sno from sc group by sno having min(grade)>90)and sno not in (select sno from sc where grade is null) --錯誤
select sname from student,sc where student.sno=sc.sno and student.sno not in(select sno from sc where grade is null) group by sname having min(grade)>=90
--查詢既選修了2號課程又選修了3號課程的學生姓名、學號。
select distinct Sname,Sc.Sno from student,sc where student.sno=sc.sno and sc.sno in(select sno from sc where cno='002' and sno in (select sno from sc where cno='003'))
--查詢和劉晨同一年齡的學生。
select Sno,sname from student where sage=(select sage from student where sname='劉晨')
--選修了課程名為「資料庫」的學生姓名和年齡。
select Sname,Sage from student where sno in(select sno from sc where cno=(select cno from course where cname='資料庫'))
--查詢其他系比IS系任一學生年齡小的學生名單。
select sname from student where sdept!='is'and sage<(select max(sage) from student where sdept='is')
--查詢其他系中比IS系所有學生年齡都小的學生名單。
select Sname from student where sdept!='is' and sage<(select min(sage) from student where sdept='is')
--查詢選修了全部課程的學生姓名.
select sname from student where not exists(select * from course where not exists(select * from sc where sno=student.sno and cno=course.cno)) --正確
--查詢計算機系學生及其性別是男的學生.
select * from student where sdept='is' or ssex='男'
--查詢選修課程1的學生集合和選修2號課程學生集合的差集。
select sc.sno from student,sc where student.sno=sc.sno and cno='001'
except
select sc.sno from student,sc where student.sno=sc.sno and cno='002'
--或者
select sno from sc where cno='001' and sno not in (select sno from sc where cno='002')
--查詢李麗同學不學的課程的課程號.
select distinct cno from sc where cno not in (select cno from student,sc where sname='李麗'and student.sno=sc.sno)
--查詢選修了3號課程的學生平均年齡.
select avg(sage) from student where sno in(select sno from sc where cno='003')
--求每門課程學生的平均成績.
select cno,avg(grade) from sc group by cno
--統計每門課程的學生選修人數(超過3人的人統計)。要求輸出課程號和選修人數,結果按人數降序排列,若人數相同,按課程號升序排列。
--查詢學號比劉晨大,而年齡比他小的學生姓名。
select sname from student where sno>(select sno from student where sname='劉晨')and sage<(select sage from student where sname='劉晨')
--求年齡大於女同學平均年齡的男同學的姓名和年齡。
select sname,sage from student where sage>(select avg(sage) from student where ssex='女')and ssex='男'
--求年齡大於所有女同學年齡的男同學姓名和年齡。
select sname,sage from student where sage>(select max(sage) from student where ssex='女')and ssex='男'
--查詢至少選修了08002選修的全部課程的學生號碼。
--select cno from sc where sno='08002'
--select sno from sc where cno IN (select cno from sc where sno='08002')
--select * from sc A,sc B where A.SNO=B.SNO
--select * from (select distinct* from sc A,sc B where A.SNO=B.SNO)as e
select distinct sno from sc sc1 where not exists (select * from sc sc2 where sc2.sno='08002' and not exists (select * from sc sc3 where sc3.sno=sc1.sno and sc3.cno=sc2.cno))
--查詢08001和08002兩個學生都選修的課程的信息。
select course.* from course,sc where sno='08001' and course.cno=sc.cno intersect select course.* from course,sc where sno='08002' and course.cno=sc.cno
--查詢跟'08001'同學同姓的學生信息
select * from student where sname like(select left(sname,1) from student where sno='08001')+'%'
⑸ 求sql資料庫考試題答案
1.create database Readbook
on
(name=Readbook_data,filename='D:\server\Readbook_data.mdf',size=2mb,maxsize=10mb,filegrowth=1mb)
log on
(
name=Readbook_log,
filename='D:\server\Readbook_log.ldf',size=1mb,maxsize=5mb,filegrowth=1mb
)
go
2.use mybase
go
alter database mybase
add log file
(
name=Readbook2_log,
filename='D:\server\mybase2_log.ldf',size=2mb,maxsize=10mb,filegrowth=1mb
)
go
3.alter database mybase
remove file Readbook2_log
⑹ 請教sql資料庫答案 基礎的我忘了 我想知道答案進行操作 謝謝!!
不好意思 寢室要斷電了 只能寫這么多
/**
*創建student表
**/
create table student
(
SNo int, --學號
SN char(10), --姓名
SA int, --年齡
)
/**
*創建Course表
**/
create table Course
(
Cno int, --課程號
CN char(20), --課程名
CT char(10), --任課教師名
)
/*2 根據題1的學生關系模式,用SQL有關語句*/
--1插入任意三個學生的完整信息
insert into student(SNo,SN,SA)
values(001,'張一',19)
insert into student(SNo,SN,SA)
values(002,'張二',20)
insert into student(SNo,SN,SA)
values(003,'張三',21)
--2修改所有學生的年齡
update student set SA = SA+1 /*表示當前年齡SA+1*/ where SNo=001
update student set SA = SA+1 where SNo=002
update student set SA = SA+1 where SNo=003
⑺ 急求SQL資料庫的實訓總結,以及在實訓中碰到的問題和體會
都差不多吧!我也寫過一次,給你吧,希望能夠幫到你
這個星期是我們SQL Server 資料庫管理課的實訓,經過一個星期的實訓,讓我領會到了許多平時課堂上所沒有接受的課外知識,很讓人受益匪淺,懂得如何去運用,而進行的一次分析設計綜合的訓練。而本次實訓的目的是讓我們掌握資料庫系統的原理、技術。將理論與實際相結合,應用現有的資料庫管理系統軟體,規范、科學地完成一個設計與實現。
這次我們實訓的內容是從資料庫、數據表的創建和修改開始的,表是建立關系資料庫的基本結構,用來存儲數據具有已定義的屬性,在表的操作過程中,有查看錶信息、查看錶屬性、修改表中的數據、刪除表中的數據及修改表和刪除表的操作。從實訓中讓我更明白一些知識,表是數據最重要的一個數據對象,表的創建好壞直接關繫到數資料庫的成敗,表的內容是越具體越好,但是也不能太繁瑣,以後在實際應用中多使用表,對表的規劃和理解就會越深刻。我們實訓的另一個內容是資料庫的約束、視圖、查詢。從中我們了解到查詢語句的基本結構,和簡單SELECT語句的使用,多表連接查詢。而在視圖的操作中,也了解到了視圖是常見的資料庫對象,是提供查看和存取數據的另一種途徑,對查詢執行的大部分操作,使用視圖一樣可以完成。使用視圖不僅可以簡化數據操作,還可以提高資料庫的安全性,不僅可以檢索數據,也可以通過視圖向基表中添加、修改和刪除數據。存儲過程、觸發器也是我們實訓的內容之一, 在操作中有建立存儲過程,執行存儲過程,及查看和修改存儲過程,這些都是非常基礎的東西,但對用戶卻是非常重要的呢,只有熟悉了T_SQL語言,才能更好的掌握更多的東西。我們還學習了,SQL管理、數據的導入、導出、備份和還原。有SQL Server 安全訪問控制;登錄賬戶的管理;資料庫角色的管理;用戶許可權管理。維護資料庫的安全是確保資料庫正常運行的重要工作。數據的備份是對SQL Server數據事務日誌進行拷貝,資料庫備份記錄了在進行備份操作的資料庫中所有數據的狀態。而數據的備份還分為資料庫完整備份、差異備份、事務日誌備份、文件及文件組備份。做數據備份就是為了以後的資料庫恢復用。在實訓內容上我們還做了倉庫管理資料庫,其中的要求包含了許多資料庫的對象,綜合了我們所學的許多知識,讓我們更努力的把所學到的東西運用上去。
實訓課是在學習與探索中度過的,短暫的一星期實訓是結束了,但其中讓我們學到了許多知識,出現許多未知的為什麼,如倉庫管理資料庫的初步設置、數據備份與還原的步驟,如何建立視圖、觸發器等一系列的問題,正是在老師和同學的共同努力之下,我們才一步步把問題解決了,最終完成了不可能完成的任務。
⑻ 大工19秋《SQL資料庫系統及應用》在線作業3(參考答案)
復合索引可以對資料庫表中( )欄位進行排序
A、11 B、16 C、17 D、1