版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、SQL 語言的單表查詢實驗一、Transact-SQL語言的補充說明二、用SQL語言實現(xiàn)數(shù)據(jù)庫和數(shù)據(jù)表的定義三、數(shù)據(jù)操作語言DML在單表查詢中的應(yīng)用舉例 SQL語言的單表查詢實驗1)T-SQL語言的組成元素數(shù)據(jù)定義語言DDL(Data Definition Language) ()定義數(shù)據(jù)庫結(jié)構(gòu)、各對象及屬性的語句例如:CREATE DATABASE Student數(shù)據(jù)操縱語言DML(Data Manipulation Language)實現(xiàn)對數(shù)據(jù)庫基本操作的語句,主要包括查詢、插入、修改、刪除等數(shù)據(jù)控制語言DCL(Data Control Language) ()保證數(shù)據(jù)庫一致性和完整性T-
2、SQL增加的語言元素 變量、運算符、函數(shù)、流程控制語句和注解等。 一、Transact-SQL語言 * T-SQL語言可在SQL Server查詢分析器中直接執(zhí)行并查看結(jié)果。在T-SQL語句中,不區(qū)分字母大小寫,但本書規(guī)定: 用大寫字母書寫T-SQL語句中關(guān)鍵字; 例:USE School 二、數(shù)據(jù)定義語言DDL ()數(shù)據(jù)定義語言主要是定義數(shù)據(jù)庫中的對象,包括數(shù)據(jù)庫、數(shù)據(jù)表、視圖、索引、存儲過程、觸發(fā)器等的建立或修改。1數(shù)據(jù)庫定義語句() (1) 創(chuàng)建數(shù)據(jù)庫語句(CREATE DATABASE) 【例1】創(chuàng)建一個只有一個主數(shù)據(jù)文件 SchoolTest(不指定該文件的大小)的數(shù)據(jù)庫。CREAT
3、E DATABASE SchoolTestON(NAME=SchoolTest_Data,FILENAME =D:DBSchoolTestSchoolTest_Data.MDF)說明:1)創(chuàng)建一個數(shù)據(jù)庫SchoolTest ;2) SchoolTest中只有一個數(shù)據(jù)文件SchoolTest_Data,它被默認(rèn)為該數(shù)據(jù)庫的主文件,該文件的大小與系統(tǒng)數(shù)據(jù)庫Model的主文件大小相同;3) SchoolTest數(shù)據(jù)庫所在的物理文件為“D:DBSchoolTest SchoolTest_Data.mdf”4)系統(tǒng)將自動在“D:”中創(chuàng)建一個名稱為“SchoolTest _log.LDF” 的日志文件 C
4、REATE DATABASE SchoolTest系統(tǒng)以系統(tǒng)數(shù)據(jù)庫model作為模板在SQL Server安裝文件夾的Data文件夾下建立數(shù)據(jù)庫文件和日志文件。C:Program FileMicrosoft SQL ServerMSSQLData(2)打開和刪除數(shù)據(jù)庫語句 ()刪除數(shù)據(jù)庫:DROP DATABASE 數(shù)據(jù)庫名/*刪除數(shù)據(jù)庫 */ 注意:刪除數(shù)據(jù)庫時不允許數(shù)據(jù)庫打開打開數(shù)據(jù)庫: USE 數(shù)據(jù)庫名 /*選擇當(dāng)前要操作的數(shù)據(jù)庫 */ 2數(shù)據(jù)表定義語句()(1)建立表語句(CREATE TABLE) 【例2】在SchoolTest數(shù)據(jù)庫中建立學(xué)生表T_Student。CREATE TA
5、BLE T_Student (StudentCode CHAR(8) NOT NULL UNIQUE, /*列值完整性約束,取值唯一,不許取空值*/StudentName VARCHAR(16) NOT NULL,Sex CHAR(2) NOT NULL,LiveInDorm BIT DEFAULT 1 , /*默認(rèn)值為1*/CONSTRAINT PK_T_Student Primary Key(StudentCode), /* PK_T_Student為主鍵約束*/ CONSTRAINT CK_T_StudentSex Check(Sex=男 or Sex=女) /* CK_T_Studen
6、tSex 為檢查約束, Sex=男 或 Sex=女 */) 2數(shù)據(jù)表定義語句()(2)修改表語句(ALTER TABLE.ADD.) 【例3】在T_Student和T_Grade之間設(shè)立外鍵ALTER TABLE T_StudentADD CONSTRAINT FK_T_Student_T_Class FOREIGN KEY (Classcode) REFERENCES T_Class(ClassCode)注意:(1)前提是必須是兩個表已存在 (2)該句寫在從表中,REFERENCES是參照的意思2數(shù)據(jù)表定義語句()(2)修改表語句(ALTER TABLE.ADD) 【例4】在T_Studen
7、t中增加(Sex,Char(2),DEFAULT 男)ALTER TABLE T_Student ADD Sex Char(2) DEFAULT 男注意:插入的屬性不能設(shè)為NOT NULL,可用默認(rèn)值約束(2)刪除表語句(DROP TABLE)當(dāng)數(shù)據(jù)表不再需要時,可以使用DROP TABLE語句將其刪除。【例3】刪除T_GradeTest表DROP TABLE T_GradeTest三、 數(shù)據(jù)操縱語言DML數(shù)據(jù)操縱語言實現(xiàn)對數(shù)據(jù)的查詢和更新,主要語句及功能如下: 命令功能SELECT從一個表或多個表查詢數(shù)據(jù)INSERT向一個表中添加一條記錄UPDATE修改表中某一個或幾個字段的值DELETE從
8、一個表中刪除記錄插入、修改、刪除又稱為選擇查詢語句,用于從數(shù)據(jù)庫的一個或多個表中檢索滿足一定條件的記錄集,并按一定順序顯示指定的字段內(nèi)容。Select語句由多個子句構(gòu)成,其語法形式為:SELECT 字段表FROM 表名 WHERE 查詢條件 GROUP BY 分組字段 HAVING 分組條件 ORDER BY 字段名 ASC/DESC 表示可選項。第2行至最后一行稱作SQL子句,不同的子句完成不同的功能。在書寫SELECT語句時,字母大小寫意義完全相同。語句可以寫在若干行上(如上述語法格式中的描述),也可以不換行。1查詢語句SELECT (1) * /查詢?nèi)繉傩?2)as /改變字段名(3)
9、Distinct / 查詢不重復(fù)字段(4)Top n 或 top percent n /查詢前幾項或前百分之n(5)Into /復(fù)制新表(6)5個聚合函數(shù)(7)Where 子句 / 條件查詢(8) In /子查詢(9)like /模糊查詢(10)Group by having /分組(11)Order by /排序SELECT單表查詢匯總 1) 可以使用通配符“ * ”表示表中的所有字段。 【例2】 使用SELECT語句顯示T_Student表中所有字段的值。 SELECT * FROM T_Student 注:如果字段名或表名中含有空格,則該字段名或表名必須用方括號括起。 USE North
10、wind SELECT * FROM Order Details2) 在字段表中,可以使用 字段名 AS 新字段名 的方式將原字段名以新的字段名顯示。 【例3】 顯示T_Class表中班級代號,并將ClassCode字段改為班級號。 SELECT ClassCode AS 班級號 FROM T_Class 3)DISTINCT:若多條記錄的字段值具有相同數(shù)據(jù),只顯示一條記錄。 【例4】顯示T_Course表中開課的學(xué)院名稱Academy(與所開課程無關(guān))。 SELECT DISTINCT Academy FROM T_Course 由于每個學(xué)院都開設(shè)了多門課程,因此字段Academy具有部分相
11、同的值。在SELECT語句的字段Academy前加上關(guān)鍵字DISTINCT,相同的學(xué)院名稱只顯示一個。 4)TOP n :顯示前n條記錄。 TOP n PERCENT:顯示一定百分比的記錄?!纠?】 顯示T_Couse表中的前3條記錄。 SELECT TOP 3 * FROM T_Course 顯示T_Couse表中前20%的記錄。 SELECT TOP 20 PERCENT * FROM T_Course 實驗題:顯示學(xué)生訂書量(StuBookNum)最大的3個記錄,顯示教材代號(BookCode)和學(xué)生訂書量(StuBookNum)。SELECT top 3 BookCode,StuBoo
12、kNumFROM T_BookOrderORDER BY StuBookNum DESC5)INTO :復(fù)制一張新表。 【例6】將T_Student表中所有記錄的學(xué)生姓名、出生日期兩個字段復(fù)制一張新表NewTable。 SELECT StudentName, BirthDay INTO NewTable FROM T_Student6) 在SELECT語句中可以使用內(nèi)部函數(shù),進(jìn)行一些簡單的統(tǒng)計或計算。常用函數(shù)表: 函數(shù)名函數(shù)功能AVG計算某一字段的平均值(字段值必須是數(shù)值型)COUNT統(tǒng)計某一字段的個數(shù)MAX查找某一字段的最大值MIN查找某一字段的最小值SUM計算某一字段的總和(字段的值必須是
13、數(shù)值型)【例7】計算學(xué)生的總分、平均分、最高分、最低分及學(xué)生選課數(shù)。 SELECT Sum (Grade) as 總分, Avg (Grade) as 平均分, Max (Grade) as 最高分, Min (Grade) as 最低分, Count (StudentCode) as 課程人數(shù) FROM T_GradeSELECT Sum (Grade) , Avg (Grade) , Max (Grade) , Min (Grade) , Count (StudentCode) FROM T_Grade7).WHERE子句 設(shè)置查詢的條件,它是一個可選的子句。在使用時,WHERE子句必須在
14、FROM子句的后面。【例8】在T_Student表中查詢所有女同學(xué)的姓名。 在T_Student表中查詢所有未住校的學(xué)生的學(xué)號和姓名(或未住校的女生)。SELECT StudentName /*查詢所有女同學(xué)的姓名*/FROM T_Student WHERE Sex=女 SELECT StudentCode,StudentName,LiveInDorm FROM T_Student WHERE LiveInDorm=0 WHERE LiveInDorm=0 AND Sex=女WHERE子句的語法格式: WHERE 查詢條件 其中:查詢條件是一個邏輯表達(dá)式。在這個表達(dá)式中常用的運算符有: 1)
15、算術(shù)運算:+、*、/。 2) 比較運算:、=、=、=、 3) 邏輯運算:NOT、AND、OR【例9】查詢未住校女學(xué)生的學(xué)號和姓名。SELECT StudentCode, StudentNameFROM T_StudentWHERE LiveInDorm=0 AND Sex=女 BETWEENAND運算查詢表達(dá)式的值是否在指定的范圍內(nèi)?!纠?0】在T_Grade表中查詢課程代號(CourseCode)為“130001”、成績(Grade)在70分到90分之間的學(xué)生代號(StudentCode)及成績。SELECT StudentCode, CourseCode, Grade FROM T_Gra
16、deWHERE CourseCode=130001 AND Grade BETWEEN 70 AND 90BETWEENAND運算也可以用邏輯運算及比較運算實現(xiàn),如上句中的條件可改為:WHERE CourseCode=130001 AND Grade= 70 AND Grade=60【例17】 按住校情況(住和未?。┙y(tǒng)計學(xué)生的平均成績。(統(tǒng)計住校學(xué)生的平均成績) SELECT LiveInDorm, STR(AVG (Grade),5,2) as 平均成績FROM T_Student,T_GradeWHERE T_Student.StudentCode=T_Grade.StudentCodeG
17、ROUP BY LiveInDormHAVING LiveInDorm=1查詢每一種教材的學(xué)生訂書總量。參考答案:SELECT BookCode AS 教材代號, SUM(StuBookNum) AS 學(xué)生訂書數(shù)量FROM T_BookOrderGROUP BY BookCode8)查詢每一種教材的學(xué)生訂書總量,顯示結(jié)果如圖2-10所示。【例 】統(tǒng)計課程代號(CourseCode)大于110006的各門課程的選課人數(shù)。 SELECT CourseCode, Count (StudentCode) as 選課人數(shù)FROM T_GradeGROUP BY CourseCodeHAVING Cour
18、seCode 11000611) ORDER BY子句按指定字段為查詢結(jié)果排序。通常是 SQL 語句最后一項。 語法格式為: ORDER BY 字段名 ASC/DESC 其中:ASC為升序排序,DESC為降序排序。缺省排列次序為升序。(ASC: Ascending,DESC:Descending)【例19 】按成績升序顯示T_Grade表中的所有數(shù)據(jù)。 SELECT *FROM T_GradeORDER BY Grade可以指定多個排序的字段。規(guī)則:首先用指定的第一個字段對記錄排序,然后對此字段中具有相同值的記錄用指定的第二個字段進(jìn)行排序,依此類推。 若在SELECT語句中無此子句,則按原數(shù)據(jù)表的次序顯示數(shù)據(jù)。 【例20 】按姓名升序(若姓名相同,則按出生日期降序)顯示班級代碼、學(xué)生姓名及出生日期。SELECT T_Student.ClassCode,ClassName,StudentName,Birthday
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CCAA - 2018年06月環(huán)境管理體系基礎(chǔ)答案及解析 - 詳解版(80題)
- 河南省平頂山市魯山縣2025-2026學(xué)年七年級上學(xué)期2月期末道德與法治試題(含答案)
- 企業(yè)員工培訓(xùn)與技能培訓(xùn)制度
- 老年終末期患者跌倒預(yù)防環(huán)境改造的成本控制策略
- 2025年佛山市順德一中西南學(xué)校招聘考試真題
- 互感器試驗工創(chuàng)新意識競賽考核試卷含答案
- 陶瓷原料制備工班組評比水平考核試卷含答案
- 傳聲器裝調(diào)工常識能力考核試卷含答案
- 我國上市公司并購融資方式:現(xiàn)狀、選擇與創(chuàng)新路徑
- 配膳員操作規(guī)程競賽考核試卷含答案
- 羅馬機場地圖
- 實習(xí)生醫(yī)德醫(yī)風(fēng)培訓(xùn)
- 橫穿公路管道施工方案
- 真空澆注工安全操作規(guī)程(3篇)
- 快樂讀書吧:非洲民間故事(專項訓(xùn)練)-2023-2024學(xué)年五年級語文上冊(統(tǒng)編版)
- GB/T 19609-2024卷煙用常規(guī)分析用吸煙機測定總粒相物和焦油
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件(2018年版)
- 高處安全作業(yè)票(證)模板
- (正式版)JTT 728.2-2024 裝配式公路鋼橋+第2部分:構(gòu)件管理養(yǎng)護(hù)報廢技術(shù)要求
- 醫(yī)源性藥物依賴防范和報告專家講座
- 年度生產(chǎn)經(jīng)營分析報告
評論
0/150
提交評論