SQL-基礎(chǔ)知識(shí)匯總_第1頁(yè)
SQL-基礎(chǔ)知識(shí)匯總_第2頁(yè)
SQL-基礎(chǔ)知識(shí)匯總_第3頁(yè)
SQL-基礎(chǔ)知識(shí)匯總_第4頁(yè)
SQL-基礎(chǔ)知識(shí)匯總_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)SQL 基礎(chǔ)知識(shí)梳理(一)- 數(shù)據(jù)庫(kù)與 SQL (2019.03)目錄一、Whats 數(shù)據(jù)庫(kù)1.數(shù)據(jù)庫(kù)(Database,DB):將大量數(shù)據(jù)保存起來(lái),通過(guò)計(jì)算機(jī)加工而成的可以進(jìn)行高效訪問(wèn)的數(shù)據(jù)集合。如:大型-銀行存儲(chǔ)的信息,小型-電話簿。2.數(shù)據(jù)庫(kù)管理系統(tǒng)(Batabase Management System,DBMS):用來(lái)管理數(shù)據(jù)庫(kù)的計(jì)算機(jī)系統(tǒng)。3.關(guān)系型數(shù)據(jù)庫(kù)(Relational Database,RDB):目前應(yīng)用最廣泛的數(shù)據(jù)庫(kù)。4.結(jié)構(gòu)化查詢語(yǔ)言(Struc

2、tured Query Language,SQL):專門用于操作 RDB。5.常見的 5 種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System,RDBMS):Oracle Database:甲骨文公司SQL Server:微軟公司DB2:IBM 公司PostgreSQL:開源MySQL:開源二、數(shù)據(jù)庫(kù)結(jié)構(gòu)1.服務(wù)器:用于接收并處理其它程序發(fā)出的請(qǐng)求的程序(軟件),或者是安裝此類程序的設(shè)備(計(jì)算機(jī))。2.客戶端:向服務(wù)器發(fā)出請(qǐng)求的程序(軟件),或者是安裝此類程序的設(shè)備(計(jì)算機(jī))。3.表(table):類似 Excel,由行和列組成的二維表。4.字段:

3、表的列(垂直方向)。5.記錄:表的行(水平方向)。【注意】關(guān)系數(shù)據(jù)庫(kù)必須以行為單位進(jìn)行數(shù)據(jù)讀寫。6.單元格:行列交匯處?!咀⒁狻颗c Excel 不同,一個(gè)單元格只能輸入一個(gè)數(shù)據(jù)。三、SQL 概要1.SQL 語(yǔ)句:用關(guān)鍵字、表名和列名等組合而成的一條語(yǔ)句。2.3 種SQL 語(yǔ)句種類:(1)DDL(Data Definition Language,數(shù)據(jù)定義語(yǔ)言):創(chuàng)建、刪除或修改數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)中的表等對(duì)象。CREATE:創(chuàng)建數(shù)據(jù)庫(kù)和表等對(duì)象DROP:刪除數(shù)據(jù)庫(kù)和表等對(duì)象ALTER:修改數(shù)據(jù)庫(kù)和表等對(duì)象(2)DML(Data Manipulation Language,數(shù)據(jù)操作語(yǔ)言):查詢或修改表

4、中的記錄。SELECT:查詢表中的數(shù)據(jù)INSERT:向表中插入數(shù)據(jù)UPDATE:修改表中的數(shù)據(jù)DELETE:刪除表中的數(shù)據(jù)(3)DCL(Data Control Language,數(shù)據(jù)控制語(yǔ)言):確認(rèn)或取消對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)變更的執(zhí)行操作,以及對(duì)用戶的操作數(shù)據(jù)庫(kù)中的對(duì)象權(quán)限進(jìn)行設(shè)定。COMMIT:確認(rèn)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行的變更ROLLBACK:取消對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行的變更GRANT:賦予用戶的操作權(quán)限REVOKE:取消用戶的操作權(quán)限【備注】DML 使用最頻繁。3.SQL 語(yǔ)句書寫規(guī)范:以分號(hào)(;)結(jié)尾;大小寫不敏感,不區(qū)分關(guān)鍵字的大小寫;【注意】插入到表中的數(shù)據(jù)是區(qū)分大小寫的,如“HI”、“H

