




已閱讀5頁,還剩31頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基本SQL語句,SQL語言概述,SQL是Structured Query Language(結構化查詢語言)的縮寫,它是目前使用最廣泛的數據庫語言,SQL是由IBM發展起來的,后來被許多數據庫軟件公司接受而成為了業內的一個標準。 包括數據定義、數據操縱、數據查詢和數據控制功能,SQL語言的分類,SQL語言共分為四大類: 數據定義語言DDL 用來創建數據庫中的各種對象-表、視圖、 索引、同義詞、聚簇等如: CREATE TABLE/VIEW/INDEX/SYN/CLUSTER 表 視圖 索引 同義詞 簇 數據控制語言DCL 用來授予或回收訪問數據庫的某種特權,并控制 數據庫操縱事務發生的時間及效果,對數據庫實行監視等。如:grant,rollback,commit 數據操縱語言DML 數據操縱語言DML主要有三種形式:1) 插入:INSERT 2) 更新:UPDATE 3) 刪除:DELETE 數據查詢語言DQL 基本結構是由SELECT子句,FROM子句,WHERE 子句組成的查詢塊:,SQL核心語句,DDL數據定義語言,建立數據庫的第一步就是定義一些基本表。SQL語言使用CREATE TABLE命令定義基本表。 1)定義基本表 CREATE (列級完整性約束 ,列級完整性約束. ,) 如果完整性約束涉及到改表的多個字段,則必須定義在表的級上,否則可以定義在列級上也可以定義在表級上,新建表例子,例如建立一個學員表student,包括學號sno,姓名sname,性別ssex,年齡sage,所在系sdept五個屬性組成。其中學號不能為空,值是唯一的,并且姓名的取值也唯一。 CREATE TABLE student ( sno char(5) not null unique, sname char(20) unique, ssex char(1) default 男, sage int, sdept char(15);,字段常用數據類型,定義表的各各屬性需要指明數據類型及長度。不同的數據庫系統支持的數據類型不安全相同,常用的類型有: Char(n) 長度為n的定長字符串; Varchar(n)最大長度為n的變長字符串; INT 整形 Double 浮點型 DATETIME 日期型 text 可變長度的Unicode數據,最大長度 230 - 1 image 可變長度的二進制數據,最大長度為 230 - 1,修改基本表,2)修改基本表 Alter Table ADD 完整性約束 DROP MODIFY ; ADD:增加新列和新的完整性約束條件 DROP:刪除制定的完整性條件 MODIFY:用于修改原有的列的定義,包括列名和數據類型,修改表的例子,例:向student表增加入學時間列,類型為日期型 ALTER TABLE student ADD scome DATETIME 例:將年齡的數據類型改為字符型; ALTER TABLE student MODIFY Sage char(4) 例:刪除學生姓名必須唯一值的約束 ALTER TABLE student DROP UNIQUE(sname),刪除基本表,DROP TABLE student 基本表定義一旦刪除,表中的數據、此表上建立的索引和視圖都將自動被刪除掉。因此執行基本表的刪除一定要格外小心。,創建索引,建立索引是加快查詢速度的有效手段,在基本表上建立一個或多個索引,以提供多種存取路徑,加快查詢速度。 1)建立索引 在SQL語言中,建立索引使用CREATE INDEX語句,其一般格式為: CREATE UNIQUE CLUSTER INDEX ON (,.); UNIQUE:唯一索引 CLUSTER:聚簇索引。所謂聚簇索引是指索引項的順序與表中記錄的物理順序一致的索引組織。由于一般表只能有一個物理順序,所以一個表上只能建立一個聚簇索引。,創建索引,用戶可以在最常查詢的列上建立聚簇索引以提高查詢效率,建立聚簇索引后,更新索引列數據時,往往會導致表中記錄的物理順序的變更,代價較大,因此對于經常更新的列不宜建立聚簇索引。 例:建立下面的聚簇索引 Create CLUSTER INDEX stusname on student(sname),創建索引,例,建立下面三個索引: CREATE UNIQUE INDEX stusno ON student(sno); CREATE UNIQUE INDEX Coucon on student(cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC),刪除索引,索引一旦建立,就由系統使用和維護它,不需用戶干預。建立索引是為了減少查詢操作的時間,但如果數據增加、刪除頻繁,系統會花很多時間來維護索引。這時可以刪除一些不必要的索引。 DROP INDEX 例 刪除Student 表的Stusname 索引 DROP INDEX Stusname;,使用索引,問題一:在關系client(depart,id,name,tel)中分別標識客戶的分區、ID、姓名和電話,假如分區固定為(武昌、漢口、漢陽、江夏、青山、黃陂)6個分區,系統已對depart建立索引,查詢所有的客戶信息。 查詢一, select * from client 沒有使用任何索引列,系統按逐條掃描的方式返回數據,執行效率低(特別是在返回數據在1w條以上時) 查詢二, select * from client where depart=武昌 or depart=漢口. 正確使用索引列depart,SQL分析器將對此SQL語句正確優化,查詢效率將大大優于前1個語句,在同樣訪問的結果集情況下,這種寫法將比前一種寫法快615倍。,使用索引,問題二:在關系student(id,name,birth)中,查詢年齡在20歲以上的所有學生信息,假設對birth建立索引。 【查詢一】select * from student where year(now)-year(birth)20 【分析】由于對索引列birth進行了函數處理year,所以系統沒法對該sql語句進行任何優化,將執行逐條掃描比較,執行效率低。索引列的使用還有一個基本的原則,即不要對索引列進行任何函數或者運算符的處理。 【查詢二】select * from student where birthdateadd(year,-20,getdate() 由于直接對索引進行比較,系統將能正確優化該SQL語句,執行效率高,創建索引基本原則,DML-數據操縱語言,對基本表進行插入、修改、刪除,INSERT INTO,INSERT INTO 語句用于向表格中插入新的行。 語法 完全插入 INSERT INTO 表名稱 VALUES (值1, 值2,) 指定所要插入數據的列: INSERT INTO table_name (列1, 列2,.) VALUES (值1, 值2,),UPDATE,Update 替換表中列/字段的數值 語法Update table SET col = expression , . FROM fromlist Where condition 輸入 table 現存表的名稱 column 表 table 中列/字段的名 expression 賦予列/字段的一個有效的值或表達式 fromlist Postgres 的一個非標準的擴展,允許別的表中的列/字段出現在 Where 條件里 condition,DELETE,DELETE 刪除基本表里的記錄 語法delete from table_name Where condition 輸入 table_name 現存表的名稱 condition 刪除條件,DQL-數據查詢語言,對基本表里的記錄進行檢索 A.基本查詢 B.高級查詢,基本查詢語法,數據庫查詢是數據庫的核心操作。SQL語言提供了SELECT語句進行數據庫的查詢,該語句的語法如下: SELECT 屬性名表或庫函數 FROM 基本表 ( 或視圖 ) WHERE 條件表達式 GROUP BY 屬性名 HAVING 庫函數表達式 ORDER BY 屬性名 ASC OR DESC,基本查詢語法,整個SELECT語句的含義是,根據Where子句的條件表達式,從From子句指定的基本表或視圖中找到滿足條件的元組,再按SELECT子句中的目標列表達式,選出元組中的屬性值形成結果表。如果有GRoup自己,則將結果按Group by后的屬性值進行分組,該屬性列值相等的元組為1個組。通常會在每組中作用集函數。如果Group by 子句帶有Having 短語,則只有滿足條件的組才予輸出。如果有Order by 子句,則還需排序列的值升序或降序排序。,基本查詢,示例數據庫說明: 以學生課程數據庫為例說明SELECT 語句的各種用法: Student( Sno,Sname,Ssex,Sage,sdept,City); 學生(學號、姓名、性別、年齡、所在系、出生城市) Course (Cno,Cname); 課程(課程編號、課程名稱) SC(Sno,Cno,Score) 學生選修(學號、課程編號、成績),基本查詢查詢表中若干列,選擇表中的若干列 1)查詢指定列 例:查詢全體學生的學號與姓名 select sno,sname from student 2)查詢全部列 例:查詢全體學生的詳細記錄 Select * from student Select sno,sname,ssex,sage,sdno from student 3)查詢經過計算后的列 例:select sage 2 from student 4)取別名 例:select sname 姓名 from student,基本查詢過濾,1)使用distinct 關鍵字過濾重復行 例: select distinct sno From SC 2)使用where過濾條件 例:查詢所有的女學生子類 select * from student where ssex=女 例:查詢考試成績有不及格的學生的學號 SELECT distinct sno From sc where score60,基本查詢where條件常用比較預算符,基本查詢排序,使用Order by 子句對查詢結果進行升序(默認 ASC)或降序(DESC)排列,默認為升序。 例:查詢選修了3號課程的學生的學號及成績,查詢結果按分數的簡序排列。 Select sno,score from sc where cno=3 order by score desc 例:查詢全體學生的情況,查詢結果按所在系的序號進行升序排列,同一系中的學生按年齡降序排列 select * from student order by sdept,sage DESC,基本查詢-集函數,為了進一步方便用戶,增強檢索功能,SQL提供了許多集函數,主要有:,思考題:ALL和Distinct 有什么區別?,基本查詢使用集函數,student(sno,sname,score),基本查詢使用集函數,例:查詢學生的總人數 SELECT Count(*) from student 例:查詢選修了課程的學生人數 SELECT count(distinct sno) from sc; 例:計算1號課程的學生平均成績 select avg(score) from sc where cno=1 例:查詢選修了1號課程的學生最高分數 select MAX(score) from sc where cno=1,基本查詢分組查詢,對查詢結果進行分組 Group by 子句將查詢結果按某一列或多列值分組,值相等的為一組。 對查詢結果分組的目的是為了細化集函數的作用對象。如果未對查詢的結果進行分組,集函數將作用于整個查詢結果。分組后集函數將作用于每一個組,即每一組都有一個函數值。 例:求各個課程號及相應的選課人數 select cno,count(sno) from sc group by cno; select cno, count(sno) from sc,基本查詢分組查詢,如果分組后還要求按一定的條件對這些組進行篩選,最終只輸出滿足指定條件的組,則可以使用Having 短語指定篩選條件; 例:查詢選修了3門以上課程的學生學號。 select sno,count(*) from sc group by sno having count(*)=3; Where 和Having 的區別在于作用對象不同。Where子句是對分組前的元組進行選擇。Having 作用于分組后的數據,從中選擇滿足條件的組。,基本查詢分組查詢,Having 和 Where 可以一起使用, 例:查詢考試成績80分以上至少有3門以上課程的學生學號和平均成績; 分析: 1)考試成績要在80分以上,是對分組前元組數據的選擇,使用Select; 2)至
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司春節互動活動方案
- 公司短視頻小組活動方案
- 公司狂歡夜活動方案
- 2025年育兒嫂職業技能鑒定考試試題及答案
- 2025年網絡信息安全法考試試題及答案
- 2025年現代生物技術專業水平考試試卷及答案
- 2025年特殊兒童教育教師資格考試試題及答案
- 2025年企業形象設計師資格考試試題及答案
- 2025年領導力與團隊建設專業知識測試卷及答案
- 2025年大愛事業發展與慈善管理考試試卷及答案
- GB/T 44914-2024和田玉分級
- 2025 年海南省中考語文試題:作文試題及范文
- 電機學知到智慧樹章節測試課后答案2024年秋東北電力大學
- 凈水器安裝協議書
- 2019北師大版高中英語單詞表全7冊
- 國開《當代中國政治制度》形考任務1-4參考答案
- 2024年借貸擔保合同
- 寧夏固原市第六中學2022-2023學年七年級上學期分班考試語文檢測卷
- 《電工與電子技術基礎(第4版)》中職全套教學課件
- 北師大版生物八年級下冊23章1節生物的生存依賴一定的環境(44張)課件-課件
- 2024年工業廢水處理工(高級)技能鑒定考試題庫-下(多選、判斷題)
評論
0/150
提交評論