SQL的意思是結構化查詢語言,其主要功能是同各種資料庫建立聯絡,進行溝通.查詢指的是對儲存於SQL的資料的請求。查詢要完成的任務是:將Select語句的結果集提供給使用者。Select語句從SQL中檢索出資料,然後以一個或多個結果集的形式將其返回給使用者。
==========================================================
Select基本語法結構
==========================================================
Select[predicate]{*|table.*|[table.]]field[,[table.]field2[,...]}
[ASalias1[,alias2[,...]]]
[INTOnew_table_name]
FROMtableexpression[,...]
[Where...]
[GROUPBY...]
[ORDERBY...][ASC|DESC]]
predicate-->指定返回記錄(行)的數量,可選:ALL,TOP
*--------->指定表中所有欄位(列).
table----->指定表的名稱.
field----->指定表中欄位(列)的名稱
[ASalias]-替代表中實際欄位(列)名稱的化名.
[INTOnew_table_name]-->建立新表及名稱.
tableexpression---->表的名稱.
[GROUPBY...]表示以該欄位的值分組
[ORDERBY...]表示按升序排列,降序選DESC;
------------------------------------------------------------
1選擇列
------------------------------------------------------------
sql語句在access中的'輸入方法
(1)選擇"查詢"-->新建-->預設設計檢視-->點選確定
(2)關閉"顯示錶對話框"
(3)在選單攔選擇"檢視"--->SQL檢視,就可以輸入SQL語句了
示例1_1_選擇所有欄位
Select*
FROMuseres;
示例1_2_選擇部分欄位
Selectuser_name,real_name,submit_date
FROMuseres;
示例1_3查詢兩個表中的欄位
Select圖書資訊表.圖書條碼,借書資訊表.圖書條碼
FROM圖書資訊表,借書資訊表;
示例解讀:
通過上面簡單示例我們體會到
(1)Select子句選擇列表,它指出查詢結果集所包含的欄位(列)及其屬性,選擇所有列時用通配府*,選擇部分列時要用逗號隔開
(2)FROM子句指出查詢的表名,要指定多個表時中間用逗號隔開
------------------------------------------------------------
2TOP指定返回記錄數量
------------------------------------------------------------
示例1_4_返回記錄數量
SelectTOP3*
FROMuseres;
-------------------------------------------------------------
3AS派生新欄位
-------------------------------------------------------------
示例1_5_派生新欄位
Selectuser_name,(submit_date+30)ASnew_date
FROMuseres;
------------------------------------------------------------
4Where指定條件進行篩選
------------------------------------------------------------
示例1_6等號查詢指定記錄
Select*
FROMuseres
_name="紅紅";
示例1_7年齡大於30的人
Select*
FROMuseres
Whereage>30
從上面可以看出,在根據條件進行篩選時,要用到運算子,常見的運算子如下所示:
1比較運算子
=等於
<>不等於
>大於
<小於
<=小於等於
>=大於等於
2邏輯運算子
ALL所有條件都為true則返回true
AND兩個條件都為true則返回true
OR有一個條件為true則返回true
NOT對值取反
ANY所有條件中只要有一個為true則返回true
BETWEEN只要運算元在指定的範圍內,則返回true
IN只要運算元等於表示式中的一個,則返回true
LIKE如果運算元與模式相匹配,則返回true
SOME在一系列的比較中,有些為true則返回true
示例1_8_某日以前註冊使用者
Select*
FROMuseres
Wheresubmit_date<#2004-12-30#
示例1_9_某時間段註冊使用者
Select*
FROMuseres
Wheresubmit_dateBETWEEN#2004-1-1#AND#2005-5-1#
示例1_10_按關鍵字查詢
Select*
FROMuseres
_nameLIKE"*李*"
------------------
IN與OR的區別
-----------------
示例_IN篩選欄位中的記錄
Selectreal_name,submit_date
FROMuseres
Wherereal_nameIn("小李","小張")
示例_OR篩選欄位中的記錄
Selectreal_name,submit_date
FROMuseres
Wherereal_name="小李"orreal_name="小張"
------------------------------------------------------------
5GROUPBY分組結果集
------------------------------------------------------------
示例1_12_GROUPBY分組結果集
Selectsex,SUM(age)ASage之SUM
FROMuseres
ORDERBYSUM(age)DESC;
示例解讀:
按欄位"sex"下的記錄對新"欄位"age之SUM"進行分組.
用來指定按降序排列
本例中的sum為SQL中的聚合函式(對一組值進行操作,返回單一的彙總值),下面是常用的幾個聚合函式:
1SUM求總和函式
格式:
SUM([ALL|DISTINCT]expression)
引數:
ALL對所有值求總和,預設為ALL
DISTINCT求總和時排除重複項
expression值或表示式,可以是變數,欄位,函式等
2AVG求平均值函式
格式:
AVG([ALL|DISTINCT]expression)
引數:
ALL對所有值求平均,預設為ALL
DISTINCT求平均時排除重複項
expression值或表示式,可以是變數,欄位,函式等
3MIN和MAX函式分別為求最小值和最大值,格式和上面類似.
4COUNT行計數函式
格式:
COUNT({[ALL|DISTINCT]expression|*})
ALL表示計算除了NULL以外的其他項,為預設選項
DISTINCT表示COUNT返回唯一非空值的數量
expression為表示式,不能是txte,image,ntxt和uniqueidentifier型別的資料.
示例1_13_AVG求平均值函式
Selectsex,AVG(age)ASage之AVG
FROMuseres
ORDERBYAVG(age)DESC;
示例1_14_COUNT返回記錄數量
SelectCOUNT(*)
FROMuseres
示例1_15_按性別分組記錄數量
Selectsex,COUNT(*)
FROMuseres
GROUPBYsex;
------------------------------------------------------------
6DISTINCT從尾部除去重複記錄
------------------------------------------------------------
SelectDISTINCTreal_name
FROMuseres
------------------------------------------------------------
7組合查詢
------------------------------------------------------------
當需要從多個表中查詢時,可以使用組合查詢
_name,_time
FROMuseres,logtime
Where(((_name)=[logtime].[real_name]));