5、i”和“hi”都不同。該系列隨筆將采用“關(guān)鍵字大寫,表名和列名的首字母大寫”的格式。單詞使用半角空格或換行符隔開4.常數(shù)的書寫方式:字符串、日期:用單引號(hào)括起來(lái)(),如Hello,2016-09-24。數(shù)字:直接書寫,不用加單引號(hào),如:5。四、創(chuàng)建數(shù)據(jù)庫(kù)與表1.數(shù)據(jù)庫(kù)創(chuàng)建:- 語(yǔ)法:CREATE DATABASE CREATE DATABASE Shop - 創(chuàng)建名為 Shop 的數(shù)據(jù)庫(kù)2.表的創(chuàng)建- 語(yǔ)法:- CREATE TABLE - (- ,- ,- .- ,- ,- .- )- 創(chuàng)建名為 Shohin 的表CREATE TABLE Shohin( shohin_id CHAR(4)

6、NOT NULL, shohin_mei VARCHAR(100) NOT NULL, shohin_bunrui VARCHAR(32) NOT NULL, hanbai_tanka INTEGER , shiire_tanka INTEGER , torokubi DATE , PRIMARY KEY (shohin_id) );3.命名規(guī)則:只能使用半角英文字母、數(shù)字、下劃線(_)作為數(shù)據(jù)庫(kù)、表和列的名稱;規(guī)范要求命名以半角英文字符開頭;名稱不能重復(fù)。4.數(shù)據(jù)類型的指定:聲明該列的數(shù)據(jù)類型,是一種約束。5.數(shù)據(jù)類型介紹:INTEGER:整型,意味不能存儲(chǔ)小數(shù);CHAR:字符串型,如 CH

7、AR(10)和 CHAR(100)中的括號(hào)表名該列可以存儲(chǔ)的字符串的最大長(zhǎng)度。它是“定長(zhǎng)字符串”,如 CHAR(8) 表示在列中插入abc 時(shí)會(huì)自動(dòng)保存成 abc (后面5個(gè)半角空格)的形式;VARCHAR:字符串型,類似 CHAR,不同的是它是“可變長(zhǎng)字符串”,如VARCHAR(8) 在插入 abc,保存的就是字符串 abc;DATE:日期類型;. .6.約束:非空約束:NULL 是空白(無(wú)記錄)的意思的關(guān)鍵字,NOT NULL 表示必須輸入的約束。主鍵約束:主鍵是可以確定一行數(shù)據(jù)的列,一般通過(guò)它取特定行的數(shù)據(jù),它是唯一的,不允許重復(fù)。. .五、更新和刪除表1.刪除表- 語(yǔ)法:DROP TA

8、BLE DROP TABLE Shohin; - 刪除名為 Shohin 的表【注意】被刪的表,無(wú)法恢復(fù)。2.更新表(1)添加列- 語(yǔ)法:ALTER TABLE ADD ;ALTER TABLE Shohin ADD Shohin_mei_Kana VARCHAR(100); - 在 Shohin 中添加名為 Shohin_mei_Kana 類型為 VARCHAR(100) 的列(2)刪除列- 語(yǔ)法:ALTER TABLE DROP COLUMN ;ALTER TABLE Shohin DROP COLUMN Shohin_mei_Kana; - 刪除 Shohin 表中名為 Shohin_m

9、ei_Kana 的列【注意】表定義變更后無(wú)法恢復(fù)。SQL 基礎(chǔ)知識(shí)梳理(二) - 查詢基礎(chǔ)目錄一、SELECT 語(yǔ)句基礎(chǔ)1.查詢指定列:SELECT 關(guān)鍵字-語(yǔ)法:-SELECT , . - 希望查詢列的名稱-FROM - 指定選取數(shù)據(jù)的表- 從 Shohin 中取 3 列SELECT shohin_id, shohin_mei, hanbai_tanka- 列的順序可以任意指定,逗號(hào)(“,”)分隔,查詢結(jié)果的順序和 SELECT 子句中的順序相同F(xiàn)ROM Shohin;2.查詢表的所有列:星號(hào)(*)-語(yǔ)法-SELECT * - 星號(hào)(*)代表所有列-FROM ;【備注】使用星號(hào)(*)的話就無(wú)

