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