轉(zhuǎn)換數(shù)據(jù) SQL Sever足夠強(qiáng)大,可以在需要的時(shí)候把大部分?jǐn)?shù)值從一種類(lèi)型轉(zhuǎn)換為另一種類(lèi)型。
例如,要比較SMALLINT型和INT型數(shù)據(jù)的大小,你不需要進(jìn)行顯式的類(lèi)型轉(zhuǎn)換。SQL Sever會(huì)為你完成這項(xiàng)工作。
但是,當(dāng)你想在字符型數(shù)據(jù)和其它類(lèi)型的數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換時(shí),你的確需要自己進(jìn)行轉(zhuǎn)換操作。 例如,假設(shè)你想從一個(gè)MONEY型字段中取出所有的值,并在結(jié)果后面加上字符串“US Dollars”。
你需要使用函數(shù)CONVERT(),如下例所示: SELECT CONVERT(CHAR (8),price)+'US Dollars' FROM orders 函數(shù)CONVERT()帶有兩個(gè)變量。 第一個(gè)變量指定了數(shù)據(jù)類(lèi)型和長(zhǎng)度。
第二個(gè)變量指定了要進(jìn)行轉(zhuǎn)換的字段。在這個(gè)例子中,字段price被轉(zhuǎn)換成長(zhǎng)度為8個(gè)字符的CHAR型字段。
字段price要被轉(zhuǎn)換成字符型,才可以在它后面連接上字符串'US Dollars'。 當(dāng)向BIT型,DATETIME型,INT型,或者NUMERIC型字段添加字符串時(shí),你需要進(jìn)行同樣的轉(zhuǎn)換操作。
例如,下面的語(yǔ)句在一個(gè)SELECT語(yǔ)句的查詢(xún)結(jié)果中加入字符串'The vote is',該SELECT語(yǔ)句返回一個(gè)BIT型字段的值: SELECT 'The vote is'+CONVERT(CHAR (1),vote) FROM opinion 下面是這個(gè)語(yǔ)句的結(jié)果示例: The vote is 1 The vote is 1 The vote is 0 (3 row(s) affected) 如果你不進(jìn)行顯式的轉(zhuǎn)換,你會(huì)收到如下的錯(cuò)誤信息: Implicit conversion from datatype 'varchar' to 'bit' is not allowec。 Use the CONVERT function to run this query。
操作字符串?dāng)?shù)據(jù) SQL Sever有許多函數(shù)和表達(dá)式,使你能對(duì)字符串進(jìn)行有趣的操作,包括各種各樣的模式匹配和字符轉(zhuǎn)換。在這一節(jié)中,你將學(xué)習(xí)如何使用最重要的字符函數(shù)和表達(dá)式。
匹配通配符 假設(shè)你想建立一個(gè)與Yahoo功能相似的Internet目錄。你可以建立一個(gè)表用來(lái)保存一系列的站點(diǎn)名稱(chēng),統(tǒng)一資源定位器(URL),描述,和類(lèi)別,并允許訪(fǎng)問(wèn)者通過(guò)在HTML form中輸入關(guān)鍵字來(lái)檢索這些內(nèi)容。
假如有一個(gè)訪(fǎng)問(wèn)者想從這個(gè)目錄中得到其描述中包含關(guān)鍵字trading card的站點(diǎn)的列表。 要取出正確的站點(diǎn)列表,你也許試圖使用這樣的查詢(xún): SELECT site_name FROM site_directory WHERE site_desc='trading card' 這個(gè)查詢(xún)可以工作。
但是,它只能返回那些其描述中只有trading card這個(gè)字符串的站點(diǎn)。 例如,一個(gè)描述為We have the greatest collection of trading cards in the world!的站點(diǎn)不會(huì)被返回。
要把一個(gè)字符串與另一個(gè)字符串的一部分相匹配,你需要使用通配符。你使用通配符和關(guān)鍵字LIKE來(lái)實(shí)現(xiàn)模式匹配。
下面的語(yǔ)句使用通配符和關(guān)鍵字LIKE重寫(xiě)了上面的查詢(xún),以返回所有正確站點(diǎn)的名字: SELECT SITE_name FROM site_directory WHERE site_desc LIKE '%trading cark%'。
1.1 運(yùn)行SQL程序 1.2 Microsoft Access1.3 Microsoft SQL Server1.3.1 SQL Server 20001.3.2 SQL Server 2005/20081.4 Oracle1.5 IBM DB21.6 MySQL1.7 PostgreSQL 2.1 表、列和行2.1.1 表2.1.2 列2.1.3 行2.2 主鍵2.3 外鍵2.4 聯(lián)系2.4.1 一對(duì)一2.4.2 一對(duì)多2.4.3 多對(duì)多2.5 規(guī)范化2.5.1 第一范式2.5.2 第二范式2.5.3 第三范式2.5.4 其他范式2.6 示例數(shù)據(jù)庫(kù)2.6.1 表authors2.6.2 表publishers2.6.3 表titles2.6.4 表titles_authors2.6.5 表royalties2.7 創(chuàng)建示例數(shù)據(jù)庫(kù) 3.1 SQL語(yǔ)法3.2 SQL標(biāo)準(zhǔn)和一致性3.3 標(biāo)識(shí)符3.4 數(shù)據(jù)類(lèi)型3.5 字符串類(lèi)型3.6 二進(jìn)制大型對(duì)象類(lèi)型3.7 精確數(shù)字類(lèi)型3.8 近似數(shù)字類(lèi)型3.9 布爾類(lèi)型3.10 日期和時(shí)間類(lèi)型3.11 時(shí)間間隔類(lèi)型3.12 唯一標(biāo)識(shí)符3.13 其他數(shù)據(jù)類(lèi)型3.14 空值 4.1 使用SELECT和FROM檢索列4.2 使用AS創(chuàng)建列的別名4.3 使用DISTINCT消除重復(fù)的行4.4 使用ORDER BY排序行4.5 使用WHERE篩選行4.6 使用AND、OR和NOT組合及求反條件4.6.1 AND操作符4.6.2 OR操作符4.6.3 NOT操作符4.6.4 AND、OR和NOT一起使用4.7 使用LIKE匹配模式4.8 使用BETWEEN進(jìn)行范圍篩選4.9 使用IN進(jìn)行列表篩選4.10 使用IS NULL測(cè)試空值 5.1 創(chuàng)建派生列5.2 執(zhí)行算術(shù)運(yùn)算5.3 確定計(jì)算的順序5.4 使用||連接串5.5 使用SUBSTRING()提取子串5.6 使用UPPER()和LOWER()更改串的大小寫(xiě)5.7 使用TRIM()修整字符5.8 使用CHARACTER_LENGTH()得到串長(zhǎng)度5.9 使用POSITION()查找子串5.10 執(zhí)行日期及時(shí)間間隔運(yùn)算5.11 獲得當(dāng)前日期和時(shí)間5.12 獲得用戶(hù)信息5.13 使用CAST()轉(zhuǎn)換數(shù)據(jù)類(lèi)型5.14 使用CASE計(jì)算條件值5.15 使用COALESCE()檢查空值5.16 使用NULLIF()比較表達(dá)式 6.1 使用聚合函數(shù)6.2 創(chuàng)建聚合表達(dá)式6.3 使用MIN()查找最小值6.4 使用MAX()查找最大值6.5 使用SUM()計(jì)算總和6.6 使用AVG()計(jì)算平均值6.7 使用COUNT()統(tǒng)計(jì)行數(shù)6.8 使用DISTINCT聚合不重復(fù)的值6.9 使用GROUP BY分組行6.10 使用HAVING篩選分組 7.1 限定列名7.2 使用AS創(chuàng)建表的別名7.3 使用聯(lián)結(jié)7.4 使用JOIN或WHERE創(chuàng)建聯(lián)結(jié)7.5 使用CROSS JOIN創(chuàng)建交叉聯(lián)結(jié)7.6 使用NATURAL JOIN創(chuàng)建自然聯(lián)結(jié)7.7 使用INNER JOIN創(chuàng)建內(nèi)聯(lián)結(jié)7.8 使用OUTER JOIN創(chuàng)建外聯(lián)結(jié)7.9 創(chuàng)建自聯(lián)結(jié) 8.1 理解子查詢(xún)8.2 子查詢(xún)語(yǔ)法8.3 子查詢(xún)和聯(lián)結(jié)8.4 簡(jiǎn)單子查詢(xún)和相關(guān)子查詢(xún)8.4.1 簡(jiǎn)單子查詢(xún)8.4.2 相關(guān)子查詢(xún)8.5 在子查詢(xún)中限定列名8.6 子查詢(xún)中的空值8.7 使用子查詢(xún)作為列表達(dá)式8.8 使用比較操作符比較子查詢(xún)的值8.9 使用IN測(cè)試集合成員資格8.10 使用ALL比較所有子查詢(xún)的值8.11 使用ANY比較某些子查詢(xún)的值8.12 使用EXISTS檢測(cè)存在性8.13 比較等價(jià)查詢(xún) 9.1 使用UNION合并行9.2 使用INTERSECT查找相同行9.3 使用EXCEPT查找不同行 10.1 顯示表結(jié)構(gòu)10.2 使用INSERT插入行10.3 使用UPDATE更新行10.4 使用DELETE刪除行 11.1 創(chuàng)建表11.2 理解約束11.3 使用CREATE TABLE創(chuàng)建新表11.4 使用NOT NULL禁止空值11.5 使用DEFAULT確定默認(rèn)值11.6 使用PRIMARY KEY指定主鍵11.7 使用FOREIGN KEY指定外鍵11.8 使用UNIQUE確保值唯一11.9 使用CHECK創(chuàng)建檢查約束11.10 使用CREATE TEMPORARY TABLE創(chuàng)建臨時(shí)表11.11 使用CREATE TABLE AS利用已存在表創(chuàng)建新表11.12 使用ALTER TABLE修改表11.13 使用DROP TABLE刪除表 12.1 使用CREATE INDEX創(chuàng)建索引12.2 使用DROP INDEX刪除索引 13.1 使用CREATE VIEW創(chuàng)建視圖13.2 通過(guò)視圖檢索數(shù)據(jù)13.3 通過(guò)視圖修改數(shù)據(jù)13.3.1 通過(guò)視圖插入行13.3.2 通過(guò)視圖更新行13.3.3 通過(guò)視圖刪除行13.4 使用DROP VIEW刪除視圖 15.1 動(dòng)態(tài)統(tǒng)計(jì)15.2 產(chǎn)生序列15.3 發(fā)現(xiàn)等差數(shù)列、遞增數(shù)列和等值數(shù)列15.4 限定返回行的數(shù)量15.4.1 Microsoft Access15.4.2 Microsoft SQL Server15.4.3 Oracle15.4.4 IBM DB215.4.5 MySQL15.4.6 PostgreSQL15.5 分配排名15.6 計(jì)算修整均值15.7 隨機(jī)選取行15.8 處理重復(fù)值15.9 創(chuàng)建電話(huà)列表15.10 檢索元數(shù)據(jù)15.10.1 Microsoft Access15.10.2 Microsoft SQL Server15.10.3 Oracle15.10.4 IBM DB215.10.5 MySQL15.10.6 PostgreSQL15.11 處理日期15.11.1 Microsoft Access15.11.2 Microsoft SQL Server15.11.3 Oracle15.11.4 IBM DB215.11.5 MySQL15.11.6 PostgreSQL15.12 計(jì)算中值15.13 查詢(xún)極值15.14 改變動(dòng)態(tài)統(tǒng)計(jì)的中流15.15 旋轉(zhuǎn)結(jié)果15.16 處理層次結(jié)構(gòu)索引。
SQL全稱(chēng)是「結(jié)構(gòu)化查詢(xún)語(yǔ)言(Structured Query Language)」,是數(shù)據(jù)庫(kù)中使用的標(biāo)準(zhǔn)數(shù)據(jù)查詢(xún)語(yǔ)言,IBM公司最早使用在其開(kāi)發(fā)的數(shù)據(jù)庫(kù)系統(tǒng)中,1986年10月,美國(guó)ANSI對(duì)SQL進(jìn)行規(guī)范后作為關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言(ANSI X3. 135-1986),1987年得到國(guó)際標(biāo)準(zhǔn)化組織的支持成為國(guó)際標(biāo)準(zhǔn)。不過(guò)各種通行的數(shù)據(jù)庫(kù)系統(tǒng)在實(shí)現(xiàn)過(guò)程中都對(duì)SQL規(guī)范作了某些擴(kuò)充,所以實(shí)際上不同的數(shù)據(jù)庫(kù)系統(tǒng)的SQL語(yǔ)言不能完全相互通用。
SQL是高級(jí)的非過(guò)程化編程語(yǔ)言,允許用戶(hù)在高層數(shù)據(jù)結(jié)構(gòu)上工作。他不要求用戶(hù)指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶(hù)了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng)可以使用相同的SQL語(yǔ)言作為數(shù)據(jù)輸入與管理的接口。它以記錄集合作為操縱對(duì)象,所有SQL語(yǔ)句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語(yǔ)句的輸出作為另一條SQL語(yǔ)句的輸入,所以SQL語(yǔ)言可以嵌套,這使他具有極大的靈活性和強(qiáng)大的功能,在多數(shù)情況下,在其他語(yǔ)言中需要一大段程序?qū)崿F(xiàn)的一個(gè)單獨(dú)事件只需要一個(gè)SQL語(yǔ)句就可以達(dá)到目的,這也意味著用SQL語(yǔ)言可以寫(xiě)出非常復(fù)雜的語(yǔ)句。
SQL同時(shí)也是數(shù)據(jù)庫(kù)文件格式的擴(kuò)展名。
SQL語(yǔ)言包含4個(gè)部分:
* 數(shù)據(jù)查詢(xún)語(yǔ)言(SELECT語(yǔ)句)
* 數(shù)據(jù)操縱語(yǔ)言(INSERT, UPDATE, DELETE語(yǔ)句)
* 數(shù)據(jù)定義語(yǔ)言(如CREATE, DROP等語(yǔ)句)
* 數(shù)據(jù)控制語(yǔ)言(如COMMIT, ROLLBACK等語(yǔ)句)
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥(niǎo). 頁(yè)面生成時(shí)間:3.031秒