第一篇:SQL數(shù)據(jù)庫學習筆記與心得(定稿)
SQL數(shù)據(jù)庫學習筆記與心得
0961140107
SQL是市場占有率最大的數(shù)據(jù)庫之一,是信息化社會的產(chǎn)物,是整理、查詢、分析數(shù)據(jù)的強有力工具。我對于SQL數(shù)據(jù)庫的學習是在實驗與探索之中度過的。
下面將我本學期所學的主要知識簡單總結(jié)如下:
共分四大塊:
一、數(shù)據(jù)庫基本原理;
二、SQL標準語言;
三、數(shù)據(jù)庫設計;
四、數(shù)據(jù)庫安全。
一、數(shù)據(jù)庫基本原理
數(shù)據(jù)庫技術(shù)是計算機領域中發(fā)展最快的技術(shù)之一。數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎。常用的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P?、對象關(guān)系模型。其中關(guān)系模型是目前最重要的一種數(shù)據(jù)模型。關(guān)系數(shù)據(jù)庫是我們需要掌握的重點。
關(guān)系模型中常用的關(guān)系操作包括:查詢操作和插入、刪除、修改操作兩大部分。關(guān)系的查詢表達能力很強,是關(guān)系操作中最主要的部分。
二、SQL標準語言
SQL(Structured Query Language),即結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標準語言。SQL標準語言從1986年公布以來隨著數(shù)據(jù)庫技術(shù)的發(fā)展不斷發(fā)展,不斷豐富。
SQL 功能動詞
數(shù) 據(jù) 定 義 CREATE,DROP,ALTER
數(shù) 據(jù) 查 詢 SELECT
數(shù) 據(jù) 操 縱 INSERT,UPDATE,DELETE
數(shù) 據(jù) 控 制 GRANT,REVOKE
SQL之所以能夠為用戶和業(yè)界所接受,并成為國際標準,是因為它是一個綜合的、功能極強同時又簡潔易學的語言。SQL集數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義林巧
和數(shù)據(jù)控制功能于一體。有如下特點:1)綜合統(tǒng)一;2)高度過程化;3)面向集合的操作方式;4)以同一種語法結(jié)構(gòu)提供多種使用方式;5)語言簡潔,易學易用。
SQL的數(shù)據(jù)定義語句:
創(chuàng)建刪除修改
表CREATE TABLEDROP TABLEALTER TABLE
視圖 CREATE VIEWDROP VIEW
索引 CREATE INDEXDROP INDEX
數(shù)據(jù)庫查詢是數(shù)據(jù)庫的核心操作。也是數(shù)據(jù)庫學習的重點和難點。SQL提供了SELECT語句進行數(shù)據(jù)庫的查詢,該語句具有靈活的使用方式和豐富的功能。其一般格式為:
SELECT [ALL|DISTINCT] <目標列表達式>
FROM <表名或視圖名>[,<表名或視圖名> ] …
[ WHERE <條件表達式> ]
[ GROUP BY <列名1> [ HAVING <條件表達式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
SELECT語句既可以完成簡單的單表查詢,也可以完成復雜的連接查詢和嵌套查詢。
(一)、單表查詢
1、選擇表中的若干列:
2、選擇表中的若干元組;
2)查詢滿足條件的元組。WHERE子句常用的查詢條件有
3、ORDER BY子句。
4、聚集函數(shù)。
5、ORDER BY子句
(二)、連接查詢
1、等值與非等值連接查詢;
2、自然連接;
3、外連接;
4、復合條件連接。
(三)、嵌套查詢
1、帶有IN謂語的子查詢;
2、帶有比較運算符的子查詢;
3、帶有ANY(SOME)或ALL謂語的子查詢;
4、帶有EXISTS謂詞的子查詢。
(四)、集合查詢。
數(shù)據(jù)的更新操作有三種:向表中添加若干行數(shù)據(jù)、修改表中的數(shù)據(jù)和刪除表中的若干行數(shù)據(jù)。
三、數(shù)據(jù)庫設計
數(shù)據(jù)庫設計是指對于一個給定的應用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應用需求(信息要求和處理要求
數(shù)據(jù)庫設計的基本步驟:
1、數(shù)據(jù)庫設計的準備工作;
2、數(shù)據(jù)庫設計的過程(六個階段): 1)需求分析階段;2)概念結(jié)構(gòu)設計階段;3)邏輯結(jié)構(gòu)設計階段;4)數(shù)據(jù)庫物理設計階段;5)數(shù)據(jù)庫實施階段;6)數(shù)據(jù)庫運行和維護階段.
四、數(shù)據(jù)庫安全
數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫,防止因用戶非法使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞。課本中講述了三類計算機系統(tǒng)安全性問題:技術(shù)安全類、管理安全類和政策法律類。
如何控制數(shù)據(jù)庫的安全性? 其常用的方法有:1)用戶標識和鑒定2)存取控制;3)視圖;4)審計;5)密碼存儲.
數(shù)據(jù)庫的完整性:即數(shù)據(jù)的正確性和相容性防止不合語義的數(shù)據(jù)進入數(shù)據(jù)庫。例如:學生的年齡必須是整數(shù),取值范圍為14--29;學生的性別只能是男或女;學生的學號一定是唯一的; 學生所在的系必須是學校開設的系;
以上是我對SQL數(shù)據(jù)庫重點知識的理解。通過學習本課程和上機實驗,我了解了數(shù)據(jù)庫的概念及其重要性,還有其今后的發(fā)展方向,這將有利于我今后更好地把握時代之脈搏。
第二篇:SQL數(shù)據(jù)庫心得
黃淮學院 2015---2016學年第 一 學期 《C#數(shù)據(jù)庫應用程序開發(fā)技術(shù)與案例教程》課程
題目:
學習報告
院
系:數(shù)學科學系 專
業(yè):數(shù)學與應用數(shù)學 年
級:1301B 姓
名:曹占營 學
號:1331110101 任課教師:楊鋒英
2015年 12 月 30日
C#數(shù)據(jù)庫學習報告
在日常生活中,我們和朋友、親戚聯(lián)系,會廣泛用到通訊錄,因此這門課程以通訊錄開發(fā)為案例,教我們學習軟件開發(fā)。
軟件開發(fā)是一項非常注重實踐工作,不可能只憑看書、看視頻就學會軟件開發(fā),必須扎扎實實、一行一行的編寫代碼,不斷積累項目經(jīng)驗,才能真正掌握編程技術(shù),所以我們要親自上級編寫程序,才能真正掌握軟件開發(fā)技術(shù)。
本書分為基礎篇、進階篇、高級篇,由淺入深地介紹了基于C#的數(shù)據(jù)庫編程技術(shù),所用的開發(fā)工具為Visual Studio 2008、SQL Server 2005以及Access 2007。
學習數(shù)據(jù)庫的內(nèi)容是從數(shù)據(jù)庫、數(shù)據(jù)表的創(chuàng)建和修改開始的,表是建立關(guān)系數(shù)據(jù)庫的基本結(jié)構(gòu),用來存儲數(shù)據(jù)具有已定義的屬性,在表的操作過程中,有查看表信息、查看表屬性、修改表中的數(shù)據(jù)、刪除表中的數(shù)據(jù)及修改表和刪除表的操作。從課程中讓我更明白一些知識,查詢可以通過SQL語言進行完成,這樣加深了查詢語句的基本結(jié)構(gòu),讓我們能更好的掌握其中語句,方便于我們后面的學習和應用。表是數(shù)據(jù)最重要的一個數(shù)據(jù)對象,表的創(chuàng)建好壞直接關(guān)系到數(shù)數(shù)據(jù)庫的成敗,表的內(nèi)容是越具體越好,但是也不能太繁瑣,以后在實際應用中多使用表,對表的規(guī)劃和理解就會越深刻。在編程方面是需要我們對于編程有邏輯思維能力及一定的編程技巧。在數(shù)據(jù)庫中插入表、表中的信息等都需要注意,不然很容易出錯。
在基礎篇中,詳細講解了通訊錄系統(tǒng)的設計、開發(fā)和安裝部署這樣一個完整過程,對各個任務進行詳細講解。基礎篇學習分為9個任務,分別為系統(tǒng)分析與設計、用戶登錄、主窗體設計、聯(lián)系人分組管理、聯(lián)系人管理、用戶密碼修改、數(shù)據(jù)庫備份與恢復、設計“關(guān)于”窗體、系統(tǒng)安裝與部署。學完基礎篇,即可開發(fā)出一個功能較為完備的通訊錄系統(tǒng)。在聯(lián)系人管理任務學習中,由于在Contact表中保存的是分組編號,而窗體上要顯示的是分組名稱,所以在查詢語句中需要級聯(lián)查詢,即SQL語句為”select Contact.Id, Name, Phone, Email, QQ, GroupName from Contact, ContactGroup where Contact.GroupId = ContactGroup.Id”。為了實現(xiàn)代碼復用,可以提供查詢功能,根據(jù)用戶選擇的擦尋天劍,拼接產(chǎn)生SQL語句。同時為了支持模糊查詢,還在SQL語句中用了like語句。通過SqlDataAdapter的Fill方法填充數(shù)據(jù)集,獲取數(shù)據(jù)。數(shù)據(jù)集中有了數(shù)據(jù)以后,我們只需設置DataGridView控件的DataSource屬性,就可以顯示數(shù)據(jù)了。
在進階篇中,介紹了企業(yè)項目開發(fā)中廣發(fā)用到的參數(shù)化SQL語句、存儲過程使用及定義數(shù)據(jù)庫操作類,分為3個任務學習,分別為使用參數(shù)化SQL語句、使用存儲過程、使用自定義數(shù)據(jù)庫操作類,進一步提高我們的數(shù)據(jù)庫編程能力。在使用存儲過程任務學習中,了解到存儲過程是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。在性能方面,存儲過程有如下的優(yōu)點。(1)與編譯,存儲過程預先編譯好放在數(shù)據(jù)庫內(nèi),減少編譯語句所花的時間。(2)緩存,編譯好的存儲過程會進入緩存,所以對于經(jīng)常執(zhí)行的存儲過程,除了第一次執(zhí)行外,其他次執(zhí)行的書都會有明顯提高。(3)減少網(wǎng)絡傳輸,特別對于處理一些數(shù)據(jù)的存儲過程,不必像直接用SQL語句實現(xiàn)那樣多次傳送數(shù)據(jù)到客戶端。通過前面的學習,細細體會對數(shù)據(jù)庫的操作,可以發(fā)現(xiàn),這么多操作其實可以分為4種。(1)對數(shù)據(jù)庫進行非連接式查詢操作,返回多條記錄。這種操作可以通過SqlDataAdapter對象的Fill方法來完成,即把查詢得到的結(jié)果填充到DataTable(或DataSet)對象中。(2)對數(shù)據(jù)庫進行連接式查詢操作,返回多條查詢記錄。這種操作可以通過SqlCommand對象的ExecuteReader方法來完成,返回SqlDataReader對象。(3)從數(shù)據(jù)庫中檢索單值。這種操作可以通過SqlCommand對象的ExecuteNonQuery方法來完成。ExecuteScalar方法返回的是Object類型,需要根據(jù)實際情況進行類型轉(zhuǎn)換。(4)對數(shù)據(jù)庫執(zhí)行增、刪、改操作。這種操作可以通過SqlCommand對象的ExecuteNonQuery方法來完成,返回增、刪、改操作后數(shù)據(jù)庫中受影響的行數(shù)。
在高級篇中,分為4個任務學習,分別為開發(fā)基于三層構(gòu)架的通訊錄程序、開發(fā)基于Access的通訊錄程序、實現(xiàn)基于抽象工廠模式的三層架構(gòu)、使用MD5加密用戶密碼。首先詳細講解了基于三層構(gòu)架的通訊錄程序開發(fā)過程以及如何開發(fā)一個基于Access的通訊錄系統(tǒng)。最后,介紹了如何采用MD5加密技術(shù)對用戶密碼加密。MD5加密技術(shù)也是實際項目開發(fā)中廣泛用到的,通過MD5加密用戶密碼,可以提高程序的安全性?!叭龑蛹軜?gòu)”一詞中的“三層”是指:“表示層”、“業(yè)務邏輯層”、“數(shù)據(jù)訪問層”。表示層:位于最外層,離用戶最近。用于顯示和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作界面。表示層的常見形式為WinFrom和WebForm。業(yè)務邏輯層:負責處理用戶輸入的信息,或者是將這些信息發(fā)送給數(shù)據(jù)訪問層進行保存,或者是調(diào)用數(shù)據(jù)訪問層中的函數(shù)再次讀出這些數(shù)據(jù)。業(yè)務邏輯層也可以包括一些對“商業(yè)邏輯”描述代碼在里面。數(shù)據(jù)訪問層:僅實現(xiàn)對數(shù)據(jù)的保存和讀取操作??梢栽L問數(shù)據(jù)庫系統(tǒng)、二進制文件、文本文檔或是XML文檔。
在這一學期有限的幾次實驗課后,我雖然沒有學會很多,但也學會了一些簡單的操作,我學會了一些簡單的數(shù)據(jù)運算,會建立一些簡單的表。有時候在做實驗時,對于實驗中的一些東西我不怎么了解,但我還會去做,因為我想只有多練習才能熟練,也才能理解掌握知識。我不知道這一門課對其他同學來說怎么樣,但對我來說卻有些難,但我會努力。因為我認為它對我以后考計算機二級有很大的幫助。
很快這一學期馬上就要結(jié)束了,數(shù)據(jù)庫這一門課也很快就要結(jié)束了,但這一學期的學習讓我知道了很多,也告訴了我在以后的人生中如何去做事,如何去做人。尤其是老師的耐心,老師的敬業(yè)精神感動了我,再做任何事時都應該認真負責,任何一個人都應該被尊重。
第三篇:SQL數(shù)據(jù)庫編程學習應用語句
SQL數(shù)據(jù)庫編程學習應用語句大全
1as 的用處
as可以對表和列取別名
在開發(fā)過程中經(jīng)常遇到開始給某一個的字段去field1的名稱,但后來有感覺field1字段指定不確切,于是又把此字段改成了field2,由于開始認為field1是常量,于是到處使用字符串field1,而且程序中又含有大量對field1的處理,此時就可以使用as
例如原來的 select field1 from tableA,改為selectfield2 asfield1 from tableA 代碼基本就可以不動了。
2自增長的字段的插入
開發(fā)中經(jīng)常遇到某個字段類型為IDENTITY,也就是自增長類型,但由于特殊需要,又要插入數(shù)據(jù)
需要臨時去掉,可以使用如下語句set IDENTITY_INSERTtablename on,在處理完成后在使用如下語句恢復 set IDENTITY_INSERTtablenameoff
3分組取每組的前N個數(shù)據(jù)
開發(fā)中還會遇到需要對某一組數(shù)據(jù)先分組,然后取每組的前n條記錄的情況
不妨試試如下代碼
[sql] view plaincopy
/*
按CurrentNodeLevel列分組,每組按NodeID排序,取出每個組中的前3個元素*/
declare @temp table(NodeIDint, CurrentNodeLevelint ,rowNumberint)--定義臨時表insert into @temp
selectNodeID,CurrentNodeLevel,ROW_NUMBER()
OVER(partitionby CurrentNodeLevel
order by NodeID)as rowNumber
from SchoolTerminalStruct---給臨時表中插入數(shù)據(jù)
select * from @temp where rowNumber<=3--從臨時表中取數(shù)據(jù)
4生成隨機數(shù)
主意此方法只能寫成存儲過程,不能寫成函數(shù)
[sql] view plaincopy
-----返回Max,Min之間的隨機數(shù)不能寫成函數(shù)
createproc [dbo].[getRAND]
(@Max int,--最大值
@Min int--,--最小值)
AS
BEGIN
DECLARE @result int
SELECT @result=RAND()*(@Max-@Min)+@Min
select@result
END
5把滿足一定條件的數(shù)據(jù)用逗號分隔
這可能也是一個很常用的語句了,經(jīng)常出現(xiàn)在一對多的關(guān)系中對外展示,要求把子表中的數(shù)據(jù)取出來用逗號或者其他符號分隔開
[sql] view plaincopy
/*
把滿足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗號分隔開合并為一個字段輸出
*/
select *,stuff((select ',' + t1.NodeName from tableA t1,tableB t2
wheret2.NodeID=t1.NodeID
for xml path('')), 1 , 1 , '')as text
fromtableA
6在數(shù)據(jù)庫中處理異常
通過個參數(shù)附加output標志來輸出參數(shù),通過TRY,CATCH捕捉異常
[sql] view plaincopy
CREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]
@nodenameint,@Result int output---2,操作失??;0操作成功
AS
BEGIN
begin
BEGIN TRY
UPDATE FunctionTree SET NodeName=@nodename
set @Result=0--操作成功
END TRY
BEGIN CATCH
set @Result=-2--操作失敗
END CATCH
end
END
7查詢中的條件判斷
經(jīng)常遇到在某些條件下應該查詢這個字段,在另外一些條件下需要其他字段的情況,可以通過unoin來完成,但也可以通過CASE WHEN 完成[sql] view plaincopy
/*
在State=0 時返回field1 ,在State=1時返回 field2 ,其他時返回field3
*/
SELECT(CASE WHENState=0 THEN field1 WHENState=1 THEN field2
ELSE field3 END)as State
FROM tablename
8單引號的處理
在包含單引號時應該使用兩個單引號轉(zhuǎn)義
[sql] view plaincopy
dbo.sp_executesql @statement = N' select indexID,Sex=(case when Sex=0then ''男'' else ''女'' end)
fromtablename '
9使用游標
[sql] view plaincopy
declare @temp table(TaskIDint ,NodeIdint)--聲明臨時表
insert into @temp select A.TaskID ,A.NodeIdfrom tableAA,tableB B
whereA.TaskID=B.TaskID--//--給聲明的臨時表中插入記錄
DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--聲明游標
FOR select TaskID,NodeId from @temp;--游標需要用到的列
open tnames_cursor--打開游標
DECLARE @TaskIDint,@NodeIdint;--聲明變量
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移動游標給變量賦值,應該與游標需要用到的列一一對應,順序類型應該一致
WHILE(@@FETCH_STATUS = 0)--循環(huán)
BEGIN
BEGIN
exec TaskType @TaskID,@NodeId--調(diào)用存儲過程
END
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移動游標給變量賦值 應該與游標需要用到的列一一對應,順序類型應該一致
END
CLOSE tnames_cursor--關(guān)閉游標
DEALLOCATE tnames_cursor--釋放游標
10合并更新和插入
在開發(fā)中大部分情況下,插入和更新傳遞的參數(shù)基本上是一樣,那為什么不合并呢
[sql] view plaincopy
createproc [dbo].[Save_TableName]
(@field1 varchar(50),@field2varchar(200),@ID int,@insertOrUpdate--小于0插入 大于0更新)
as
begin
if(@insertOrUpdate<0)
begin
INSERT INTOTableName(field1,field2,ID)
values(@field1,@field2,@ID);
end
else
begin
UPDATE TableNameSET field1= @field1, field2 = @field2
where ID =@ID;
end
end
11定義函數(shù)
在沒有滿足要求的情況時,可以定義函數(shù),但是使用自己定義的函數(shù)時需要加上架構(gòu)名稱
[sql] view plaincopy
create FUNCTION [dbo].[CheckTime]
(@startTimedatetime,@endTimedatetime--,)
RETURNSint
AS
BEGIN
DECLARE @result int
SET@result=DATEDIFF(hour, @startTime, @endTime)--
if(@result=0)--小時相同 比較分鐘
begin
SET@result=DATEDIFF(minute, @startTime, @endTime)
if(@result=0)--分鐘相同比較秒
begin
SET@result=DATEDIFF(second, @startTime, @endTime)
end
end
RETURN @result
END
調(diào)用此函數(shù)
[sql] view plaincopy
dbo.CheckTime(@startTime1, @startTime2)--需要加上架構(gòu)名稱
12遞歸讀取數(shù)據(jù)
在實際的應用中經(jīng)常遇到樹結(jié)構(gòu)的表,但讀取會比較麻煩,這里提夠一個函數(shù)
[sql] view plaincopy
/*
函數(shù) 返回表,返回給定節(jié)點的所有子孫節(jié)點,而不僅僅是子節(jié)點
*/
Create Function [dbo].[GetChildren](@NodeIDInt)
Returns @Tree Table(NodeIDInt, NodeNameVarchar(50), ParentIDInt)
As
Begin
Insert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeID
While @@Rowcount> 0
Insert @Tree Select A.NodeID, A.NodeName, A.ParentID
From Treetable A
Inner Join @Tree B
On A.ParentID = B.NodeIDAndA.NodeID Not In(Select NodeID From @Tree)Return
End
13通過默認值實現(xiàn)存儲過程重載
存儲過程可以使用默認值,估計都知道,但以此就可以實現(xiàn)類似函數(shù)重載的效果
例如,如下的存儲過程由于使用了默認值,就可以不傳遞參數(shù),傳遞一個參數(shù),兩個,三個,[sql] view plaincopy
CREATE PROCEDURE dbo.my_proc
@firstint = NULL,--NULL default value
@secondint = 2,--Default value of 2
@thirdint = 3--Default value of 3
AS SELECT @first, @second, @third;
14在數(shù)據(jù)庫中拼字符串,也可以用參數(shù)
在實際的開發(fā)中,某些情況下在數(shù)據(jù)庫中拼字符串不可避免,但又擔心有特殊字符,導致拼出來的SQL有問題,其實數(shù)據(jù)庫中拼字符串也可以使用參數(shù),這就要用到dbo.sp_executesql,這樣就可以避免SQL注入和特殊字符導致的錯誤
如
[sql] view plaincopy
DECLARE @IntVariable INT;--定義變量
DECLARE @SQLString NVARCHAR(500);--存儲拼出來的SQL
DECLARE @ParmDefinition NVARCHAR(500);---存儲拼出來的SQL中的參數(shù)
/* Build the SQL string one time.*/
SET @SQLString =
N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';/* Specify the parameter format one time.*/
SET @ParmDefinition = N'@SalesIDint';--賦值
/* Execute the string with the first parameter value.*/
SET @IntVariable = 275;--賦值
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
/* Execute the same string with the second parameter value.*/
SET @IntVariable = 276;
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
16觸發(fā)器需要注意的問題
在使用觸發(fā)器時有一個問題,或許很少有人注意到,一條更新語句一次更新了十條記錄,會觸發(fā)幾次觸發(fā)器?只有一次!很奇怪,但卻是事實,所以這需要注意,一不小心就會把好
多數(shù)據(jù)漏了
第四篇:SQL查詢語句學習筆記
問題描述:
為管理崗位業(yè)務培訓信息,建立3個表:
S(SID,SNAME,SDEPT,SEX,AGE)SID,SNAME,SDEPT,SEX,AGE 分別代表學號、學員姓名、所屬部門、學員性別、學員年齡
C(CID,CNAME)CID,CNAME 分別代表課程編號、課程名稱
SC(SID,CID,GRADE)SID,CID,GRADE 分別代表學號、所選修的課程編號、學習成績
表結(jié)構(gòu)與數(shù)據(jù)見Data4SqlTest1.sql
要求實現(xiàn)如下5個處理:
1.使用標準SQL嵌套語句查詢選修課程名稱為“英語”的學員學號和姓名
2.使用標準SQL Join語句查詢選修課程名稱為“英語”的學員學號和姓名
3.使用標準SQL語句查詢不選修“數(shù)學”課程的學員姓名和所屬單位
4.使用標準SQL嵌套語句查詢選修全部課程的學員姓名和所屬單位
5.查詢選修了課程的學員人數(shù)
6.查詢選修課程超過3門的學員學號和所屬單位
1.使用標準SQL嵌套語句查詢選修課程名稱為“英語”的學員學號和姓名 Java代碼
1.SELECT SNAME,SDEPT FROM S
2.WHERE SID IN(3.SELECT SID FROM C,SC
4.WHERE C.CID=SC.CID
5.AND CNAME='英語')
2.使用標準SQL Join語句查詢選修課程名稱為“英語”的學員學號和姓名 Java代碼
1.SELECT SNAME,SDEPT FROM S
2.JOIN SC ON S.SID=SC.SID JOIN C ON C.CID=SC.CID
3.WHERE CNAME='英語'
3.使用標準SQL語句查詢不選修“數(shù)學”課程的學員姓名和所屬單位 Java代碼
1.select SNAME,SDEPT
2.from S
3.where SID not in(4.select SC.SID
5.from SC
6.right join(select S.SID,C.CID from S join C)as T on SC.SID=T.SID
and SC.CID=T.CID join C on T.CID=C.CID
7.where C.CNAME='數(shù)學' and SC.SID is not null
8.)
或者是:
Java代碼
1.SELECT SNAME,SDEPT FROM S
2.WHERE SID NOT IN(3.SELECT SID FROM SC
4.WHERE CID IN(SELECT CID FROM C WHERE CNAME='數(shù)學'))
4.使用標準SQL嵌套語句查詢選修全部課程的學員姓名和所屬單位 Java代碼
1.select SNAME,SDEPT
2.from S
3.where SID in
4.(select S.SID
5.from S
6.inner join SC on S.SID=SC.SID
7.group by S.SID
8.having count(CID)=(select count(1)from C)
9.)
5.查詢選修了課程的學員人數(shù)
Java代碼
1.SELECT 學員人數(shù)=COUNT(DISTINCT(SID))FROM SC
6.查詢選修課程超過3門的學員學號和所屬單位
Java代碼
1.SELECT SNAME,SDEPT FROM S
2.WHERE SID IN(3.SELECT SID FROM SC
4.GROUP BY SID
5.HAVING COUNT(DISTINCT(CID))>3)
第五篇:SQL數(shù)據(jù)庫選擇題及答案
1、在數(shù)據(jù)庫技術(shù)中,獨立于計算機系統(tǒng)的模型是_C__。A、面向?qū)ο蟮哪P虰、關(guān)系模型C、E-R模型D、層次模型
2、數(shù)據(jù)庫系統(tǒng)的控制中樞是__B_。A、數(shù)據(jù)庫、b、數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫管理員D、數(shù)據(jù)庫應用系統(tǒng)
3、使用SQL命令將學生表STUDENT中的學生年齡AGE字段的值增加1歲,應該使用的命令是__C_。
A、UPDATE SET AGE WITH AGE+1
B、REPLACE AGE WITH AGE+1
C、UPDATE STUDENT SET AGE=AGE+1
D、UPDATE STUDENT AGE WITH AGE+1
4、在關(guān)系數(shù)據(jù)庫中,建立數(shù)據(jù)庫表時,將年齡字段值限制在12~40歲之間的這種約束屬于__B__。
A、視圖完整性約束B、域完整性約束C、參照完整性約束D、實體完整性約束
5、在 SQL 語句中,與 X BETWEEN 20 AND 30 等價的表達式是__D_。A、X>=20 AND X<30
B、X>20 AND X<30
C、X>20 AND X<=30
D、X>=20 AND X<=30
6、在數(shù)據(jù)庫中,概念模型是_D__。A、用于現(xiàn)實的建模,與具體的DBMS有關(guān)B、用于信息世界的建模,與具體的DBMS有關(guān)
C、用于現(xiàn)實的建模,與具體的DBMS無關(guān)D、用于信息世界的建模,與具體的DBMS無關(guān)
7、數(shù)據(jù)庫的并發(fā)操作可能帶來的問題包括__B_。A非法用戶的使用B丟失更新C數(shù)據(jù)獨立性會提高D增加數(shù)據(jù)冗余度
8、在關(guān)系數(shù)據(jù)庫中,模式對應的是__A___。A、視圖和所有基本表
B、視圖和部分基本表
C、基本表
D、索引
9、能實現(xiàn)絕對的與平臺無關(guān)性的Web數(shù)據(jù)庫訪問技術(shù)是_D_。A、ADO
B、ActiveX
C、WebbaseAPI
D、JDBC
10、在下列描述中,正確的描述是__B___。
A、SQL 是一種過程化語言B、SQL 采用集合操作方式
C、SQL 不能嵌入到高級語言程序中
D、SQL 是一種 DBMS
11、數(shù)據(jù)庫系統(tǒng)是由__A__組成的。A、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和用戶
B、數(shù)據(jù)文件、命令文件和報表
C、數(shù)據(jù)庫文件結(jié)構(gòu)和數(shù)據(jù)
D、常量、變量和函數(shù)
12、在SQL查詢時,使用WHERE子句指出的是__B__。A、查詢目標B、查詢條件C、查詢視圖D、查詢結(jié)果
13、在下列 RDMBS 產(chǎn)品中,屬于小型數(shù)據(jù)庫系統(tǒng)的是_A_。A、Access B、Oracle C、Sybase D、Informix
14、數(shù)據(jù)庫類型是按照_A_來劃分的。
A、數(shù)據(jù)模型B、記錄形式C、數(shù)據(jù)存取方法D、文件形式
15、作為Microsoft Office家族成員之一的_A_數(shù)據(jù)庫,能夠與其他Office組件進行數(shù)據(jù)交換共享數(shù)據(jù)資源,易于生成集文字處理、圖表生成和數(shù)據(jù)管理于一體的辦公自動化系統(tǒng)。A、Access
B、Oracle
C、Sybase
D、Informix
16、數(shù)據(jù)庫管理系統(tǒng)更適合于_D_方面的應用。A、CAD
B、過程控制C、科學計算D、數(shù)據(jù)處理
17、下列四組SQL命令,全部屬于數(shù)據(jù)定義語句的命令是_C__。A、CREATE,DROP,ALTER
B、CREATE,DROP,UPDATE
C、CREATE,DROP,GRANT
D、CREATE,DROP,SELECT
18、通過Internet及瀏覽器處理的數(shù)據(jù)庫,應該是_C__處理。A、集中式
B、分布式
C、主從結(jié)構(gòu)式D、以上3種模式
19、數(shù)據(jù)的邏輯獨立性是指__D_。A、數(shù)據(jù)與存儲結(jié)構(gòu)的邏輯獨立性 B、數(shù)據(jù)元素之間的邏輯獨立性
C、存儲結(jié)構(gòu)與物理結(jié)構(gòu)的邏輯獨立性
D、數(shù)據(jù)與程序的邏輯獨立性
20、在數(shù)據(jù)庫技術(shù)中,獨立于計算機系統(tǒng)的模型是_C__。A面向?qū)ο蟮哪P?/p>
B關(guān)系模型
C、E-R模型
D、層次模型
21、關(guān)系代數(shù)的3個基本運算是–D--、投影、連接。A、關(guān)系與B、蘊含C、關(guān)系或D、選擇
22、下面命題不正確的是:A、若冗余數(shù)據(jù)可以控制,則數(shù)據(jù)更新的一致性得以保證
B、數(shù)據(jù)庫減少了不必要的數(shù)據(jù)冗余C、數(shù)據(jù)庫的數(shù)據(jù)可以共享D、數(shù)據(jù)庫中不存在數(shù)據(jù)冗余
23、在基本SQL中不可以實現(xiàn): A、定義視圖B、并發(fā)控制C、定義基表D、查詢視圖和基表
24、用二維表來表示實體及實體之間聯(lián)系的數(shù)據(jù)模型稱為_C___。
A、實體-聯(lián)系模型B、層次模型C、關(guān)系模型D、網(wǎng)狀模型
25、查找工資在600元以上并且職稱為工程師的紀錄,邏輯表達式為_D___。
A、“工資”>600.OR.職稱=“工程師”
B、工資>600.AND.職稱=工程師
C、“工資”>600.AND.“職稱”=“工程師”
D、工資>600.AND.職稱=“工程師”
26、數(shù)據(jù)庫鏡像可以用于__C_。(1分)
A、實現(xiàn)數(shù)據(jù)庫的安全性
B、實現(xiàn)數(shù)據(jù)共享C、進行數(shù)據(jù)庫恢復或并發(fā)操作D、保證數(shù)據(jù)庫的完整性
27、在下列類型的數(shù)據(jù)庫系統(tǒng)中,應用最廣泛的是__C___。(1分)
A、分布型數(shù)據(jù)庫系統(tǒng)B、邏輯型數(shù)據(jù)庫系統(tǒng)C、關(guān)系型數(shù)據(jù)庫系統(tǒng)D、層次型數(shù)據(jù)庫系統(tǒng)
28、在下列描述中,正確的描述是__B__。(1分)A、SQL 是一種過程化語言B、SQL 采用集合操作方式
C、SQL 不能嵌入到高級語言程序中
D、SQL 是一種 DBMS