10、法設(shè)定列的顯示順序3.為列設(shè)定別名:AS 關(guān)鍵字SELECT shohin_id AS Id, shohin_mei AS Name, shiire_tanka PriceFROM Shohin; - 不用 AS 關(guān)鍵字也可以SELECT shohin_id AS 編號(hào), shohin_mei AS 名稱, shiire_tanka 價(jià)格FROM Shohin; - 設(shè)定漢語(yǔ)別名:加上雙引號(hào)()或單引號(hào)()4.常數(shù)的查詢SELECT 產(chǎn)品 AS Product, - 產(chǎn)品:字符串常數(shù) 38 AS Price, - 38:數(shù)字常數(shù) 2016-09-30 AS 生產(chǎn)日期 - 2009-02-24:

11、日期常數(shù)【備注】字符串和日期使用單引號(hào)()。5.從結(jié)果中刪除重復(fù)行:DISTINCT原圖(1)SELECT DISTINCT shohin_bunrui FROM dbo.Shohin;-使用 DISTINCT 移除shohin_bunrui 列中的重復(fù)數(shù)據(jù)(2)DISTINCT對(duì) NULL 類型的處理:存在多條 NULL 值的行時(shí),會(huì)結(jié)合為一條 NULL 數(shù)據(jù)。SELECT DISTINCT shiire_tanka FROM dbo.Shohin;(3)多列之前使用 DISTINCTSELECT DISTINCT shohin_bunrui, torokubiFROM dbo.Shohin

12、DISTINCT 會(huì)將多個(gè)列的數(shù)據(jù)進(jìn)行組合,將重復(fù)的數(shù)據(jù)結(jié)合為一條?!咀⒁狻緿ISTINCT 關(guān)鍵字只能用在第一個(gè)列名之前。6.篩選記錄:WHEREWHERE 子句中可以指定“某一列的值和這個(gè)字符串相等”或者“某一列的值大于這個(gè)數(shù)字”等條件,找出只符合該條件的記錄。-語(yǔ)法:-SELECT , .-FROM -WHERE ;SELECT shohin_id, shohin_mei, shohin_bunruiFROM dbo.ShohinWHERE shohin_bunrui = 衣服;- shohin_bunrui = 衣服:為條件表達(dá)式選取行之后,再輸出列【備注】WHERE 子句:首先通過(guò)該

13、子句查詢出符合指定條件的記錄,再選取出 SELECT 語(yǔ)句指定的列。【注意】SQL 子句的書寫格式是固定的,不能隨意更改。如 WHERE 子句必須緊跟在 FROM 子句后。7.注釋的寫法注釋對(duì)于 SQL 的執(zhí)行沒(méi)有任何影響。- 單行注釋/* 多行注釋*/二、算術(shù)運(yùn)算符和比較運(yùn)算符1.算術(shù)運(yùn)算符SELECT shohin_mei, hanbai_tanka, hanbai_tanka * 2 AS hanbai_tanka_x2FROM dbo.Shohin;圖 商品單價(jià)的兩倍四則算術(shù)運(yùn)算符含義運(yùn)算符加法+減法-乘法*除法/括號(hào)(“(”“)”)可以提高表達(dá)式的優(yōu)先級(jí)。2.需要注意 NULLSEL

14、ECT 5 + NULL, 10 - NULL, 1 * NULL, 4 / NULL, NULL / 9;【備注】所有包含 NULL 的計(jì)算,結(jié)果肯定為 NULL。3.比較運(yùn)算符比較運(yùn)算符運(yùn)算符含義=相等不等=大于等于大于=小于等于小于-示例1:SELECT shohin_mei, shohin_bunruiFROM dbo.ShohinWHERE hanbai_tanka = 500;選取hanbai_tanka 列為 500 的記錄-示例2SELECT shohin_mei, shohin_bunruiFROM dbo.ShohinWHERE hanbai_tanka 500;-示例3S

15、ELECT shohin_mei, shohin_bunruiFROM dbo.ShohinWHERE hanbai_tanka != 500;選取hanbai_tanka 列的值不是 500 的記錄-示例4SELECT *FROM dbo.ShohinWHERE hanbai_tanka - shiire_tanka = 500;3.對(duì)字符串使用不等號(hào)時(shí)的注意事項(xiàng)創(chuàng)建表原圖-示例:選取出大于2的數(shù)據(jù)的 SELECT 語(yǔ)句SELECT *FROM dbo.CharsWHERE chr 2;【注意】chr 為字符串類型,對(duì)字符串類型的數(shù)據(jù)進(jìn)行大小比較時(shí),跟數(shù)字不一樣。4.不能對(duì) NULL 使用比

