跟我學SQL 一 資料查詢

2021-04-17 07:01:50 字數 3707 閱讀 6296

且不說你是否正在從事程式設計方面的工作或者不打算學習

sql,可事實上幾乎每一位開發者最終都會遭遇它。你多半還用不著負責建立和維持某個資料庫,但你怎麼著也該知道以下的一些有關的

sql知識。 

我為那些感興趣的開發者或者能從資料庫操作中得益的讀者撰寫了這篇關於基本

sql語法的概述性文章。本文主要討論基本的資料操作查詢,後續的文章還會繼續討論如何修改資料庫自身以及更高階的查詢概念。

sql資料庫是怎麼回事?

sql(結構化查詢語言)就是負責與ansi維護的資料庫互動的標準。最新的版本是

sql-99,還有乙個新標準

sql-200n尚處於制定過程中。大多數的資料庫都至少遵守ansi-92標準的部分子集。不過,目前對最新標準的有效性還存在一些爭論。專有資料庫製造商根據這些標準開發自己的產品,同時制定出自己特有的資料庫儲存操作新概念。幾乎各種不同的資料庫都包含了自己特有的語法集合,只是通常很類似ansi標準。在大多數情況下,儘管有一些資料庫例項基於特定的擴充套件語法會因資料庫的不同而產生不同的結果,但總的說來,這些新加的語法不過是對原有標準的擴充。如果資料庫操作並沒有得到你希望的結果,那麼你不妨事先讀一讀資料庫製造商提供的產品說明。

假如到目前為止你頭回遭遇

sql語言,那麼你怎麼也得先理解一些基本的

sql概念。我盡量把這些基本知識闡述得簡明扼要,如果你對那些資料庫術語還能忍受,你盡可跳到下一節,此外你還可以把自己的問題提交給以下的討論區。

籠統地說,「

sql資料庫」其實就是關係型資料庫管理系統(rdms)通俗的叫法。對某些系統來說,「資料庫」也指一組資料表、資料以及相互區分但結構類似的配置資訊。在這種情況下,每一

sql資料庫的安裝都可能由若干資料庫組成。在有些系統上,這種資料庫則指的是表空間。

資料表是一種包含多行資料的資料庫構造,這種資料庫構造由命名的列組成。通常資料表構造為包含關係資訊,同一資料庫或表空間以內可以建立若干資料表。

表內的列儲存某一種型別的資料而且應根據其儲存資料的內容得以命名。例如,被稱為「lastname」的列就應該在每一行包含姓氏條目。正是這一前提的存在才能讓關聯式資料庫查詢返回一致的結果。

字段(field)指的是某一行某一列對應的資料(或儲存資料的地方)。另外,資料集合(data set)則指的是多行多列的資料,而且資料集合通常說明你的資料庫或資料表內的全部資料。結果集合(result set)就是從資料庫查詢返回的資料;它能夠描述從單一欄位到資料庫內全部資料這一範圍內的全部資訊。

資料庫查詢就是傳送給資料庫的

sql指令,這些指令向資料庫請求某種施加在資料集合或資料庫上的功能。

現在我們就來看看基本的資料庫查詢,這些查詢主要涉及到對資料庫內資料的操作。在本文中,所有的例子都採用了標準

sql語言,而且這些基本功能可以轉換為應用在幾乎各種環境下。

資料查詢型別

sql語言中的

資料查詢分為4種基本型別:

select:這條語句要求資料庫返回指定結果的資料集合;你可以用這一語句檢索資料庫中儲存的資訊。 

insert:這條語句用來給資料表增加新一行資料。 

delete:該語句從你的資料庫中刪除若干行資料。 

update:該語句修改資料庫內的現有資料。 

以上的這些語句都有各種各樣的限定詞和函式供你用來定義有關的資料集合,同時控制查詢返回的結果集合。select語句的選項最多。有許多種組合select的查詢選項,例如join和union等。不過就我們目前來說,本文主要還是關注基本用途。

用select語句檢索儲存的資訊

為了獲得資料庫中儲存的資訊就必須採用select語句。其基本功能限制在針對單一資料表操作,當然,其他範圍的構造也是有的。為了返回特定列所對應的所有資料行,你可以使用以下語句:

