




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL 教程1)SQL 簡(jiǎn)介SQL(Structured Query Language,結(jié)構(gòu)查詢語言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI(美國國家標(biāo)準(zhǔn)學(xué)會(huì))聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比如在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴(kuò)展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的SQL命令,比如Sele
2、ct、 Insert、 Update、 Delete、 Create和 Drop常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。但是,不像其它的語言,如C、Pascal等,SQL沒有循環(huán)結(jié)構(gòu)(比如if-then-else、do-while)以及函數(shù)定義等等的功能。而且SQL只有一個(gè)數(shù)據(jù)類型的固定設(shè)置,換句話說,你不能在使用其它編程語言的時(shí)候創(chuàng)建你自己的數(shù)據(jù)類型。SQL功能強(qiáng)大,但是概括起來,它可以分成以下幾組:DML(Data Manipulation Language,數(shù)據(jù)操作語言):用于檢索或者修改數(shù)據(jù);DDL(Data Definition Language,數(shù)據(jù)定義語言): 用于定義數(shù)據(jù)的結(jié)構(gòu),比
3、如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫對(duì)象;DCL(Data Control Language,數(shù)據(jù)控制語言):用于定義數(shù)據(jù)庫用戶的權(quán)限。2)SQL 常用語句21 SELECT 語句作用:SELECT 語句用于從表中選取數(shù)據(jù)。結(jié)果被存儲(chǔ)在一個(gè)結(jié)果表中(稱為結(jié)果集)。語法:SELECT 目標(biāo)表的一個(gè)或多個(gè)列名稱,列名前可加表達(dá)式,如:avg(年齡) FROM 目標(biāo)表的名稱;以及:SELECT * FROM 表名稱;注釋:*代表選取全部。示例:下面是示范在一個(gè)表中選取自己想要的信息,例如我只想要老師們的聯(lián)系電話。這是原表(教師表),里面包含了教師編號(hào)等等信息,在這個(gè)表中工作時(shí)間、政治面目等等都是我們不需要知
4、道的信息所以我們要有選擇的選取。這個(gè)是在SQL視圖中輸入的代碼(如何打開SQL視圖不在這里列舉)。代碼的含義是:選取“教師編號(hào),姓名,性別,聯(lián)系電話“這四個(gè)列,列的來源是“教師“這個(gè)表這個(gè)是最終的結(jié)果,可以看到只有我們要的“教師編號(hào),姓名,性別,聯(lián)系電話“列,政治面目等并沒有在里面。拓展1:SELECT DISTINCT 語句作用:在一個(gè)表中,可能會(huì)包含重復(fù)值。這并不成問題,不過,有時(shí)你也許希望僅僅列出不同(distinct)的值。關(guān)鍵詞 DISTINCT 作用就是用于返回唯一不同的值。語法:SELECT DISTINCT 列名稱 FROM 表名稱示例: 在教師表中有兩個(gè)人的名字是江小洋,這里
5、示范只選取江小洋。在原表中可以看到“教師編號(hào)“為09,16的兩個(gè)人的名字都是江小洋。這是SQL代碼。代碼解析是:選取列名為“姓名“中的唯一值,列的來源是”教師“這個(gè)表。這是結(jié)果,可以看到他只選取了一個(gè)江小洋。并沒有顯示兩個(gè)江小洋。拓展2:SELECT 表達(dá)式(列名)語句作用:往往我們?cè)谶x取信息的時(shí)候希望能夠直接得到一些間接信息。如,我想要知道班級(jí)的平均分。語法:SELECT 表達(dá)式(列名) FORM 表名示例:這是一個(gè)“選課成績“表里面有一個(gè)”成績“列,我希望直接得到成績的平均值。這是原表。SQL代碼圖,名詞解釋:AVG:為每一組中的指定字段求平均值。(更多的函數(shù)和邏輯運(yùn)算符會(huì)在附錄中列出)A
6、S:為指定的列或表指定一個(gè)別名。(因?yàn)锳S內(nèi)容并不多就不再單獨(dú)列出一個(gè)拓展了)代碼解析:選取“成績”列,并計(jì)算這個(gè)字段的平均值,同時(shí)為這個(gè)字段重新命名為:成績平均值,這個(gè)列的來源表是“選課成績”表。這是結(jié)果圖,通過計(jì)算可以得知成績列的平均值是72.46.課堂作業(yè):為每個(gè)學(xué)生計(jì)算平均成績和為每門課程計(jì)算平均成績,并把結(jié)果字段更名為“平均值”。22 WHERE 子句作用:WHERE 子句用于規(guī)定選擇的標(biāo)準(zhǔn)。WHERE后面接的是條件表達(dá)式,如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句語法:SELECT 列名稱 FROM 表名稱 WHERE 條件表達(dá)式示例:例如我想知道
7、一個(gè)名字叫“洪智偉”的學(xué)生的信息。這是原表,里面擁有多條學(xué)生信息,我們可以看到第一個(gè)就是“洪智偉”同學(xué)的信息,我們的目的就是選取他的信息。代碼圖,代碼解析:選取所有字段名,字段的來源表是“學(xué)生”表,選取的條件是“姓名”等于“洪智偉”的記錄。結(jié)果圖,可以看到雖然來源表中有N條記錄當(dāng)選取到的記錄只有一條。其姓名叫洪智偉。拓展:AND & OR 運(yùn)算符作用:AND 和 OR 運(yùn)算符用于基于一個(gè)以上的條件對(duì)記錄進(jìn)行過濾。AND 和 OR 運(yùn)算符AND 和 OR 可在 WHERE 子語句中把兩個(gè)或多個(gè)條件結(jié)合起來。如果第一個(gè)條件和第二個(gè)條件都成立,則 AND 運(yùn)算符顯示一條記錄。如果第一個(gè)條件和第二個(gè)條
8、件中只要有一個(gè)成立,則 OR 運(yùn)算符顯示一條語法:SELECT 列名稱 FROM 表名稱 WHERE 條件 AND/OR 條件注釋:AND&OR可以嵌套使用! 示例:我想選取“所有山東省的男生”或“所有北京市的女生”這是原表,數(shù)據(jù)非常多而且雜亂,用刷選來查找記錄的話非常麻煩,所以選用SQL來查詢。代碼圖,代碼解析:選取所有字段,字段的來源是“學(xué)生”表。選取的條件是“性別是男的并且簡(jiǎn)歷是山東省的學(xué)生”或者“性別是女的并且簡(jiǎn)歷是北京市的學(xué)生”(本來想先做一個(gè)簡(jiǎn)單AND/OR語句再做多個(gè)拓展來介紹嵌套的使用,不過覺得太浪費(fèi)篇幅,并且嵌套不難理解,注意一下嵌套需要用括號(hào)()括住就可以了?。┱n堂作業(yè):選
9、取是團(tuán)員的男生和簡(jiǎn)歷是山東省的女生。23 GROUP BY 子句作用:GROUP BY 語句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。語法:SELECT 一個(gè)或多個(gè)列名,可接函數(shù)FROM 表名WHERE 條件表達(dá)式GROUP BY 列名示例:要求列出“選課成績”表中的“課程編號(hào)”從“110-120”的課程成績平均值。(呵呵,好像和之前的作業(yè)蠻像得=。=?。┰韴D,原表中每個(gè)課程都有N個(gè)學(xué)生選,其成績也有N項(xiàng),為了直觀的顯示我們來求以整數(shù)來表達(dá)的平均值。SQL代碼圖,名詞解釋:INT:將數(shù)值取整數(shù),如把72.2顯示為72,四舍五入。BETWEENAND : BETWEEN 操作符在 W
10、HERE 子句中使用, BETWEEN . AND 會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。代碼解析:選取課程編號(hào)和成績兩個(gè)字段,并且計(jì)算成績字段的整數(shù)平均值和更名為成績平均值,字段的來源表是“選課成績”表。選取記錄的條件是”課程編號(hào)在 110 120 這個(gè)區(qū)間內(nèi)的記錄”,然后根據(jù)課程編號(hào)來分組。結(jié)果圖,課程編號(hào)中只顯示了110-120的記錄,其成績的平均值也為整數(shù)。!拓展:HAVING 子句作用:在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無法與合計(jì)函數(shù)一起使用。同時(shí)HAVING都是緊跟著GROUP BY 語句出現(xiàn)的,提供一個(gè)組的條件表達(dá)式。語法:
11、SELECT 一個(gè)或多個(gè)列名,可接函數(shù)FROM 表名WHERE 條件表達(dá)式GROUP BY 列名HAVING 組條件表達(dá)式示例:在上一個(gè)示例當(dāng)中更加進(jìn)一步的精確選取數(shù)據(jù),只選取平均分超過75分的記錄。因?yàn)槭茄永m(xù)上個(gè)示例,所以原圖一樣就不再列出。SQL代碼圖,代碼解析:在原有的代碼基礎(chǔ)上添加了HAVING子句。使得數(shù)據(jù)更具有精確性,為了讓大家更加明確了解WHERE和HAVING的區(qū)別在這里在給大家看一個(gè)圖??梢钥吹饺缱饔茫耗睦锼f的。WHERE子句當(dāng)中是不能使用聚合函數(shù)的!如果我們希望得到一個(gè)平均值大于某個(gè)數(shù)的記錄的話。我們使用WHERE子句的話是做不到的,這個(gè)時(shí)候就必須使用HAVING了而需要
12、注意的是HAVING是在GROUP BY語句后使用的。結(jié)果圖,可以看到110-120區(qū)間內(nèi)只有兩門課程的成績平均值在75分以上。24oRDER BY 子句作用:ORDER BY 語句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序。ORDER BY 語句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 DESC 關(guān)鍵字。語法:SELECT 一個(gè)或多個(gè)列名,可接函數(shù)FROM 表名DRDER BY 列名示例:讓教師表里面的記錄按照男女排列。原表圖,原表中是根據(jù)教師編號(hào)來排列的。SQL代碼圖,代碼解析:選取全部字段,字段來源表是“教師”表,表的排序是根據(jù)表中的“性別”字段來排序。結(jié)果圖,可以看
13、到表是根據(jù)性別來來排序的,先男后女,因?yàn)槟械钠匆羰恰皀an”而女的拼音是“nv”,access中的漢字排序是根據(jù)漢字拼音的字母順序來排序的。拓展:綜合應(yīng)用SELECT 一個(gè)或多個(gè)列名,可接函數(shù)FROM 表名WHERE 條件表達(dá)式GROUP BY 列名HAVING 組條件表達(dá)式ORDER BY 列名 DESC因?yàn)镺RDER BY子句是對(duì)結(jié)果的重新排序,所以在此就不結(jié)合多個(gè)語句使用了,只是告訴大家能結(jié)合之前所學(xué)內(nèi)容使用而已!示例:對(duì)上個(gè)示例的結(jié)果進(jìn)行降序排列。原圖一樣就不提供了。 SQL代碼圖,代碼解析:和之前的示例一樣,只是按照降序排列而已。結(jié)果圖,可以看到和之前的那個(gè)結(jié)果圖的排序剛剛相反,這次
14、是女的排在前。課堂作業(yè):讓“教師”表按照性別降序排序,并且“學(xué)歷”升序排序。25INSERT INTO 語句作用:INSERT INTO 語句用于向表格中插入新的記錄!注意在添加記錄之前一定要先查看被添加記錄表的字段設(shè)置屬性,看看字段有沒有設(shè)置為不能為空或者字段最大值等等之類的。語法:INSERT INTO 表名稱 VALUES (值1, 值2,.)注釋:因?yàn)椴迦氲氖且粋€(gè)表的全部列值所以列名可以忽略不寫。我們也可以指定所要插入數(shù)據(jù)的列:INSERT INTO 表名 (列1, 列2,.) VALUES (值1, 值2,.)注釋:如果插入的知識(shí)表的部分列值的話,則必須列出相應(yīng)的列名。沒有的列出的列
15、名則取空值。示例:向“學(xué)生”表添加一個(gè)記錄原表圖,表中的記錄排第一的是“洪智偉”。SQL代碼圖,代碼解析:向“學(xué)生”表中的“學(xué)生編號(hào),姓名,年齡,簡(jiǎn)歷”字段添加一個(gè)新的記錄,記錄的內(nèi)容是“學(xué)生編號(hào)為1991,姓名是黃學(xué)宇,年齡為18,簡(jiǎn)歷為廣東省”注釋:因?yàn)樘砑佑涗浘哂胁豢苫謴?fù)性所以access會(huì)彈出個(gè)警告框來詢問你是不是確定要進(jìn)行這步操作。結(jié)果圖,可以看到記錄已經(jīng)成功添加,沒有選擇的字段為空值。拓展:高級(jí)應(yīng)用作用:向一個(gè)表中添加由多個(gè)表組合成的新紀(jì)錄。語法:INSERT INTO 添加記錄的表名稱(列1,列2)SELECT 表1.列1,表1.列2,表2.列1,表3.列1FROM 表1,表2,
16、表3WHERE 條件表達(dá)式;示例:制作一個(gè)補(bǔ)考人員名單。原表圖,這是個(gè)空表,在向一個(gè)表添加記錄時(shí)一定要確認(rèn)這個(gè)表的存在而且要確認(rèn)字段的屬性。這是個(gè)我剛剛建立的新表,字段屬性都是文本,沒有任何限制條件。在這里我是用SQL來建立的這個(gè)表。關(guān)于建立新表的SQL代碼大家可以使用CREATE TABLE 語句,因?yàn)檫@篇教程只是介紹基本SQL內(nèi)容所以沒有在這里列舉。有需要的話我會(huì)在寫多一份相對(duì)高級(jí)點(diǎn)的教程。SQL代碼圖,代碼解析:向“補(bǔ)考人員名單”這份表中的“學(xué)生編號(hào),姓名,課程名稱,成績”字段添加記錄。添加的新記錄來至于“學(xué)生”表中的“學(xué)生編號(hào)”,“學(xué)生”表中的“姓名”,“課程”表中的“課程名稱”,“選
17、課成績”中的“成績”。選取的條件是“選課成績”中的“成績”小于60,且在這些表中“學(xué)生”表里面的“學(xué)生編號(hào)”等于“選課成績“中的學(xué)生編號(hào)”,“課程”表中的“課程編號(hào)”等于“選課成績”中的“課程編號(hào)”。同樣的,因?yàn)檫@個(gè)操作具有不可恢復(fù)性所以一樣會(huì)彈出警告框!在這里還可以使用INNER JOIN(內(nèi)連接)語句來連接這3個(gè)表的相同字段。在這里并沒有列舉,理由同上。結(jié)果圖,可以看到所有成績低于60的記錄都被選取出來。其顯示結(jié)果也很直觀,聯(lián)系了3個(gè)表中的數(shù)據(jù)。課堂作業(yè):制作一個(gè)優(yōu)秀學(xué)員名單,要求選課成績有兩門成績上80分。26UPDATE 語句作用:Update 語句用于更新,修改表中的數(shù)據(jù)。語法:UP
18、DATE 表名稱 SET 列名稱 = 需要改變的新值 WHERE 條件表達(dá)式注釋:WHERE子句用于確認(rèn)目標(biāo)列來修改數(shù)據(jù)。示例:修改錯(cuò)誤數(shù)據(jù)。這是之前的例子用INSERT INTO 語句來插入的一條記錄,在這里與上個(gè)例子不同的是“黃學(xué)宇”在這里是為團(tuán)員,而且入校日期也沒有填寫,我們利用UPDATE來補(bǔ)齊。SQL代碼圖,代碼解析:更新“學(xué)生”表,更新的設(shè)置為:把入校日期更新為“2009-4-22”,把學(xué)生編號(hào)修改為“000000”,團(tuán)員修改為“非團(tuán)員”。更新的列是姓名等于“黃學(xué)宇”的那個(gè)列。注釋:關(guān)于 “團(tuán)員 = false ”存在疑問,因?yàn)槲沂峭ㄟ^其他語言來類比得出來的,經(jīng)過王老師指導(dǎo),說是錯(cuò)誤的。當(dāng)然在SQL上使用完全沒有問題,在這里只是給大家提供一個(gè)參考。結(jié)果圖,數(shù)據(jù)已經(jīng)完全按照我們輸入的那樣來更新、修改了!拓展:ALTER TABLE 語句作用:ALTER TABLE 語句用于在已有的表中添加、修改或刪除列。語法:如需在表中添加列,請(qǐng)使用下列語法:ALTER TABLE 表名ADD 列名 字段屬性(文本,時(shí)間日期等。)要?jiǎng)h除表中的列,請(qǐng)使用下列語法:ALTER TABLE 表名 DROP COLUMN 列名注釋:某些數(shù)據(jù)庫系統(tǒng)不允許這種在數(shù)據(jù)庫表中刪除列的方式
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙人經(jīng)營協(xié)議書
- 醫(yī)院擦玻璃合同范本
- 保姆聘請(qǐng)合同范本
- 合同標(biāo)注正規(guī)合同范本
- 廠房抵賬合同范本
- 三亞合同范本
- 廠房 轉(zhuǎn)讓 出租合同范本
- 雙擁賓館合同范本
- 廚房用工合同范本
- 雙甲方施工合同范本
- 國網(wǎng)標(biāo)書制作流程
- 六年級(jí)語文教學(xué)學(xué)情分析提高六語文質(zhì)量的措施
- 中醫(yī)藥臨床適宜技術(shù)
- 銀發(fā)經(jīng)濟(jì)的發(fā)展路徑
- 工業(yè)廠房水電安裝施工方案
- 城鄉(xiāng)規(guī)劃管理與法規(guī)系列講座課件-城市規(guī)劃依法行政案例
- 《自動(dòng)噴水滅火系統(tǒng)設(shè)計(jì)》圖示
- 第二章陸地和海洋【真題訓(xùn)練】(人教版)(原卷版)
- 小吃街概念性規(guī)劃
- 創(chuàng)新小白實(shí)操手冊(cè) 第2版 課件全套 吳雋 模塊1-8 人人皆可創(chuàng)新-商業(yè)呈現(xiàn)與商業(yè)計(jì)劃
- 2024年世界職業(yè)院校技能大賽高職組“關(guān)務(wù)實(shí)務(wù)組”賽項(xiàng)參考試題庫(含答案)
評(píng)論
0/150
提交評(píng)論