『壹』 求sql語法
SQL語言快速入門(一)
SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。
SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL語句可以用來執行各種各樣的操作,例如更新資料庫中的數據,從資料庫中提取數據等。目前,絕大多數流行的關系型資料庫管理系統,如Oracle, Sybase, Microsoft SQL Server, Access等都採用了SQL語言標准。雖然很多資料庫都對SQL語句進行了再開發和擴展,但是包括Select, Insert, Update, Delete, Create, 及Drop在內的標準的SQL命令仍然可以被用來完成幾乎所有的資料庫操作。下面,我們就來詳細介紹一下SQL語言的基本知識。
資料庫表格
一個典型的關系型資料庫通常由一個或多個被稱作表格的對象組成。資料庫
中的所有數據或信息都被保存在這些資料庫表格中。資料庫中的每一個表格都具有
自己唯一的表格名稱,都是由行和列組成,其中每一列包括了該列名稱,數據類型
,以及列的其它屬性等信息,而行則具體包含某一列的記錄或數據。以下,是一個
名為天氣的資料庫表格的實例。
城市 最高氣溫 最低氣溫
北京 10 5
上海 15 8
天津 8 2
重慶 20 13
該表格中「城市」,「最高氣溫」和「最低氣溫」就是三個不同的列
,而表格中的每一行則包含了具體的表格數據。
數據查詢
在眾多的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語言快速入門(二)
創建表格
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等,作為表格或
列的名稱。
數據類型用來設定某一個具體列中數據的類型。例如,在姓名列中只能采
用的數據類型,而不能使用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語言的工作過程中,使用最多的還是從已經建立好的資料庫中查詢信息。下面,我們就來詳細介紹一下如何使用SQL語言實現各種資料庫查詢操作。
SELECT…FROM
為方便講解,我們在資料庫中創建名為Store_Information的如下數據表。
Store_Information
Store_Name Sales Date
Los Angeles 00 Jan-10-2000
San Diego 0 Jan-11-2000
Los Angeles 0 Jan-12-2000
Boston 0 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)
50
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 00
San Diego 0
Boston 0
小註:
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 00
小註:
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 00
San Diego 0
Boston 0
連接多個數據表
最後,我們來看一下如果使用SQL語言連接多個數據表,實現對多個數據
表的查詢。為方便講解,我們在資料庫中分別創建了兩個名為Store_Information
和Region的數據表。
Store_Information
Store_Name Sales Date
Los Angeles 00 Jan-10-2000
San Diego 0 Jan-11-2000
Los Angeles 0 Jan-12-2000
Boston 0 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 Region A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
查詢結果顯示為:
REGION SALES
East 0
West 50
說明:
上述查詢命令的前兩行用於指定所要查詢的目標欄位,分別為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從句設定不正確,則可能導致查詢結果中出現眾多不相關的數據 .
『貳』 Accsess的SQL語句不能實現是
a
SQL無改名語句,MS SQL有 rename 子句
Access須使用ADOX catalog對象
『叄』 sql語句中不可能出現where子句的是
很多了。where只有對表數據操作才會出現。對庫操作或者表結構操作,甚至對索引操作都不可能出現where
『肆』 如何用Sql語句循環執行語句
SQL語句無法實現循環,只能通過程序或者存儲過程來實現。
如果只是一次性工作,則建議直接用EXCEL的公式手批量生成SQL語句 然後一次性貼到MYSQL的命令行工具中執行即可。
S1 : 創建一個模板表 create table t (id int, col1 int , col2 varchar(10));
S2 : EXCEL中在A1輸入 ="create table t"&ROW()&" like t;"
S3: 下拉填充這個A1至A1000
create table t1 like t;
create table t2 like t;
create table t3 like t;
create table t4 like t;
create table t5 like t;
create table t6 like t;
create table t7 like t;
create table t8 like t;
create table t9 like t;
create table t10 like t;
S4: 復制到MYSQL命令行工具一次行執行。
『伍』 SQL語言的問題
SQL語言快速入門之一
SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL語句可以用來執行各種各樣的操作,例如更新資料庫中的數據,從資料庫中提取數據等。目前,絕大多數流行的關系型資料庫管理系統,如Oracle, Sybase, Microsoft SQL Server, ACCESS等都採用了SQL語言標准。雖然很多資料庫都對SQL語句進行了再開發和擴展,但是包括Select, Insert, Update, Delete, Create, 以及Drop在內的標準的SQL命令仍然可以被用來完成幾乎所有的資料庫操作。下面,我們就來詳細介紹一下SQL語言的基本知識。
資料庫表格
一個典型的關系型資料庫通常由一個或多個被稱作表格的對象組成。資料庫中的所有數據或信息都被保存在這些資料庫表格中。資料庫中的每一個表格都具有自己唯一的表格名稱,都是由行和列組成,其中每一列包括了該列名稱,數據類型,以及列的其它屬性等信息,而行則具體包含某一列的記錄或數據。以下,是一個名為天氣的資料庫表格的實例。
城市 最高氣溫 最低氣溫
北京 10 5
上海 15 8
天津 8 2
重慶 20 13
該表格中「城市」, 「最高氣溫」和「最低氣溫」就是三個不同的列,而表格中的每一行則包含了具體的表格數據。
數據查詢
在眾多的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語言快速入門之二
創建表格
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語言的工作過程中,使用最多的還是從已經建立好的資料庫中查詢信息。下面,我們就來詳細介紹一下如何使用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命令的結尾處。下面,我們重點介紹一下如何在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從句設定不正確,則可能導致查詢結果中出現眾多不相關的數據
『陸』 SQL Server 2005使用T-SQL語句不能實現功能
說說你的表結構是怎樣的,看看你的Student表是不是創建了instead of 觸發器。另外就是看看你的表是不是已經打開過沒有保存?資料庫是否刷新,這些都可能會有影響。
有一點可以肯定的就是語句是沒有錯誤的。
『柒』 sql資料庫復習
1? 不知道你要干嗎
2 CREATE DATABASE
3 DROP TABLE student
4 UPDATE ..
5 NULL是指未知,既不是空字元,也不是0
6 ? 看不到你的SQL語句
7 DISTINCT
8 SELECT * FROM S WHERE sno NOT LIKE 'N%'
9 INSERT INTO S(sno, sname, sex, depa) VALUES('1001', '李四', '男', '物電系')
10 DELETE FROM S WHERE sex = '男'
11 不見你的表結構