select column1, column2 from table_name;

另外,使用萬用字元「*」可以從表中選出所有的列:

select * from table_name;

你要願意自己編碼分析以上返回的結果當然也沒問題,不過你完全可以採用方便的where子句限制返回的結果集合,該子句可以讓你為選擇資料定義某些條件。以下查詢就會返回「column1」數值等於3的所以資料行:

select * from table_name where column1 = 3;

除了「=」(等於)條件之外你還可以用到下列條件運算子:

表a= 等於

<> 不等於

> 大於

< 小於

>= 大於或等於

<= 小於或等於

sql 條件語句

另外,你還可以聯合where語句使用between、like等比較運算子以及and和or這類邏輯運算子。注意,or語句是包含性的的。以下有乙個例子組合了以上這些概念:

select * from table_name where ((age < 18) and (lastname between 『anderson』 and 『miller』)) or company like 『%school%』;

用自然語言來說,這條選擇語句的含義是這樣的:從資料表中選出年齡小於18歲而且姓氏在「anderson」和「miller」之間的或者其公司名稱類中有「school」字樣的資料行。

用insert語句加入新資料

使用insert語句可以建立新的資料行。如果你希望在某一行的某個欄位中賦值則要用到update語句。

插入語句的語法如下:

insert into table_name (column1, column2, column3)

values (『data1』, 『data2』, 『data3』);

如果你想按照表內現有列的同一順序插入所有的值,那麼你不必指定列名,當然,從可讀性考慮最好不要這樣做。另外,如果你列出列名則不必要按照它們在資料庫中出現的順序包括它們,只要你列出的值與它們一一對應即可。有些列你並沒有為其輸入新的資訊所以你自然沒有必要列出它們來。

一旦資料庫中有了資料要修改起來也與此很相似。

update語句和where子句

update用來修改現有的值或行裡的空欄位,因此它必須在匹配現有的資料集合同時提供可接受的值。除非你真地想要修改所有資料行上的值,否則你必須使用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語句會從資料庫的資料表中刪除整行。如果你僅僅想刪除單一的字段則應該使用update語句把它修改為代表應用程式中的null的其他空值。一定要小心使用帶where子句的delete語句,否則你可能會遭遇清空全部資料表的風險。

delete from table_name where column1 = 『data1』;

一旦你資料庫中刪除某一行資料就不可再後悔了,因此一般來說,最好在資料表中包括一名為「isactive」的列或類似的指示資訊,這樣你就可以把該列資料設定為零表示資料禁用。只有在你確信不再需要受到影響的資訊之後你才可以用delete語句。

小結sql就是資料庫的語言,我們已經了解了

資料查詢中所採用的最基本命令語句。但還有很多基本概念尚未涉及,例如sun和count函式等,但以上列出的這些命令應該足夠你開始著手資料庫操作了。

跟我學XSL 一

個人簡歷表示,方式有如下兩種 1 html表示 resume.html 姓名禹希初性別男生日1977.5 技能資料庫設計與維護 web開發 2 xml表示 resume.xml color red color 禹希初男 1977.5 資料庫設計與維護 web開發 樣式單用css resume.css...

跟我學Flask 一 知識鋪墊

本文為pythonweb之flask系列第一篇,主要為後續課程打好鋪墊 1.使用者在瀏覽器輸入url後,瀏覽器會訪問dns網域名稱解析伺服器,解析ip位址,埠號 2.客戶端與伺服器三次握手建立連線 3.客戶端向伺服器傳送請求報文,常用的請求方法有get,post,put,delete get獲取資源...

跟我學SQL 七 從子表裡刪除資料

在這篇文章裡我要描述一下如何從 裡刪除列,要刪除的這些列同時還要依賴於其他 的標準。要解決這個問題就需要乙個很聰明而且完全遵守sql92子查詢宣告的應用程式。我必須提醒讀者的是,儘管查詢可能會遵守sql的標準,但是眾多的資料庫生產商會以不同的句法支援實現sql。以下這個解決方案應該適合於大多數資料庫...