16、較運(yùn)算符-示例1:SELECT shohin_mei, shiire_tankaFROM dbo.ShohinWHERE shiire_tanka = NULL; -錯(cuò)誤的 SELECT 語(yǔ)句-示例2SELECT shohin_mei, shiire_tankaFROM dbo.ShohinWHERE shiire_tanka IS NULL; -選取 NULL 的記錄-示例3SELECT shohin_mei, shiire_tankaFROM dbo.ShohinWHERE shiire_tanka IS NOT NULL; -選取不為 NULL 的記錄【注意】希望選取 NULL 記錄時(shí),

17、使用 IS NULL;希望選取不是 NULL 的記錄時(shí),使用 IS NOT NULL。三、邏輯運(yùn)算符1.NOT 運(yùn)算符:取反-示例:SELECT *FROM dbo.ShohinWHERE NOT hanbai_tanka = 1000;-等價(jià)于 hanbai_tanka 1000取hanbai_tanka 列不大于 1000 的記錄(hanbai_tanka = 3000;SELECT shohin_mei, shiire_tankaFROM dbo.ShohinWHERE shohin_bunrui = 廚房用具 OR hanbai_tanka = 3000;【備注】多個(gè)查詢條件進(jìn)行組合時(shí)

18、,需要使用 AND 運(yùn)算符或者 OR 運(yùn)算符。2.通過(guò)括號(hào)進(jìn)行強(qiáng)化-示例1SELECT shohin_mei, shohin_bunrui, torokubiFROM dbo.ShohinWHERE shohin_bunrui = 辦公用品 AND torokubi = 2009-09-11 OR torokubi = 2009-09-20;-示例2SELECT shohin_mei, shohin_bunrui, torokubiFROM dbo.ShohinWHERE shohin_bunrui = 辦公用品 AND (torokubi = 2009-09-11 OR torokubi =

19、 2009-09-20);【備注】AND 運(yùn)算優(yōu)先于 OR 運(yùn)算,想要優(yōu)先執(zhí)行 OR 運(yùn)算時(shí)可以使用括號(hào)。SQL 基礎(chǔ)知識(shí)梳理(三) - 聚合和排序目錄一、對(duì)表進(jìn)行聚合查詢1.聚合函數(shù)(1)5 個(gè)常用函數(shù):COUNT:計(jì)算表中的記錄(行)數(shù)。SUM:計(jì)算表中數(shù)值列的數(shù)據(jù)合計(jì)值。AVG:計(jì)算表中數(shù)值列的數(shù)據(jù)平均值。MAX:求出表中任意列中數(shù)據(jù)的最大值。MIN:求出表中任意列中數(shù)據(jù)的最小值。(2)聚合:將多行匯總成一行。圖1-1Shohin 表2.計(jì)算表中數(shù)據(jù)的行數(shù)-示例SELECT COUNT(*)- *:參數(shù),這里代表全部列FROM dbo.Shohin;3.計(jì)算 NULL 以外數(shù)據(jù)的行數(shù)將

20、COUNT(*) 的參數(shù)改成指定對(duì)象的列,就可以得到該列的非 NULL 行數(shù)。SELECT COUNT(shiire_tanka)FROM dbo.Shohin;只計(jì)算非 NULL 的行【備注】除了 COUNT 函數(shù),其它函數(shù)不能將星號(hào)作為參數(shù)?!緜渥ⅰ緾OUNT 函數(shù)的結(jié)果根據(jù)參數(shù)的不同而不同。COUNT(*) 會(huì)得到包含 NULL 的數(shù)據(jù)行數(shù),而 COUNT() 會(huì)得到 NULL 之外的數(shù)據(jù)行數(shù)。4.計(jì)算合計(jì)值SELECT SUM(hanbai_tanka) AS sum_hanbai_tanka, -總和 AVG(hanbai_tanka) AS avg_hanbai_tanka, -平

21、均 MAX(hanbai_tanka) AS max_hanbai_tanka, -最大 MIN(hanbai_tanka) AS min_hanbai_tanka -最小FROM dbo.Shohin;【備注】所有的聚合函數(shù),如果以列名為參數(shù),會(huì)無(wú)視 NULL 值所在的行。SELECT MAX(torokubi),-torokubi 為日期 MIN(torokubi)FROM dbo.Shohin【備注】MAX/MIN 函數(shù)幾乎適用于所有數(shù)據(jù)類型的列。SUM/AVG 函數(shù)只適用于數(shù)值類型的列。5.使用聚合函數(shù)刪除重復(fù)值(關(guān)鍵字 DISTINCT)-示例1:計(jì)算去除重復(fù)數(shù)據(jù)后的數(shù)據(jù)行數(shù)SELE

22、CT COUNT(DISTINCT shohin_bunrui)FROM dbo.Shohin;-示例2:先計(jì)算數(shù)據(jù)行數(shù)再刪除重復(fù)數(shù)據(jù)的結(jié)果SELECT DISTINCT COUNT(shohin_bunrui)FROM dbo.Shohin;【備注】在聚合函數(shù)的參數(shù)中使用 DISTINCT(示例1),可以刪除重復(fù)數(shù)據(jù)。DISTINCT 不僅限于 COUNT 函數(shù),所有的聚合函數(shù)都可以使用。二、對(duì)表進(jìn)行分組1.GROUP BY 子句-語(yǔ)法:-SELECT , , .-FROM -GROUP BY , , .;-示例SELECT shohin_bunrui AS 商品種類, COUNT(*) A

23、S 數(shù)量FROM dbo.ShohinGROUP BY shohin_bunrui;【備注】GROUP BY 子句中指定的列稱為“聚合鍵”或“分組列”?!咀泳涞臅鴮戫樞颍〞憾ǎ縎ELECT - FROM - WHERE - GROUP BY2.聚合鍵中包含 NULL 的情況SELECT shiire_tanka, COUNT(*)FROM dbo.ShohinGROUP BY shiire_tanka;【備注】聚合鍵中包含 NULL 時(shí),在結(jié)果中也會(huì)以 NULL 行的形式表現(xiàn)出來(lái)。3.WHERE 對(duì) GROUP BY 執(zhí)行結(jié)果的影響-語(yǔ)法-SELECT , , .-FROM -WHERE -

24、GROUP BY , , .SELECT shiire_tanka, COUNT(*)FROM dbo.ShohinWHERE shohin_bunrui = 衣服GROUP BY shiire_tanka這里是先根據(jù) WHERE 子句指定的條件進(jìn)行過(guò)濾,然后再進(jìn)行聚合處理。【執(zhí)行順序】FROM - WHERE - GROUP BY - SELECT。這里是執(zhí)行順序,跟之前的書寫順序是不一樣的。4.與聚合函數(shù)和 GROUP BY 子句有關(guān)的常見錯(cuò)誤(1)易錯(cuò):在 SELECT 子句中書寫了多余的列SELECT 子句只能存在以下三種元素:常數(shù)聚合函數(shù)GROUP BY 子句中指定的列名(即聚合鍵)

25、易錯(cuò)點(diǎn)1【總結(jié)】使用 GROUP BY 子句時(shí),SELECT 子句不能出現(xiàn)聚合鍵之外的列名。(2)易錯(cuò):在 GROUP BY 子句中寫了列的別名易錯(cuò)點(diǎn)2回顧之前說(shuō)的執(zhí)行順序,SELECT 子句是在 GROUP BY 子句之后執(zhí)行。所以執(zhí)行到GROUP BY 子句時(shí)無(wú)法識(shí)別別名?!究偨Y(jié)】GROUP BY 子句不能使用 SELECT 子句中定義的別名。(3)易錯(cuò):GROUP BY 子句的結(jié)果能排序嗎?【解答】它是隨機(jī)的。如果想排序,請(qǐng)使用 ORDER BY 子句?!究偨Y(jié)】GROUP BY 子句結(jié)果的顯示是無(wú)序的。(4)易錯(cuò):在 WHERE 子句中使用聚合函數(shù)易錯(cuò)點(diǎn)3【總結(jié)】只有 SELECT 子句

26、和 HAVING 子句(以及 ORDER BY 子句)中能夠使用聚合函數(shù)。三、為聚合結(jié)果指定條件1.HAVING 子句WHERE 子句智能指定記錄(行)的條件,而不能用來(lái)指定組的條件?!緜渥ⅰ縃AVING 是 HAVE(擁有)的現(xiàn)在分詞。-語(yǔ)法:-SELECT , , .-FROM -GROUP BY , , .-HAVING 【書寫順序】SELECT - FROM - WHERE - GROUP BY - HAVINGSELECT shohin_bunrui, COUNT(*)FROM dbo.ShohinGROUP BY shohin_bunruiHAVING COUNT(*) = 2從通

27、過(guò)商品種類進(jìn)行聚合分組后的結(jié)果中,取出“包含數(shù)據(jù)的行數(shù)為 2 行”的數(shù)據(jù)2.HAVING 子句的構(gòu)成要素(1)3 要素:常數(shù)聚合函數(shù)GROUP BY 子句中指定的列名(即聚合鍵)易錯(cuò)用法3.HAVING 與 WHERE有些條件可以寫在 HAVING 子句中,又可以寫在 WHERE 子句中。這些條件就是聚合鍵所對(duì)應(yīng)的條件。結(jié)果一樣【建議】雖然結(jié)果一樣,聚合鍵對(duì)應(yīng)的條件應(yīng)該寫在 WHERE 子句中,不是 HAVING 子句中。【理由】WHERE 子句的執(zhí)行速度比 HAVING 快。意義:WHERE 子句 = 指定行所對(duì)應(yīng)的條件,HAVING 子句 = 指定組所對(duì)應(yīng)的條件。四、對(duì)查詢結(jié)果進(jìn)行排序1.

28、ORDER BY 子句-語(yǔ)法:-SELECT , , .-FROM -ORDER BY , , .SELECT shohin_id, hanbai_tankaFROM dbo.ShohinORDER BY hanbai_tanka; -升序排列銷售單價(jià)由低到高(升序)排序鍵:ORDER BY 子句中書寫的列名?!緯鴮戫樞颉縎ELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY2.升序(ASC)和降序(DESC):SELECT shohin_id, hanbai_tankaFROM dbo.ShohinORDER BY hanbai_tanka

29、DESC; -降序排列【備注】ORDER BY 子句中排列順序時(shí)會(huì)默認(rèn)使用升序(ASC)進(jìn)行排列。3.指定多個(gè)排序鍵SELECT shohin_id, shohin_mei, hanbai_tanka, shiire_tankaFROM dbo.ShohinORDER BY hanbai_tanka, shohin_id;4.NULL 值的順序:排序鍵中包含 NULL 時(shí),會(huì)在開頭或末尾進(jìn)行匯總。5.在排序鍵中使用 SELECT 子句中的別名SELECT shohin_id AS id, shohin_mei, hanbai_tanka AS htFROM dbo.ShohinORDER BY

30、 ht, id;【執(zhí)行順序】FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY【備注】ORDER BY 子句可以使用 SELECT 子句中定義的別名,GROUP BY 子句不能使用別名。6.ORDER BY 子句中使用聚合函數(shù)SELECT shohin_bunrui, COUNT(*)FROM dbo.ShohinGROUP BY shohin_bunruiORDER BY COUNT(*);7.不建議使用列的編號(hào)進(jìn)行排序,雖然可以SELECT shohin_id , shohin_mei , shohin_bunrui , hanbai_

31、tanka , shiire_tanka , torokubiFROM dbo.ShohinORDER BY hanbai_tanka DESC, shohin_id;SELECT shohin_id , shohin_mei , shohin_bunrui , hanbai_tanka , shiire_tanka , torokubiFROM dbo.ShohinORDER BY 4 DESC, 1;-這里使用列的編號(hào),不推薦使用【備注】在 ORDER BY 子句中不要使用列的編號(hào)。SQL 基礎(chǔ)知識(shí)梳理(四) - 數(shù)據(jù)更新目錄一、插入數(shù)據(jù)1.INSERT 語(yǔ)句的基本語(yǔ)法-語(yǔ)法:-INSER

32、T INTO (列1, 列2, .) VALUES (值1, 值2, .)-示例INSERT INTO dbo.Shohin ( shohin_id , shohin_mei , shohin_bunrui , hanbai_tanka , shiire_tanka , torokubi )VALUES ( 0011 , - shohin_id - char(4) T 恤衫 , - shohin_mei - varchar(100) 衣服 , - shohin_bunrui - varchar(32) 1000 , - hanbai_tanka - int 500 , - shiire_tan

33、ka - int GETDATE() - torokubi - date );(1)列名和值用逗號(hào)隔開,分別放在括號(hào)里,這種形式稱為清單。 ( shohin_id , shohin_mei , shohin_bunrui , hanbai_tanka , shiire_tanka , torokubi ) -列清單 ( 0011 , - shohin_id - char(4) T 恤衫 , - shohin_mei - varchar(100) 衣服 , - shohin_bunrui - varchar(32) 1000 , - hanbai_tanka - int 500 , - shii

34、re_tanka - int GETDATE() - torokubi - date ) -值清單 一次性多行 INSERT2.省略列清單INSERT INTO dbo.ShohinVALUES ( 0014 , - shohin_id - char(4) T 恤衫 , - shohin_mei - varchar(100) 衣服 , - shohin_bunrui - varchar(32) 1000 , - hanbai_tanka - int 500 , - shiire_tanka - int GETDATE() - torokubi - date );3.插入 NULL 值INSER

35、T INTO dbo.ShohinVALUES ( 0015 , - shohin_id - char(4) T 恤衫 , - shohin_mei - varchar(100) 衣服 , - shohin_bunrui - varchar(32) 1000 , - hanbai_tanka - int NULL , - shiire_tanka - int GETDATE() - torokubi - date );【備注】插入 NULL 值的列不能設(shè)置為 NOT NULL 約束。4.插入默認(rèn)值-示例:創(chuàng)建表時(shí)設(shè)置默認(rèn)值CREATE TABLE ShohinIns( id CHAR(4) N

36、OT NULL, num INT DEFAULT 0 -DEFAULT 默認(rèn)約束)-示例:INSERT 時(shí)顯示插入默認(rèn)值INSERT INTO dbo.ShohinIns ( id, num )VALUES ( 001, - id - char(4) DEFAULT - num - int )-示例:INSERT 隱式插入默認(rèn)值INSERT INTO dbo.ShohinIns( id )VALUES (002)【備注】建議使用顯示的方式插入值。如果插入的時(shí)候隱式省略了列名,并且該列沒(méi)有指定默認(rèn)值的時(shí)候,該列的值會(huì)被設(shè)定為 NULL(如果省略的列設(shè)置了 NOT NULL 約束的話,執(zhí)行會(huì)報(bào)錯(cuò))

37、?!究偨Y(jié)】省略 INSERT 語(yǔ)句的列名,就會(huì)自動(dòng)設(shè)定該列的默認(rèn)值(沒(méi)有默認(rèn)值時(shí)會(huì)設(shè)定為 NULL)。5.從其它表復(fù)制數(shù)據(jù)-語(yǔ)法INSERT . SELECT .-示例INSERT dbo.ShohinIns ( id, num )SELECT shohin_id, shiire_tankaFROM dbo.Shohin-示例INSERT INTO dbo.ShohinIns ( id, num )SELECT id=1, num =2;-示例INSERT INTO dbo.ShohinIns ( id, num )SELECT 1, 2;【備注】INSERT 語(yǔ)句中的 SELECT 語(yǔ)句中,可以使用 WHERE 子句或者 GROUP BY 子句等任何 SQL 語(yǔ)法。(但使用 ORDER BY 子句并不會(huì)產(chǎn)生任何效果。)二、刪除數(shù)據(jù)1.2 種 刪除數(shù)據(jù)的方法:(1)DROP TABLE 語(yǔ)句:刪除表(2)DELETE 語(yǔ)句:刪除表的數(shù)據(jù)-語(yǔ)法-DELETE FROM ;-示例DELETE FROM dbo.ShohinIns;【備注】DELETE 語(yǔ)句刪除的對(duì)象是記錄(行),不是表和列。2.指定刪除對(duì)象的 DELETE 語(yǔ)句-語(yǔ)法-DELETE FROM -WHERE ;-示例DELETE FROM dbo.ShohinWHERE h

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論