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