之一
程序員
SQL是英文Structured Query Language的縮寫,意思爲結構化查詢語言。SQL語言的主要功能就是同各類數據庫創建聯繫,進行溝通。按照ANSI(美國國家標準協會)的規定,SQL被做爲關係型數據庫管理系統的標準語言。SQL語句能夠用來執行各類各樣的操做,例如更新數據庫中的數據,從數據庫中提取數據等。目前,絕大多數流行的關係型數據庫管理系統,如Oracle, Sybase, Microsoft SQL Server, Access等都採用了SQL語言標準。雖然不少數據庫都對SQL語句進行了再開發和擴展,可是包括Select, Insert, Update, Delete, Create,以及Drop在內的標準的SQL命令仍然能夠被用來完成幾乎全部的數據庫操做。下面,咱們就來詳細介紹一下SQL語言的基本知識。數據庫
數據庫表格編程
一個典型的關係型數據庫一般由一個或多個被稱做表格的對象組成。數據庫中的全部數據或信息都被保存在這些數據庫表格中。數據庫中的每個表格都具備本身惟一的表格名稱,都是由行和列組成,其中每一列包括了該列名稱,數據類型,以及列的其它屬性等信息,而行則具體包含某一列的記錄或數據。如下,是一個名爲天氣的數據庫表格的實例。微信
城市 最高氣溫 最低氣溫 app
北京 10 5 ide
上海 15 8 函數
天津 8 2 學習
重慶 20 13 網站
該表格中「城市」, 「最高氣溫」和「最低氣溫」就是三個不一樣的列,而表格中的每一行則包含了具體的表格數據。spa
數據查詢
在衆多的SQL命令中,select語句應該算是使用最頻繁的。Select語句主要被用來對數據庫進行查詢並返回符合用戶查詢標準的結果數據。Select語句的語法格式以下:
select column1 [, column2,etc] from tablename
[where condition];
([]表示可選項)
select語句中位於select關鍵詞以後的列名用來決定那些列將做爲查詢結果返回。用戶能夠按照本身的須要選擇任意列,還可使用通配符「*」來設定返回表格中的全部列。
select語句中位於from關鍵詞以後的表格名稱用來決定將要進行查詢操做的目標表格。
Select語句中的where可選從句用來規定哪些數據值或哪些行將被做爲查詢結果返回或顯示。
在where條件從句中可使用如下一些運算符來設定查詢標準:
=等於
>大於
<小於
>=大於等於
<=小於等於
<>不等於
除了上面所提到的運算符外,LIKE運算符在where條件從句中也很是重要。LIKE運算符的功能很是強大,經過使用LIKE運算符能夠設定只選擇與用戶規定格式相同的記錄。此外,咱們還可使用通配符「%」用來代替任何字符串。舉例以下:
select firstname, lastname, city
from employee
where firstname LIKE ‘E%’;
(注意,字符串必須被包含在單括號內)
上述SQL語句將會查詢全部名稱以E開頭的姓名。或者,經過以下語句:
select * from employee
where firstname = ‘May’;
查詢全部名稱爲May的行。
之二
建立表格
SQL語言中的create table語句被用來創建新的數據庫表格。Create table語句的使用格式以下:
create table tablename
(column1 data type,
column2 data type,
column3 data type);
若是用戶但願在創建新表格時規定列的限制條件,可使用可選的條件選項:
create table tablename
(column1 data type [constraint],
column2 data type [constraint],
column3 data type [constraint]);
舉例以下:
create table employee
(firstname varchar(15),
lastname varchar(20),
age number(3),
address varchar(30),
city varchar(20));
簡單來講,建立新表格時,在關鍵詞create table後面加入所要創建的表格的名稱,而後在括號內順次設定各列的名稱,數據類型,以及可選的限制條件等。注意,全部的SQL語句在結尾處都要使用「;」符號。
使用SQL語句建立的數據庫表格和表格中列的名稱必須以字母開頭,後面可使用字母,數字或下劃線,名稱的長度不能超過30個字符。注意,用戶在選擇表格名稱時不要使用SQL語言中的保留關鍵詞,如select, create, insert等,做爲表格或列的名稱。
數據類型用來設定某一個具體列中數據的類型。例如,在姓名列中只能採用varchar或char的數據類型,而不能使用number的數據類型。
SQL語言中較爲經常使用的數據類型爲:
char(size):固定長度字符串,其中括號中的size用來設定字符串的最大長度。Char類型的最大長度爲255字節。
varchar(size):可變長度字符串,最大長度由size設定。
number(size):數字類型,其中數字的最大位數由size設定。
Date:日期類型。
number(size,d):數字類型,size決定該數字總的最大位數,而d則用於設定該數字在小數點後的位數。
最後,在建立新表格時須要注意的一點就是表格中列的限制條件。所謂限制條件就是當向特定列輸入數據時所必須遵照的規則。例如,unique這一限制條件要求某一列中不能存在兩個值相同的記錄,全部記錄的值都必須是惟一的。除unique以外,較爲經常使用的列的限制條件還包括not null和primary key等。Not null用來規定表格中某一列的值不能爲空。Primary key則爲表格中的全部記錄規定了惟一的標識符。
向表格中插入數據
SQL語言使用insert語句向數據庫表格中插入或添加新的數據行。Insert語句的使用格式以下:
insert into tablename
(first_column,...last_column)
values (first_value,...last_value);
例如:
insert into employee
(firstname, lastname, age, address, city)
values (‘Li’, ‘Ming’, 45, ‘No.77 Changan Road’, ‘Beijing」);
簡單來講,當向數據庫表格中添加新記錄時,在關鍵詞insert into後面輸入所要添加的表格名稱,而後在括號中列出將要添加新值的列的名稱。最後,在關鍵詞values的後面按照前面輸入的列的順序對應的輸入全部要添加的記錄值。
更新記錄
SQL語言使用update語句更新或修改知足規定條件的現有記錄。Update語句的格式爲:
update tablename
set columnname = newvalue [, nextcolumn = newvalue2...]
where columnname OPERATOR value [and|or column OPERATOR value];
例如:
update employee
set age = age+1
where first_name= ‘Mary’and last_name= ‘Williams’;
使用update語句時,關鍵一點就是要設定好用於進行判斷的where條件從句。
刪除記錄
SQL語言使用delete語句刪除數據庫表格中的行或記錄。Delete語句的格式爲:
delete from tablename
where columnname OPERATOR value [and|or column OPERATOR value];
例如:
delete from employee
where lastname = May;
簡單來講,當須要刪除某一行或某個記錄時,在delete from關鍵詞以後輸入表格名稱,而後在where從句中設定刪除記錄的判斷條件。注意,若是用戶在使用delete語句時不設定where從句,則表格中的全部記錄將所有被刪除。
刪除數據庫表格
在SQL語言中使用drop table命令刪除某個表格以及該表格中的全部記錄。Drop table命令的使用格式爲:
drop table tablename;
例如:
drop table employee;
若是用戶但願將某個數據庫表格徹底刪除,只須要在drop table命令後輸入但願刪除的表格名稱便可。Drop table命令的做用與刪除表格中的全部記錄不一樣。刪除表格中的所有記錄以後,該表格仍然存在,並且表格中列的信息不會改變。而使用drop table命令則會將整個數據庫表格的全部信息所有刪除。
以上,咱們對SQL語言主要的命令和語句進行了較爲詳細的介紹。應該說SQL語句的語法結構和風格仍是至關簡單和直觀的,只要用戶結合實踐多加練習,必定會在短時間內迅速掌握。
之三
咱們平常使用SQL語言的工做過程當中,使用最多的仍是從已經創建好的數據庫中查詢信息。下面,咱們就來詳細介紹一下如何使用SQL語言實現各類數據庫查詢操做。
SELECT…FROM
爲方便講解,咱們在數據庫中建立名爲Store_Information的以下數據表。
Store_Information
Store_Name
Sales
Date
Los Angeles
$1500
Jan-10-2000
San Diego
$250
Jan-11-2000
Los Angeles
$300
Jan-12-2000
Boston
$700
Jan-12-2000
SQL語言中用於數據庫查詢的最簡單的命令就是SELECT…FROM,語法格式爲:
SELECT "column_name" FROM "table_name"
例如,若是咱們但願查詢Store_Information數據表中全部的商店名稱時,可使用以下命令:
SELECT store_name FROM Store_Information
查詢結果顯示爲:
Store_Name
Los Angeles
San Diego
Los Angeles
Boston
若是用戶但願一次查詢多個字段,能夠將所要查詢的字段名稱依次加入SELECT關鍵字以後,中間用「,」隔開便可。
DISTINCT
SELECT關鍵字支持用戶查詢數據表中指定字段的全部數據,可是這樣有時就會不可避免的出現重複信息。若是用戶但願只查詢那些具備不一樣記錄值的信息的話,可使用SQL語言的DISTINCT關鍵字。語法格式以下:
SELECT DISTINCT "column_name"
FROM "table_name"
例如,咱們可使用如下命令查詢Store_Information數據表具備不一樣記錄值的全部記錄。
SELECT DISTINCT Store_Name FROM Store_Information
查詢結果以下:
Store_Name
Los Angeles
San Diego
Boston
WHERE
除了選擇具備不一樣記錄值的記錄以外,有時咱們可能還會須要根據某些條件對數據庫中的數據進行查詢。例如,咱們可能須要查詢Store_Information數據表中銷售額超過1000美元的商店。爲此,咱們可使用SQL語言的WHERE關鍵字設定查詢條件。語法格式以下:
SELECT "column_name"
FROM "table_name"
WHERE "condition"
由此,咱們可使用以下命令查詢銷售額超過1000美元的商店信息:
SELECT store_name FROM Store_Information WHERE Sales > 1000
查詢結果顯示爲:
store_name
Los Angeles
運算函數
如今,咱們已經瞭解到在使用SQL語言進行數據庫查詢操做時能夠經過對數值的判斷設定靈活的查詢條件。爲了加強對運算的支持能力,SQL提供了衆多實用的運算函數供廣大用戶使用。例如,咱們能夠直接在SQL命令中調用SUM或AVG這兩個分別用於計算總數和平均數的函數。語法格式以下:
SELECT "function type"("column_name")
FROM "table_name"
若是咱們但願查詢Store_Information數據表中全部商店的總銷售額的話,可使用以下命令:
SELECT SUM(Sales) FROM Store_Information
查詢結果顯示爲:
SUM(Sales)
$2750
COUNT
除了SUM和AVG函數以外,COUNT函數是SQL語言中另外一個較爲經常使用的運算函數。COUNT函數能夠用來計算數據表中指定字段所包含的記錄數目。語法格式爲:
SELECT COUNT("column_name")
FROM "table_name"
例如,若是咱們但願查詢Store_Information數據表中的有關商店的記錄條數時,可使用以下命令:
SELECT COUNT(store_name)
FROM Store_Information
查詢結果顯示爲:
Count(store_name)
4
COUNT函數能夠和DISTINCT關鍵字一塊兒使用從而能夠查詢數據表中指定字段中全部具備不一樣記錄值的記錄數目。例如,若是咱們但願查詢Store_Information數據表中不一樣商店的數目時,可使用以下命令:
SELECT COUNT(DISTINCT store_name)
FROM Store_Information
查詢結果顯示爲:
Count(DISTINCT store_name)
3
GROUP BY
下面咱們來進一步看一下SQL語言中的集合函數。上文中,咱們曾使用SUM函數計算全部商店的銷售總額,若是咱們但願計算每一家商店各自的總銷售額時該怎麼辦呢?要實現這一目的咱們須要作兩件事:首先,咱們須要查詢商店名稱和銷售額兩個字段;而後,咱們使用SQL語言的GROUP BY命令將銷售額按照不一樣的商店進行分組,從而計算出不一樣商店的銷售總額。GROUP BY命令的語法格式爲:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
咱們可使用以下命令實現上述查詢目的:
SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name
查詢結果顯示爲:
store_name SUM(Sales)
Los Angeles $1800
San Diego $250
Boston $700
小注:
GROUP BY關鍵字通常應用於同時查詢多個字段並對字段進行算術運算的SQL命令中。
HAVING
用戶在使用SQL語言的過程當中可能但願解決的另外一個問題就是對由sum或其它集合函數運算結果的輸出進行限制。例如,咱們可能只但願看到Store_Information數據表中銷售總額超過1500美元的商店的信息,這時咱們就須要使用HAVING從句。語法格式爲:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
HAVING (arithematic function condition)
(GROUP BY從句可選)
由此,咱們可使用以下命令實現上述查詢目的:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
查詢結果顯示爲:
store_name SUM(Sales)
Los Angeles $1800
小注:
SQL語言中設定集合函數的查詢條件時使用HAVING從句而不是WHERE從句。一般狀況下,HAVING從句被放置在SQL命令的結尾處。
ALIAS
下面,咱們重點介紹一下如何在SQL命令中設定別名。SQL語言中通常使用兩種類型的別名,分別爲字段別名和數據表別名。
簡單的說,使用字段別名能夠幫助咱們有效的組織查詢的輸出結果。例如,上文所列舉的多個實例中,當咱們計算商店銷售總額時,顯示結果中就會出現SUM(sales)。雖然SUM(sales)並不會對咱們理解查詢結果帶來不便,可是若是咱們須要在查詢中使用多項複雜運算時,顯示結果就不會這麼直觀了。若是這時咱們使用字段別名就會極大的提升查詢結果的可讀性。
對於數據表別名,咱們能夠經過將別名直接放置在FROM從句中數據表名稱的後面設定。數據表別名在咱們下面將要講述的鏈接多個數據表進行查詢的操做中極爲有用。
字段和數據表別名的語法格式以下:
SELECT "table_alias"."column_name1" "column_alias"
FROM "table_name" "table_alias"
即別名都直接放置在各自對應名稱的後面,中間用空格分開。
以Store_Information數據表爲例,咱們能夠在GROUP BY一節中所使用的SQL命令中設置以下字段和數據表別名:
SELECT A1.store_name Store, SUM(Sales) "Total Sales"
FROM Store_Information A1
GROUP BY A1.store_name
查詢結果顯示爲:
Store Total Sales
Los Angeles $1800
San Diego $250
Boston $700
鏈接多個數據表
最後,咱們來看一下若是使用SQL語言鏈接多個數據表,實現對多個數據表的查詢。爲方便講解,咱們在數據庫中分別建立了兩個名爲Store_Information和Region的數據表。
Store_Information
Store_Name
Sales
Date
Los Angeles
$1500
Jan-10-2000
San Diego
$250
Jan-11-2000
Los Angeles
$300
Jan-12-2000
Boston
$700
Jan-12-2000
Region
Region_Name
Store_Name
East
Boston
East
New York
West
Los Angeles
West
San Diego
下面,咱們就來看一下經過數據表的鏈接實現按不一樣區域查詢銷售額。
咱們注意到在名爲Region的數據表中包含區域和商店兩個字段信息,而在名爲Store_Information的數據表中則包含每一家商店的銷售信息。所以,爲了獲得按區域劃分的銷售信息,咱們須要將兩個不一樣數據表的信息結合在一塊兒進行查詢。經過對上述兩個數據表的分析,咱們發現每一個數據表中都包含一個名爲Store_Name的字段,所以,咱們可使用以下命令實現查詢目的:
SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
查詢結果顯示爲:
REGION SALES
East $700
West $2050
說明:
上述查詢命令的前兩行用於指定所要查詢的目標字段,分別爲Region數據表中的Region_Name字段和Store_Information數據表中Sales字段的記錄值總數。這裏,咱們設定兩個字段的別名分別爲REGION和SALES,兩個數據表的別名分別爲A1和A2。若是咱們只使用字段別名而不設定數據表別名的話,上述SQL命令的第一行就變成 以下形式:
SELECT Region.Region_Name REGION, SUM(Store_Information.Sales) SALES
由此咱們能夠看出有效的使用數據表別名,能夠極大的簡化對多個數據表進行操做的SQL命令。
上述查詢命令的第3行爲WHERE從句,正是該從句設定了兩個數據表的鏈接條件。由於咱們但願確保Region數據表中的Store_Name字段可以與Store_Information數據表中的同名字段相對應,因此咱們規定兩個字段的記錄值應當相等。在鏈接多個數據表時,必定要準確設定數據表的鏈接條件,若是WHERE從句設定不正確,則可能致使查詢結果中出現衆多不相關的數據
掃碼關注
(公衆號)
(微信)
免責聲明
【寫做說明】以上內容分享給喜歡編程,有夢想的程序員,但願能幫助到大家。以上文章屬於此公衆號原創全部,如需轉載請註明出處。
【免責申明】本公衆平臺不是廣告商,也沒有爲其餘三方網站或者我的作廣告宣傳。此分享的源代碼和文章是小編在項目中、學習中整理的一些認爲不錯的項目。用戶產生的一些自願下載或者付費行爲。與平臺沒有直接關係
【投稿郵箱】315997972@qq.com
歡迎投稿分享你的優質源碼或文章