時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
SQL(結(jié)構(gòu)化查詢語言)就是負(fù)責(zé)與ANSI維護(hù)的數(shù)據(jù)庫交互的標(biāo)準(zhǔn)。最新的版本是SQL-99,還有一個新標(biāo)準(zhǔn)SQL-200n尚處于制定過程中。大多數(shù)的數(shù)據(jù)庫都至少遵守ANSI-92標(biāo)準(zhǔn)的部分子集。不過,目前對最新標(biāo)準(zhǔn)的有效性還存在一些爭論。專有數(shù)據(jù)庫制造商根據(jù)這些標(biāo)準(zhǔn)開發(fā)自己的產(chǎn)品,同時制定出自己特有的數(shù)據(jù)庫存儲操作新概念。幾乎各種不同的數(shù)據(jù)庫都包含了自己特有的語法集合,只是通常很類似ANSI標(biāo)準(zhǔn)。在大多數(shù)情況下,盡管有一些數(shù)據(jù)庫實(shí)例基于特定的擴(kuò)展語法會因數(shù)據(jù)庫的不同而產(chǎn)生不同的結(jié)果,但總的說來,這些新加的語法不過是對原有標(biāo)準(zhǔn)的擴(kuò)充。如果數(shù)據(jù)庫操作并沒有得到你希望的結(jié)果,那么你不妨事先讀一讀數(shù)據(jù)庫制造商提供的產(chǎn)品說明。
假如到目前為止你頭回遭遇SQL語言,那么你怎么也得先理解一些基本的SQL概念。我盡量把這些基本知識闡述得簡明扼要,如果你對那些數(shù)據(jù)庫術(shù)語還能忍受,你盡可跳到下一節(jié),此外你還可以把自己的問題提交給以下的討論區(qū)。
籠統(tǒng)地說,"SQL數(shù)據(jù)庫"其實(shí)就是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDMS)通俗的叫法。對某些系統(tǒng)來說,"數(shù)據(jù)庫"也指一組數(shù)據(jù)表、數(shù)據(jù)以及相互區(qū)分但結(jié)構(gòu)類似的配置信息。在這種情況下,每一SQL數(shù)據(jù)庫的安裝都可能由若干數(shù)據(jù)庫組成。在有些系統(tǒng)上,這種數(shù)據(jù)庫則指的是表空間。
數(shù)據(jù)表是一種包含多行數(shù)據(jù)的數(shù)據(jù)庫構(gòu)造,這種數(shù)據(jù)庫構(gòu)造由命名的列組成。通常數(shù)據(jù)表構(gòu)造為包含關(guān)系信息,同一數(shù)據(jù)庫或表空間以內(nèi)可以創(chuàng)建若干數(shù)據(jù)表。
表內(nèi)的列保存某一種類型的數(shù)據(jù)而且應(yīng)根據(jù)其保存數(shù)據(jù)的內(nèi)容得以命名。例如,被稱為"LastName"的列就應(yīng)該在每一行包含姓氏條目。正是這一前提的存在才能讓關(guān)系數(shù)據(jù)庫查詢返回一致的結(jié)果。
字段(field)指的是某一行某一列對應(yīng)的數(shù)據(jù)(或保存數(shù)據(jù)的地方)。另外,數(shù)據(jù)集合(data set)則指的是多行多列的數(shù)據(jù),而且數(shù)據(jù)集合通常說明你的數(shù)據(jù)庫或數(shù)據(jù)表內(nèi)的全部數(shù)據(jù)。結(jié)果集合(result set)就是從數(shù)據(jù)庫查詢返回的數(shù)據(jù);它能夠描述從單一字段到數(shù)據(jù)庫內(nèi)全部數(shù)據(jù)這一范圍內(nèi)的全部信息。
數(shù)據(jù)庫查詢就是發(fā)送給數(shù)據(jù)庫的SQL指令,這些指令向數(shù)據(jù)庫請求某種施加在數(shù)據(jù)集合或數(shù)據(jù)庫上的功能。
現(xiàn)在我們就來看看基本的數(shù)據(jù)庫查詢,這些查詢主要涉及到對數(shù)據(jù)庫內(nèi)數(shù)據(jù)的操作。在本文中,所有的例子都采用了標(biāo)準(zhǔn)SQL語言,而且這些基本功能可以轉(zhuǎn)換為應(yīng)用在幾乎各種環(huán)境下。
數(shù)據(jù)查詢類型
SQL語言中的數(shù)據(jù)查詢分為4種基本類型:
SELECT:這條語句要求數(shù)據(jù)庫返回指定結(jié)果的數(shù)據(jù)集合;你可以用這一語句檢索數(shù)據(jù)庫中保存的信息。
INSERT:這條語句用來給數(shù)據(jù)表增加新一行數(shù)據(jù)。
DELETE:該語句從你的數(shù)據(jù)庫中刪除若干行數(shù)據(jù)。
UPDATE:該語句修改數(shù)據(jù)庫內(nèi)的現(xiàn)有數(shù)據(jù)。
以上的這些語句都有各種各樣的限定詞和函數(shù)供你用來定義有關(guān)的數(shù)據(jù)集合,同時控制查詢返回的結(jié)果集合。SELECT語句的選項(xiàng)最多。有許多種組合SELECT的查詢選項(xiàng),例如JOIN和UNION等。不過就我們目前來說,本文主要還是關(guān)注基本用途。
用SELECT語句檢索保存的信息
為了獲得數(shù)據(jù)庫中保存的信息就必須采用SELECT語句。其基本功能限制在針對單一數(shù)據(jù)表操作,當(dāng)然,其他范圍的構(gòu)造也是有的。為了返回特定列所對應(yīng)的所有數(shù)據(jù)行,你可以使用以下語句:
SELECT column1, column2 FROM table_name;
?
另外,使用通配符"*"可以從表中選出所有的列:SELECT * FROM table_name;
你要愿意自己編碼分析以上返回的結(jié)果當(dāng)然也沒問題,不過你完全可以采用方便的WHERE子句限制返回的結(jié)果集合,該子句可以讓你為選擇數(shù)據(jù)定義某些條件。以下查詢就會返回"column1"數(shù)值等于3的所以數(shù)據(jù)行:SELECT * FROM table_name WHERE column1 = 3;
除了"="(等于)條件之外你還可以用到下列條件運(yùn)算符:
= 等于
<> 不等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
SQL 條件語句
另外,你還可以聯(lián)合WHERE語句使用BETWEEN、LIKE等比較運(yùn)算符以及AND和OR這類邏輯運(yùn)算符。注意,OR語句是包含性的的。以下有一個例子組合了以上這些概念:
SELECT * FROM table_name WHERE ((Age < 18) AND (LastName BETWEEN ‘Anderson’ AND ‘Miller’)) OR Company LIKE ‘%School%’;
用自然語言來說,這條選擇語句的含義是這樣的:從數(shù)據(jù)表中選出年齡小于18歲而且姓氏在"Anderson"和"MIller"之間的或者其公司名稱類中有"School"字樣的數(shù)據(jù)行。
用INSERT語句加入新數(shù)據(jù)
使用INSERT語句可以創(chuàng)建新的數(shù)據(jù)行。如果你希望在某一行的某個字段中賦值則要用到UPDATE語句。
插入語句的語法如下:
INSERT INTO table_name (column1, column2, column3)
VALUES (‘data1’, ‘data2’, ‘data3’);
?
如果你想按照表內(nèi)現(xiàn)有列的同一順序插入所有的值,那么你不必指定列名,當(dāng)然,從可讀性考慮最好不要這樣做。另外,如果你列出列名則不必要按照它們在數(shù)據(jù)庫中出現(xiàn)的順序包括它們,只要你列出的值與它們一一對應(yīng)即可。有些列你并沒有為其輸入新的信息所以你自然沒有必要列出它們來。
一旦數(shù)據(jù)庫中有了數(shù)據(jù)要修改起來也與此很相似。
UPDATE語句和WHERE子句
UPDATE用來修改現(xiàn)有的值或行里的空字段,因此它必須在匹配現(xiàn)有的數(shù)據(jù)集合同時提供可接受的值。除非你真地想要修改所有數(shù)據(jù)行上的值,否則你必須使用WHERE子句。
UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 = ‘data3’;
你可以采用WHERE子句隨意匹配任何一列,正在修改的一列都可以。這樣會有助于你把某一特定的值修改為另一個值:
UPDATE table_name SET FirstName = ‘Shelley’
WHERE FirstName = ‘Shelly’ AND LastName = ‘Doll’;
小心DELETE語句
DELETE語句會從數(shù)據(jù)庫的數(shù)據(jù)表中刪除整行。如果你僅僅想刪除單一的字段則應(yīng)該使用UPDATE語句把它修改為代表應(yīng)用程序中的NULL的其他空值。一定要小心使用帶WHERE子句的DELETE語句,否則你可能會遭遇清空全部數(shù)據(jù)表的風(fēng)險。
DELETE FROM table_name WHERE column1 = ‘data1’;
一旦你數(shù)據(jù)庫中刪除某一行數(shù)據(jù)就不可再后悔了,因此一般來說,最好在數(shù)據(jù)表中包括一名為"IsActive"的列或類似的指示信息,這樣你就可以把該列數(shù)據(jù)設(shè)置為零表示數(shù)據(jù)禁用。只有在你確信不再需要受到影響的信息之后你才可以用DELETE語句。
總結(jié)
SQL就是數(shù)據(jù)庫的語言,我們已經(jīng)了解了數(shù)據(jù)查詢中所采用的最基本命令語句。但還有很多基本概念尚未涉及,例如SUN和COUNT函數(shù)等,但以上列出的這些命令應(yīng)該足夠你開始著手?jǐn)?shù)據(jù)庫操作了。
關(guān)鍵詞標(biāo)簽:SQLServer數(shù)據(jù)查詢
相關(guān)閱讀
熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法