




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL Server 2008數(shù)據(jù)庫創(chuàng)建、建表、查詢語句一、創(chuàng)建數(shù)據(jù)庫 1、利用對(duì)象資源管理器創(chuàng)建用戶數(shù)據(jù)庫:(1)選擇“開始”“程序”Microsoft SQL Server 2008SQL Server Management Studio命令,打開SQL Server Management Studio。(2)使用“Windows身份驗(yàn)證”連接到SQL Server 2008數(shù)據(jù)庫實(shí)例。(3)展開SQL Server 實(shí)例,右擊“數(shù)據(jù)庫”,然后人彈出的快捷菜單中選擇“新建數(shù)據(jù)庫存”命令,打開“新建數(shù)據(jù)庫”對(duì)話框。(4)在“新建數(shù)據(jù)庫”對(duì)話框中,可以定義數(shù)據(jù)庫的名稱、數(shù)據(jù)庫的所有者、是否使用
2、全文索引、數(shù)據(jù)文件和日志文件的邏輯名稱和路徑、文件組、初始大小和增長方式等。輸入數(shù)據(jù)庫名稱student。2、利用T-SQL語句創(chuàng)建用戶數(shù)據(jù)庫:在SQL Server Management Studio中,單擊標(biāo)準(zhǔn)工具欄的“新建查詢”按鈕,啟動(dòng)SQL編輯器窗口,在光標(biāo)處輸入T-SQL語句,單擊“執(zhí)行”按鈕。SQL編輯器就提交用戶輸入的T-SQL語句,然后發(fā)送到服務(wù)器執(zhí)行,并返回執(zhí)行結(jié)果。創(chuàng)建數(shù)據(jù)庫student的T-SQL語句如下:Create data base studentOn primary(name=student_data,filename='E:SQL Server200
3、8 SQLFULL_CHSstudent_data.mdf',size=3,maxsize=unlimited,filegrowth=1)Log on(name=student_log,filename='E:SQL Server2008 SQLFULL_CHSstudent_log.ldf',size=1,maxsize=20,filegrowth=10%)二、創(chuàng)建數(shù)據(jù)表1、利用表設(shè)計(jì)器創(chuàng)建數(shù)據(jù)表:(1)啟動(dòng)SQL Server Management Studio,連接到SQL Server 2008數(shù)據(jù)庫實(shí)例。(2)展開SQL Server實(shí)例,選擇“數(shù)據(jù)庫”stu
4、dent“表”,單擊鼠標(biāo)右鍵,然后從彈出的快捷菜單中選擇“新建表”命令,打開“表設(shè)計(jì)器”。(3)在“表設(shè)計(jì)器”中,可以定義各列的名稱、數(shù)據(jù)類型、長度、是否允許為空等屬性。(4)當(dāng)完成新建表的各個(gè)列的屬性設(shè)置后,單擊工具欄上的“保存”按鈕,彈出“選擇名稱”對(duì)話框,輸入新建表名stu_info,SQL Server數(shù)據(jù)庫引擎會(huì)依據(jù)用戶的設(shè)置完成新表的創(chuàng)建。2、利用T-SQL語句創(chuàng)建數(shù)據(jù)表:Create table stu_info(stu_id char(10)not null,name nvarchar(20)not null,birthday date null,sex nchar(2)nul
5、l,address nvarchar(20)null,mark int null,major nvarchar(20)null,sdept nvarchar(20)null);3、樣本數(shù)據(jù)庫student表數(shù)據(jù):學(xué)生信息表(stu_info):課程信息表(course_info):學(xué)生成績(jī)表(stu_grade):三、完整性與約束數(shù)據(jù)庫中的數(shù)據(jù)是現(xiàn)實(shí)世界的反映,數(shù)據(jù)庫的設(shè)計(jì)必須能夠滿足現(xiàn)實(shí)情況的實(shí)現(xiàn),即滿足現(xiàn)實(shí)商業(yè)規(guī)則的要求,這也是數(shù)據(jù)完整性的要求。在數(shù)據(jù)庫的管理系統(tǒng)中,約束是保證數(shù)據(jù)庫中數(shù)據(jù)完整性的重要方法。1、 完整性:數(shù)據(jù)完整性是數(shù)據(jù)庫設(shè)計(jì)方面一個(gè)非常重要的問題,數(shù)據(jù)完整性代表數(shù)據(jù)的正確
6、性、一致性和可靠性。實(shí)施數(shù)據(jù)完整性的目的在于確保數(shù)據(jù)的質(zhì)量。在SQL Server中,根據(jù)數(shù)據(jù)完整性措施所作用的數(shù)據(jù)庫對(duì)象和范圍不同,可以將數(shù)據(jù)完整性分類為實(shí)體完整性、域完整性和參照完整性。實(shí)體完整性把數(shù)據(jù)表中的每行看作一個(gè)實(shí)體,它要求所有的行都具有唯一的標(biāo)識(shí);域完整性要求數(shù)據(jù)表中指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)據(jù)范圍;參照完整性維持被參照表和參照表之間的數(shù)據(jù)一致性。2、 約束:約束是數(shù)據(jù)庫中的數(shù)據(jù)完整性實(shí)現(xiàn)的具體方法。在SQL Server中,包括5種約束類型:primary key約束、foreign key約束、unique約束、check約束和default約束。四、數(shù)據(jù)
7、查詢1、查詢語句:查詢就是根據(jù)客戶端的要求,數(shù)據(jù)庫服務(wù)器搜尋出用戶所需要的信息資料,并按用戶規(guī)定的格式進(jìn)行整理后返回給客戶端。查詢語句select在SQL Server中是使用頻率最高的語句,可以說select語句是SQL語言的靈魂。select語句的語法結(jié)構(gòu):select select_listinto new_tableFrom table_sourcewhere search_conditiongroup by group_by_expressionhaving search_conditionOrder by order_expressionasc|desc參數(shù)說明如下:Select子
8、句:指定由查詢結(jié)果返回的列。Into子句:將查詢結(jié)果存儲(chǔ)到新表或視圖中。From子句:用于指定數(shù)據(jù)源,即使用的列所在的表或視圖。如果對(duì)象不止一個(gè),那么它們之間必用逗號(hào)分開。Where子句:指定用于限制返回的行的搜索條件。如果select語句沒有where子句,dbms假設(shè)目標(biāo)表中的所有行都滿足搜索條件。Group by子句:指定用來放置輸出行的組,并且如果select子句select_list中包含聚合函數(shù),則計(jì)算每組的匯總值。Having子句:指定組或聚合函數(shù)的搜索條件。Having通常與groupby子句一起使用。Order by子句:指定結(jié)果集的排序方式。ASC關(guān)鍵字表示升序排列結(jié)果,D
9、ESC關(guān)鍵字表示降序排列結(jié)果。如果沒有指定任何一個(gè)關(guān)鍵字,那么ASC就是默認(rèn)的關(guān)鍵字。如果沒有orderby子句,DBMS將根據(jù)輸入表中的數(shù)據(jù)的存放位置來顯示數(shù)據(jù)。 在這一系列的子句中,select子句和from子句是必需的,其他的子句根據(jù)需要都是可選的。2、簡(jiǎn)單查詢:21、查詢列:(1)查詢指定列:數(shù)據(jù)表中有很多列,通常情況下并不需要查看全部的列,因?yàn)椴煌挠脩羲P(guān)注的內(nèi)容不同。在指定列的查詢中,列的顯示順序由select子句指定,與數(shù)據(jù)在表中的存儲(chǔ)順序無關(guān);同時(shí),在查詢多列時(shí),用“,”將各字段隔開。例7-1、查詢所有同學(xué)學(xué)號(hào)、姓名和成績(jī)信息。Select stu_id,name,markf
10、rom stu_info查詢結(jié)果如下:(2)查詢所有列:使用“*”通配符,查詢結(jié)果將列出表中所有列的值,而不必指明各列的列名,這在用戶不清楚表中各列的列名時(shí)非常有用。服務(wù)器會(huì)按用戶創(chuàng)建表格時(shí)聲明列的順序來顯示所有的列。例7-2、查詢所有同學(xué)的所有信息。select*from stu_info查詢結(jié)果如下:(3)使用運(yùn)算列:YEAR為系統(tǒng)函數(shù),獲取指定日期的年份;GEDDATE()為系統(tǒng)函數(shù),獲取當(dāng)前日期和時(shí)間。例7-3、查詢所有同學(xué)的年齡信息。Select stu_id,name,YEAR(getdate()-YEAR(birthday)from stu_info查詢結(jié)果如下:(4)改變列標(biāo)題
11、顯示:通常在查詢結(jié)果顯示的列標(biāo)題就是創(chuàng)建表時(shí)所使用的列名,但是,這在實(shí)際使用中往往會(huì)帶來一些不便,因此,可以利用 列標(biāo)題=列名 或 as 列標(biāo)題 來根據(jù)需要修改列標(biāo)題的顯示。例7-4、查詢所有同學(xué)的年齡信息。Select name as'姓名',YEAR(getdate()-YEAR(birthday)as'年齡'from stu_info1.函數(shù)year(getdate() 表示當(dāng)前的年份2.函數(shù)year(birthday) 表示出生的年份3.year(getdate()-year(birthday)=22就是“當(dāng)前的年份”-“出生的年份”=22(單位是年)計(jì)
12、算出來的結(jié)果是當(dāng)前年齡查詢結(jié)果如下:(5)除去結(jié)果的重復(fù)信息:使用 distinct 關(guān)鍵字能夠從返回的結(jié)果數(shù)據(jù)集合中刪除重復(fù)的行,使返回的結(jié)果更簡(jiǎn)潔。例7-5、查詢所有的院系信息。Select distinct sdeptfrom stu_info查詢結(jié)果如下:(6)返回查詢的部分?jǐn)?shù)據(jù):在SQL Server 2008中,提供了 top 關(guān)鍵字讓用戶指定返回一定數(shù)量的數(shù)據(jù)。Top n 表示返回最前面的n 行,n 表示返回的行數(shù);top n percent 表示返回前面的n%行。例7-6、查詢前5位同學(xué)的學(xué)號(hào)、姓名和成績(jī)信息。Select top 5 stu_id,name,markfrom
13、stu_info查詢結(jié)果如下:例7-7、查詢60%同學(xué)的學(xué)號(hào)、姓名和成績(jī)信息。Select top 60 percent stu_id,name,markfrom stu_info查詢結(jié)果如下:22、選擇行:Where 子句用于指定查詢條件,使得select 語句的結(jié)果表中只包含那些滿足查詢條件的記錄。在使用時(shí),where 子句必須緊跟在 from 子句后面。Where 子句中的條件表達(dá)式包括算術(shù)表達(dá)式和邏輯表達(dá)式兩種,SQL Server對(duì)Where 子句中的查詢條件的數(shù)目沒有限制。(1)使用比較表達(dá)式:例7-8、查詢所有的男同學(xué)學(xué)號(hào)、姓名、生日和性別信息。Select stu_id,nam
14、e,birthday,sexfrom stu_infowhere sex='男'查詢結(jié)果如下:例7-9、查詢所有的總分大于550分的同學(xué)學(xué)號(hào)、姓名、生日和性別信息。Select stu_id,name,birthday,sexfrom stu_infowhere mark>550查詢結(jié)果如下:(2)使用邏輯比較表達(dá)式:例7-10、查詢所有總分大于550的男同學(xué)信息。Select stu_id,name,birthday,sexfrom stu_infowhere mark>550 and sex='男'查詢結(jié)果如下:例7-11、查詢所有總分大于550
15、分或男同學(xué)信息。Select stu_id,name,birthday,sexFrom stu_infoWhere mark>550 or sex='男'查詢結(jié)果如下:為了增強(qiáng)程序可讀性,一般采用括號(hào)()來實(shí)現(xiàn)需要的執(zhí)行順序,而不考慮其默認(rèn)的優(yōu)先級(jí)順序。例7-12、查詢所有信息學(xué)院和會(huì)計(jì)學(xué)院并且總分大于550分的同學(xué)信息。select*from stu_info where (sdept='信息學(xué)院'or sdept='會(huì)計(jì)學(xué)院')and mark>550查詢結(jié)果如下:(3)空值(null)的判斷:如果在創(chuàng)建數(shù)據(jù)表時(shí)沒有指定 not
16、null 約束,那么數(shù)據(jù)表中某些列的值就可以為null。所謂null就是空,在數(shù)據(jù)庫中,其長度為0。例7-13、查詢所有籍貫為空的同學(xué)信息。select*from stu_infowhere address is null查詢結(jié)果如下:(4)限定數(shù)據(jù)范圍:使用between限制查詢數(shù)據(jù)范圍時(shí)同時(shí)包括了邊界值,效果完全可以用含有“>=”和“<=”的邏輯表達(dá)式來代替;而使用not between進(jìn)行查詢時(shí)沒有包括邊界值,效果完全可以用含有“>”和“<”的邏輯表達(dá)式來代替。例7-14、查詢總分在530560之間的同學(xué)信息。select*from stu_infowhere m
17、ark between 530 and 560查詢結(jié)果如下:(5)限制檢索數(shù)據(jù)的范圍:對(duì)于列值不在一個(gè)連續(xù)的取值區(qū)間,而是一些離散的值,利用between關(guān)鍵字就無能為力了,可以利用SQL Server提供的另一個(gè)關(guān)鍵字 IN。在大多數(shù)情況下,OR 運(yùn)算符與IN 運(yùn)算符可以實(shí)現(xiàn)相同的功能。例7-15、查詢所有在信息學(xué)院或會(huì)計(jì)學(xué)院就讀的同學(xué)信息。select*from stu_infowhere sdept in('信息學(xué)院','會(huì)計(jì)學(xué)院')查詢結(jié)果如下:(6)模糊查詢:在實(shí)際的應(yīng)用中,用戶不會(huì)總是能夠精確的給出查詢條件。因此,經(jīng)常需要根據(jù)一些并不確切的線索來搜索
18、信息。SQL Server提供了like子句來進(jìn)行這類模糊搜索。Like子句在大多數(shù)情況下會(huì)與通配符配合使用。所有通配符只有在like子句中才有意義,否則通配符會(huì)被當(dāng)作普遍字符處理。各通配符也可以組合使用,實(shí)現(xiàn)復(fù)雜的模糊查詢。(通配符 “%” 表示任意字符的匹配;通配符“_ ”只能匹配任何單個(gè)字符;通配符“”用于指定范圍(如a-z)或集合(如abcdef)中的任何單個(gè)字符;通配符“”用于匹配沒有在方括號(hào)中列出的字符。)在使用like進(jìn)行模糊查詢時(shí),當(dāng)“%”、“_”和“”符號(hào)單獨(dú)出現(xiàn)時(shí),都會(huì)被作為通配符進(jìn)行處理。但是有時(shí)可能需要搜索的字符串包含量一個(gè)或多個(gè)特殊通配符,例如,數(shù)據(jù)表中可能存儲(chǔ)含百分
19、號(hào)(%)的折扣值。若要搜索作為字符而不是通配符的百分號(hào),必須提供escape關(guān)鍵字和轉(zhuǎn)義符,例如,“l(fā)ike %B% escape B ”就是使用了escape關(guān)鍵字定義了轉(zhuǎn)義字符B,將字符串“%B%”中的第二個(gè)百分號(hào)(%)作為實(shí)際值,而不是通配符。例7-16、查詢所有姓“張”的同學(xué)信息。select*from stu_infowhere name like '張%'查詢結(jié)果如下:例7-17、查詢所有姓“張”,而且姓名是兩個(gè)字的同學(xué)信息。select*from stu_infowhere name like '張_'查詢結(jié)果如下:例7-18、查詢所有姓“張”或姓
20、“王”的同學(xué)信息。select*from stu_infowhere name like '張王%'查詢結(jié)果如下:例7-19、查詢所有不姓“張”也不姓“王”的同學(xué)信息。select*from stu_infowhere name like '張王%'查詢結(jié)果如下:23、排序查詢結(jié)果:在SQL語句中,order by 子句用于排序。Order by子句總是在where子句(如果有的話)后面說明的,可以包含一個(gè)或多個(gè)列,每個(gè)列之間以逗號(hào)分隔??梢赃x擇使用asc|desc關(guān)鍵字指定按照升序|降序排序。如果沒有特別說明,值是以升序列進(jìn)行排序的,即默認(rèn)情況下使用的是asc
21、關(guān)鍵字。例7-20、查詢所有同學(xué)課程編號(hào)701的課程成績(jī),并按由大到小的順序輸出。select*from stu_gradewhere course_id='701'orderby grade desc查詢結(jié)果如下:使用order by子句也可以根據(jù)兩列或多列的結(jié)果進(jìn)行排序,并用逗號(hào)分隔開不同的排序關(guān)鍵字。其實(shí)際排序結(jié)果是根據(jù)order by子句后面列名的順序確定優(yōu)先級(jí)的。即查詢結(jié)果首先以第一列的順序進(jìn)行排序,而只有當(dāng)?shù)谝涣谐霈F(xiàn)相同的信息時(shí),這些相同的信息再按第二列的順序進(jìn)行排序,依此類推。例7-21、查詢所有同學(xué)課程編號(hào)701的課程成績(jī),并按由大到小的順序輸出,如果成績(jī)相同,
22、則按學(xué)號(hào)由小到大排序。select*from stu_gradewhere course_id='701'orderby grade desc,stu_id查詢結(jié)果如下: Order by子句除了可以根據(jù)列名進(jìn)行排序外,還支持根據(jù)列的相對(duì)位置(即序號(hào))進(jìn)行排序。例7-22、查詢所有同學(xué)課程編號(hào)701的課程成績(jī),并按由大到小的順序輸出,如果成績(jī)相同,則按學(xué)號(hào)由小到大排列。Select stu_id,course_id,gradeFrom stu_gradeWhere course_id='701'orderby 3 desc,1查詢結(jié)果如下:24、分組與匯總:(1
23、)聚合函數(shù):聚合函數(shù)是TSQL所提供的系統(tǒng)函數(shù),可以返回一列,幾列或全部列的匯總數(shù)據(jù),用于計(jì)數(shù)或統(tǒng)計(jì)。這類函數(shù)(除count外)僅用于數(shù)值型列,并且在列上使用聚合函數(shù)時(shí),不考慮null值。例7-23、統(tǒng)計(jì)學(xué)生信息表中學(xué)生人數(shù)。Select COUNT(*) as '學(xué)生人數(shù)'From stu_info查詢結(jié)果如下:例7-24、統(tǒng)計(jì)學(xué)生成績(jī)表中學(xué)號(hào)為2007070102同學(xué)的最高分、最低分、平均分和總分。Select MAX(grade),MIN(grade),AVG(grade),SUM(grade)From stu_gradeWhere stu_id='2007070
24、102'查詢結(jié)果如下:(2)分組匯總:使用聚合函數(shù)只返回單個(gè)匯總,而在實(shí)際應(yīng)用中,更多的是需要進(jìn)行分組匯總數(shù)據(jù)。使用group by子句可以進(jìn)行分組匯總,為結(jié)果集中的每一行產(chǎn)生一個(gè)匯總值。Group by子句與聚合函數(shù)有密切關(guān)系,在某種意義上說,如果沒有聚合函數(shù),group by子句也沒有多大用處了。Group by關(guān)鍵字后面跟著的列名稱為分組列,分組列中的每個(gè)得復(fù)值將被匯總為一行。如果包含where子句,則只對(duì)滿足where條件的行進(jìn)行分組匯總。例7-25、統(tǒng)計(jì)學(xué)生成績(jī)表中每個(gè)同學(xué)的最高分、最低分、平均分和總分。Select stu_id,MAX(grade),MIN(grade),
25、AVG(grade),SUM(grade)From stu_gradeGroup by stu_id查詢結(jié)果如下:例7-26、統(tǒng)計(jì)學(xué)生成績(jī)表中每個(gè)同學(xué)的最高分、最低分、平均分和總分,80分以下的成績(jī)不參與統(tǒng)計(jì)。Select stu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)From stu_gradeWhere grade>=80Group by stu_id查詢結(jié)果如下:(3)分組篩選:如果使用group by子句分組,則還可用having子句對(duì)分組后的結(jié)果進(jìn)行過濾篩選。Having子句通常與group by子句一起使用,用于指定組或合
26、計(jì)的搜索條件,其作用與where子句相似,二者的區(qū)別如下:作用對(duì)象不同:where 子句作用于表和視圖中的行,而having子句作用于形成的組。Where子句限制查找的行,having子句限制查找的組。執(zhí)行順序不同。若查詢句中同時(shí)有where子句和having子句,執(zhí)行時(shí),先去掉不滿足where條件的行,然后分組,分組后再去掉不滿足having條件的組。Where子句中不能直接使用聚合函數(shù),但having子句的條件中可以包含聚合函數(shù)。例7-27、統(tǒng)計(jì)學(xué)生成績(jī)表中每個(gè)同學(xué)的最高分、最低分、平均分和總分,并輸出平均分大于87分的信息。Select stu_id,MAX(grade),MIN(gra
27、de),AVG(grade),SUM(grade)From stu_gradeGroup by stu_idHaving AVG(grade)>87查詢結(jié)果如下:(4)明細(xì)匯總:使用group by子句對(duì)查詢數(shù)據(jù)進(jìn)行分組匯總,為每一組產(chǎn)生一個(gè)匯總結(jié)果,每個(gè)組只返回一行,無法看到詳細(xì)信息。使用compute和compute by子句既能夠看到統(tǒng)計(jì)經(jīng)營部的結(jié)果又能夠?yàn)g覽詳細(xì)數(shù)據(jù)。例7-28、使用compute子句對(duì)所有學(xué)生的人數(shù)進(jìn)行明細(xì)匯總。select*from stu_infocompute count(stu_id)查詢結(jié)果如下:在使用compute 和compute by時(shí),需要注意
28、以下幾點(diǎn):Computeby子句不能與select into子句一起使用。Compute 子句中的列必須在select子句的字段列表中出現(xiàn)。Compute by表示按指定的列進(jìn)行明細(xì)匯總,使用by關(guān)鍵字時(shí)必須同時(shí)使用order by子句,并且compute by中出現(xiàn)的列必須具有與order by后出現(xiàn)的列相同的順序,且不能跳過其中的列。例7-29、使用compute by子句按照院系對(duì)所有學(xué)生的人數(shù)進(jìn)行明細(xì)匯總。select*from stu_infoorder by sdeptcompute count(stu_id)by sdept查詢結(jié)果如下:3、 連接查詢:前面介紹的查詢都是針對(duì)單一
29、的表,而在數(shù)據(jù)通庫管理系統(tǒng)中,考慮到數(shù)據(jù)的冗余度低、數(shù)據(jù)一致性等問題,通常對(duì)數(shù)據(jù)表的設(shè)計(jì)要滿足范式的要求,因此也會(huì)造成一個(gè)實(shí)體的所有信息保存在多個(gè)表中。當(dāng)檢索數(shù)據(jù)時(shí),往往在一個(gè)表中不能夠得到想要的信息,通過連接操作,可以查詢出存放在多個(gè)表中同一實(shí)體的不同信息,給用戶帶來很大的靈活性。多表連接實(shí)際上就是實(shí)現(xiàn)如何使用一個(gè)表中的數(shù)據(jù)來選擇另一個(gè)表中的行。而連接條件則主要通過以下方法定義兩個(gè)表在查詢中的關(guān)聯(lián)方式:指定每個(gè)表中要用于連接的列。典型的連接條件在一個(gè)表中的指定外鍵,在另一個(gè)表中指定與其關(guān)聯(lián)的鍵。指定比較各列的值時(shí)要使用的比較運(yùn)算符(=、< >等)。表的連接的實(shí)現(xiàn)可以通過兩種方法:
30、利用select語句的where子句;在from子句中使用join(inner join,cross join ,outer join,left outer join,full outer join等)關(guān)鍵字。例7-30、查詢所有選修課程編號(hào)701的同學(xué)學(xué)號(hào)、姓名和成績(jī)。Select stu_info.stu_id,name,markFrom stu_info,stu_gradeWhere stu_info.stu_id=stu_grade.stu_id and course_id='701'查詢結(jié)果如下:例7-31、查詢所有選修課程的同學(xué)選修課程的成績(jī)。Select stu_
31、info.stu_id,name,course_name,gradeFrom stu_info,stu_grade,course_infoWhere stu_info.stu_id=stu_grade.stu_id andcourse_info.course_id=stu_grade.course_id查詢結(jié)果如下:有時(shí)表名比較煩瑣,使用起來很麻煩,為了程序的簡(jiǎn)潔明了,在SQL中,也可以通過AS關(guān)鍵字為表定義別名。例7-32、查詢所有同學(xué)所有課程的成績(jī)。Select A.stu_id,name,course_name,markFrom stu_info as A,stu_grade as B,
32、course_info as CWhere A.stu_id=B.stu_id and B.course_id=C.course_id查詢結(jié)果如下:在select 語句的from子句中,通過指定不同類型的join關(guān)鍵字可以實(shí)現(xiàn)不同的表的連接方式,而在on關(guān)鍵字后指定連接條件。例7-33、查詢所有選修課程的同學(xué)學(xué)號(hào)、姓名和成績(jī)。Select stu_info.stu_id,name,markFrom stu_info inner join stu_gradeOn stu_info.stu_id=stu_grade.stu_id查詢結(jié)果如下:例7-34、從stu_info表中查詢?nèi)雽W(xué)分?jǐn)?shù)比學(xué)號(hào)為2
33、007070101同學(xué)高的所有同學(xué)信息。Select R1.stu_id,R1.name,R1.markFrom stu_info as R1 inner join stu_info as R2On R2.stu_id='2007070101' and R1.mark>R2.mark查詢結(jié)果如下:例7-35、查詢所有同學(xué)的選修課程信息。Select stu_info.stu_id,name,markFrom stu_info left outer join stu_gradeOn stu_info.stu_id=stu_grade.stu_id查詢結(jié)果如下:例7-36、查
34、詢所有同學(xué)的選修課程信息。Select stu_info.stu_id,name,markFrom stu_grade right outer join stu_infoOn stu_info.stu_id=stu_grade.stu_id查詢結(jié)果如下:4、 嵌套查詢:所謂嵌套查詢指的是在一個(gè)select 查詢語句中包含另一個(gè)(或多個(gè))select查詢語句。其中,外層的select查詢語句叫外部查詢,內(nèi)層的select 查詢語句叫子查詢。嵌套查詢的執(zhí)行過程:首先執(zhí)行子查詢語句,得到的子查詢結(jié)果集傳遞給外層主查詢語句,作為外層主查詢的查詢項(xiàng)或查詢條件使用。子查詢也可以再嵌套子查詢。4、1單列單值
35、嵌套查詢:例7-37、查詢選修“計(jì)算機(jī)基礎(chǔ)”的學(xué)生成績(jī)信息。select*from stu_gradewhere course_id=(select course_idFrom course_infoWhere course_name='計(jì)算機(jī)基礎(chǔ)')查詢結(jié)果如下:例7-38、查詢比“2007070101”同學(xué)年齡大的同學(xué)信息。select*from stu_infowhere birthday<(select birthdayFrom stu_infoWhere stu_id='2007070101')查詢結(jié)果如下4、2單列多值嵌套查詢:例7-39、查詢
36、所有會(huì)計(jì)學(xué)院的同學(xué)成績(jī)信息。select*from stu_gradewhere stu_id in(select stu_idFrom stu_infoWhere sdept='會(huì)計(jì)學(xué)院')查詢結(jié)果如下例7-40、查詢其他系中比會(huì)計(jì)學(xué)院某一學(xué)生分?jǐn)?shù)少的學(xué)生學(xué)號(hào)和姓名。Select stu_id,nameFrom stu_infoWhere mark<any(select markFrom stu_infoWhere sdept='會(huì)計(jì)學(xué)院')And sdept<>'會(huì)計(jì)學(xué)院'查詢結(jié)果如下例7-41、查詢選修“計(jì)算機(jī)基礎(chǔ)”的學(xué)生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)活躍度的預(yù)算與投資合同
- 全職員工離職說明
- 數(shù)據(jù)庫技術(shù)COMPUTER87課件
- 鐵路市場(chǎng)營銷集中性市場(chǎng)營銷策略課件
- 雙總線冗余供電方式盧凱霞時(shí)間年月課件
- 中醫(yī)特色護(hù)理課件
- 中醫(yī)關(guān)于水腫的課件
- 高空電力作業(yè)安全合同
- 養(yǎng)生保健品經(jīng)銷合同范本
- 北京市東城區(qū)2024屆高三下學(xué)期一模歷史試題 含解析
- 環(huán)境毒理學(xué)考試整理重點(diǎn)
- GH-T 1388-2022 脫水大蒜標(biāo)準(zhǔn)規(guī)范
- (完整版)軟件工程導(dǎo)論(第六版)張海藩牟永敏課后習(xí)題答案
- 金屬材料成形工藝及控制課件:軋制理論與工藝 (2)-
- 《我與集體共成長》的主題班會(huì)
- 六年級(jí)趣味數(shù)學(xué)活動(dòng)課堂課件
- imo中的問題定理與方法
- 新能源汽車運(yùn)用與維修專業(yè)人才培養(yǎng)方案
- 氨吹脫塔單元設(shè)計(jì)示例
- 中國移動(dòng)-安全-L3
- GB/T 42314-2023電化學(xué)儲(chǔ)能電站危險(xiǎn)源辨識(shí)技術(shù)導(dǎo)則
評(píng)論
0/150
提交評(píng)論