




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SQL 教程1)SQL 簡介SQL(Structured Query Language,結構查詢語言)是一個功能強大的數據庫語言。SQL通常使用于數據庫的通訊。ANSI(美國國家標準學會)聲稱,SQL是關系數據庫管理系統的標準語言。SQL語句通常用于完成一些數據庫的操作任務,比如在數據庫中更新數據,或者從數據庫中檢索數據。使用SQL的常見關系數據庫管理系統有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。雖然絕大多數的數據庫系統使用SQL,但是它們同樣有它們自立另外的專有擴展功能用于它們的系統。但是,標準的SQL命令,比如Sele
2、ct、 Insert、 Update、 Delete、 Create和 Drop常常被用于完成絕大多數數據庫的操作。但是,不像其它的語言,如C、Pascal等,SQL沒有循環結構(比如if-then-else、do-while)以及函數定義等等的功能。而且SQL只有一個數據類型的固定設置,換句話說,你不能在使用其它編程語言的時候創建你自己的數據類型。SQL功能強大,但是概括起來,它可以分成以下幾組:DML(Data Manipulation Language,數據操作語言):用于檢索或者修改數據;DDL(Data Definition Language,數據定義語言): 用于定義數據的結構,比
3、如 創建、修改或者刪除數據庫對象;DCL(Data Control Language,數據控制語言):用于定義數據庫用戶的權限。2)SQL 常用語句21 SELECT 語句作用:SELECT 語句用于從表中選取數據。結果被存儲在一個結果表中(稱為結果集)。語法:SELECT 目標表的一個或多個列名稱,列名前可加表達式,如:avg(年齡) FROM 目標表的名稱;以及:SELECT * FROM 表名稱;注釋:*代表選取全部。示例:下面是示范在一個表中選取自己想要的信息,例如我只想要老師們的聯系電話。這是原表(教師表),里面包含了教師編號等等信息,在這個表中工作時間、政治面目等等都是我們不需要知
4、道的信息所以我們要有選擇的選取。這個是在SQL視圖中輸入的代碼(如何打開SQL視圖不在這里列舉)。代碼的含義是:選取“教師編號,姓名,性別,聯系電話“這四個列,列的來源是“教師“這個表這個是最終的結果,可以看到只有我們要的“教師編號,姓名,性別,聯系電話“列,政治面目等并沒有在里面。拓展1:SELECT DISTINCT 語句作用:在一個表中,可能會包含重復值。這并不成問題,不過,有時你也許希望僅僅列出不同(distinct)的值。關鍵詞 DISTINCT 作用就是用于返回唯一不同的值。語法:SELECT DISTINCT 列名稱 FROM 表名稱示例: 在教師表中有兩個人的名字是江小洋,這里
5、示范只選取江小洋。在原表中可以看到“教師編號“為09,16的兩個人的名字都是江小洋。這是SQL代碼。代碼解析是:選取列名為“姓名“中的唯一值,列的來源是”教師“這個表。這是結果,可以看到他只選取了一個江小洋。并沒有顯示兩個江小洋。拓展2:SELECT 表達式(列名)語句作用:往往我們在選取信息的時候希望能夠直接得到一些間接信息。如,我想要知道班級的平均分。語法:SELECT 表達式(列名) FORM 表名示例:這是一個“選課成績“表里面有一個”成績“列,我希望直接得到成績的平均值。這是原表。SQL代碼圖,名詞解釋:AVG:為每一組中的指定字段求平均值。(更多的函數和邏輯運算符會在附錄中列出)A
6、S:為指定的列或表指定一個別名。(因為AS內容并不多就不再單獨列出一個拓展了)代碼解析:選取“成績”列,并計算這個字段的平均值,同時為這個字段重新命名為:成績平均值,這個列的來源表是“選課成績”表。這是結果圖,通過計算可以得知成績列的平均值是72.46.課堂作業:為每個學生計算平均成績和為每門課程計算平均成績,并把結果字段更名為“平均值”。22 WHERE 子句作用:WHERE 子句用于規定選擇的標準。WHERE后面接的是條件表達式,如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句語法:SELECT 列名稱 FROM 表名稱 WHERE 條件表達式示例:例如我想知道
7、一個名字叫“洪智偉”的學生的信息。這是原表,里面擁有多條學生信息,我們可以看到第一個就是“洪智偉”同學的信息,我們的目的就是選取他的信息。代碼圖,代碼解析:選取所有字段名,字段的來源表是“學生”表,選取的條件是“姓名”等于“洪智偉”的記錄。結果圖,可以看到雖然來源表中有N條記錄當選取到的記錄只有一條。其姓名叫洪智偉。拓展:AND & OR 運算符作用:AND 和 OR 運算符用于基于一個以上的條件對記錄進行過濾。AND 和 OR 運算符AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結合起來。如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。如果第一個條件和第二個條
8、件中只要有一個成立,則 OR 運算符顯示一條語法:SELECT 列名稱 FROM 表名稱 WHERE 條件 AND/OR 條件注釋:AND&OR可以嵌套使用! 示例:我想選取“所有山東省的男生”或“所有北京市的女生”這是原表,數據非常多而且雜亂,用刷選來查找記錄的話非常麻煩,所以選用SQL來查詢。代碼圖,代碼解析:選取所有字段,字段的來源是“學生”表。選取的條件是“性別是男的并且簡歷是山東省的學生”或者“性別是女的并且簡歷是北京市的學生”(本來想先做一個簡單AND/OR語句再做多個拓展來介紹嵌套的使用,不過覺得太浪費篇幅,并且嵌套不難理解,注意一下嵌套需要用括號()括住就可以了!)課堂作業:選
9、取是團員的男生和簡歷是山東省的女生。23 GROUP BY 子句作用:GROUP BY 語句用于結合合計函數,根據一個或多個列對結果集進行分組。語法:SELECT 一個或多個列名,可接函數FROM 表名WHERE 條件表達式GROUP BY 列名示例:要求列出“選課成績”表中的“課程編號”從“110-120”的課程成績平均值。(呵呵,好像和之前的作業蠻像得=。=!)原表圖,原表中每個課程都有N個學生選,其成績也有N項,為了直觀的顯示我們來求以整數來表達的平均值。SQL代碼圖,名詞解釋:INT:將數值取整數,如把72.2顯示為72,四舍五入。BETWEENAND : BETWEEN 操作符在 W
10、HERE 子句中使用, BETWEEN . AND 會選取介于兩個值之間的數據范圍。這些值可以是數值、文本或者日期。代碼解析:選取課程編號和成績兩個字段,并且計算成績字段的整數平均值和更名為成績平均值,字段的來源表是“選課成績”表。選取記錄的條件是”課程編號在 110 120 這個區間內的記錄”,然后根據課程編號來分組。結果圖,課程編號中只顯示了110-120的記錄,其成績的平均值也為整數。!拓展:HAVING 子句作用:在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。同時HAVING都是緊跟著GROUP BY 語句出現的,提供一個組的條件表達式。語法:
11、SELECT 一個或多個列名,可接函數FROM 表名WHERE 條件表達式GROUP BY 列名HAVING 組條件表達式示例:在上一個示例當中更加進一步的精確選取數據,只選取平均分超過75分的記錄。因為是延續上個示例,所以原圖一樣就不再列出。SQL代碼圖,代碼解析:在原有的代碼基礎上添加了HAVING子句。使得數據更具有精確性,為了讓大家更加明確了解WHERE和HAVING的區別在這里在給大家看一個圖。可以看到如作用:哪里所說的。WHERE子句當中是不能使用聚合函數的!如果我們希望得到一個平均值大于某個數的記錄的話。我們使用WHERE子句的話是做不到的,這個時候就必須使用HAVING了而需要
12、注意的是HAVING是在GROUP BY語句后使用的。結果圖,可以看到110-120區間內只有兩門課程的成績平均值在75分以上。24oRDER BY 子句作用:ORDER BY 語句用于根據指定的列對結果集進行排序。ORDER BY 語句默認按照升序對記錄進行排序。如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。語法:SELECT 一個或多個列名,可接函數FROM 表名DRDER BY 列名示例:讓教師表里面的記錄按照男女排列。原表圖,原表中是根據教師編號來排列的。SQL代碼圖,代碼解析:選取全部字段,字段來源表是“教師”表,表的排序是根據表中的“性別”字段來排序。結果圖,可以看
13、到表是根據性別來來排序的,先男后女,因為男的拼音是“nan”而女的拼音是“nv”,access中的漢字排序是根據漢字拼音的字母順序來排序的。拓展:綜合應用SELECT 一個或多個列名,可接函數FROM 表名WHERE 條件表達式GROUP BY 列名HAVING 組條件表達式ORDER BY 列名 DESC因為ORDER BY子句是對結果的重新排序,所以在此就不結合多個語句使用了,只是告訴大家能結合之前所學內容使用而已!示例:對上個示例的結果進行降序排列。原圖一樣就不提供了。 SQL代碼圖,代碼解析:和之前的示例一樣,只是按照降序排列而已。結果圖,可以看到和之前的那個結果圖的排序剛剛相反,這次
14、是女的排在前。課堂作業:讓“教師”表按照性別降序排序,并且“學歷”升序排序。25INSERT INTO 語句作用:INSERT INTO 語句用于向表格中插入新的記錄!注意在添加記錄之前一定要先查看被添加記錄表的字段設置屬性,看看字段有沒有設置為不能為空或者字段最大值等等之類的。語法:INSERT INTO 表名稱 VALUES (值1, 值2,.)注釋:因為插入的是一個表的全部列值所以列名可以忽略不寫。我們也可以指定所要插入數據的列:INSERT INTO 表名 (列1, 列2,.) VALUES (值1, 值2,.)注釋:如果插入的知識表的部分列值的話,則必須列出相應的列名。沒有的列出的列
15、名則取空值。示例:向“學生”表添加一個記錄原表圖,表中的記錄排第一的是“洪智偉”。SQL代碼圖,代碼解析:向“學生”表中的“學生編號,姓名,年齡,簡歷”字段添加一個新的記錄,記錄的內容是“學生編號為1991,姓名是黃學宇,年齡為18,簡歷為廣東省”注釋:因為添加記錄具有不可恢復性所以access會彈出個警告框來詢問你是不是確定要進行這步操作。結果圖,可以看到記錄已經成功添加,沒有選擇的字段為空值。拓展:高級應用作用:向一個表中添加由多個表組合成的新紀錄。語法:INSERT INTO 添加記錄的表名稱(列1,列2)SELECT 表1.列1,表1.列2,表2.列1,表3.列1FROM 表1,表2,
16、表3WHERE 條件表達式;示例:制作一個補考人員名單。原表圖,這是個空表,在向一個表添加記錄時一定要確認這個表的存在而且要確認字段的屬性。這是個我剛剛建立的新表,字段屬性都是文本,沒有任何限制條件。在這里我是用SQL來建立的這個表。關于建立新表的SQL代碼大家可以使用CREATE TABLE 語句,因為這篇教程只是介紹基本SQL內容所以沒有在這里列舉。有需要的話我會在寫多一份相對高級點的教程。SQL代碼圖,代碼解析:向“補考人員名單”這份表中的“學生編號,姓名,課程名稱,成績”字段添加記錄。添加的新記錄來至于“學生”表中的“學生編號”,“學生”表中的“姓名”,“課程”表中的“課程名稱”,“選
17、課成績”中的“成績”。選取的條件是“選課成績”中的“成績”小于60,且在這些表中“學生”表里面的“學生編號”等于“選課成績“中的學生編號”,“課程”表中的“課程編號”等于“選課成績”中的“課程編號”。同樣的,因為這個操作具有不可恢復性所以一樣會彈出警告框!在這里還可以使用INNER JOIN(內連接)語句來連接這3個表的相同字段。在這里并沒有列舉,理由同上。結果圖,可以看到所有成績低于60的記錄都被選取出來。其顯示結果也很直觀,聯系了3個表中的數據。課堂作業:制作一個優秀學員名單,要求選課成績有兩門成績上80分。26UPDATE 語句作用:Update 語句用于更新,修改表中的數據。語法:UP
18、DATE 表名稱 SET 列名稱 = 需要改變的新值 WHERE 條件表達式注釋:WHERE子句用于確認目標列來修改數據。示例:修改錯誤數據。這是之前的例子用INSERT INTO 語句來插入的一條記錄,在這里與上個例子不同的是“黃學宇”在這里是為團員,而且入校日期也沒有填寫,我們利用UPDATE來補齊。SQL代碼圖,代碼解析:更新“學生”表,更新的設置為:把入校日期更新為“2009-4-22”,把學生編號修改為“000000”,團員修改為“非團員”。更新的列是姓名等于“黃學宇”的那個列。注釋:關于 “團員 = false ”存在疑問,因為我是通過其他語言來類比得出來的,經過王老師指導,說是錯誤的。當然在SQL上使用完全沒有問題,在這里只是給大家提供一個參考。結果圖,數據已經完全按照我們輸入的那樣來更新、修改了!拓展:ALTER TABLE 語句作用:ALTER TABLE 語句用于在已有的表中添加、修改或刪除列。語法:如需在表中添加列,請使用下列語法:ALTER TABLE 表名ADD 列名 字段屬性(文本,時間日期等。)要刪除表中的列,請使用下列語法:ALTER TABLE 表名 DROP COLUMN 列名注釋:某些數據庫系統不允許這種在數據庫表中刪除列的方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025農業合作經營合同
- 2025合同模板設備租賃合同樣本
- 2025二手汽車買賣合同(賣方)
- 廣東省惠州市2024~2025學年 高二下冊3月階段考試數學試卷附解析
- 2025年中考語文(長沙用)課件:微專題精練 群文閱讀(古詩文聯讀)
- 走進文化生活 同步練習
- 自然語言處理中的強化學習應用研究-洞察闡釋
- 2024年廣州市第一人民醫院招聘真題
- 英語個人陳述5詞
- 山青浦區社區工作者司法社工招聘筆試真題2024
- 2025屆浙江省杭州市建蘭中學八年級英語第二學期期末綜合測試試題含答案
- 小麥收割合同協議書模板
- 商鋪退押金協議書
- 廣東省惠州市惠陽區2023-2024學年一年級下學期語文期末隨堂練習試卷(含答案)
- 冷鏈物流配送中心建設項目可行性研究報告
- 起重吊裝作業安全與操作規范培訓
- 2025遼寧沈陽副食集團所屬企業招聘25人筆試參考題庫附帶答案詳解
- 2023電氣裝置安裝工程 旋轉電機施工及驗收規范
- 2025-2030年中國航空密封件行業市場現狀供需分析及投資評估規劃分析研究報告
- 第六單元 年、月、日 單元測試(含答案)2024-2025學年三年級下冊數學人教版
- 2025-2030中國工業鉸接式機器人行業市場發展趨勢與前景展望戰略研究報告
評論
0/150
提交評論