SQL語句 - 基本查詢


一、語法結構

select select_list
[ into new_table ]
from table_source
[ where search_condition ]
[ group by broup_by_expression ]
[ having search_condition ]
[order by order_by_expression [ asc | desc ] 

select查詢語句中的主要參數說明如下

select_list:查詢的列或者表達式的列表,用逗號進行分隔。
new_table:新的表名。
table_source:要查詢的表。如果是多個表,用逗號進行分隔。
search_condition:查詢條件。
group_by_expression:分組表達式。
order_by_expression:排序表達式。
asc:升序排序。
desc:降序排序。

select查詢語句字句的功能列表

子句 主要功能 是否必需
select 指定由查詢返回的列
from 指定要查詢的表
into 創建新表並將結果行插入新表中
where 查詢條件
group by 對查詢結果進行分組
order by 對查詢結果進行排序
having 對查詢結果進行篩選

 

二、選擇列表

  選擇列表用於定義select語句的結果集中的列

  1、*  查詢所有列:

  select * from person  

  *就是結果集合,表示查詢person表中的所有列。

  2、distinct  去除重復數據:

   distinct是對所有列作用,也就是說,所有列都相同才算重復數據。

  select distinct name from person

  3、包含函數的查詢:

  例如:

  select count(*) from person

三、from子句

from子句實際上就是用逗號分隔的表名、視圖名和join字句的列表。使用from子句可以實現如下功能:

1、列出選擇列表和where子句引用的列所在的表和視圖。可以使用as子句為表和視圖指定別名。

2、聯接類型。這些類型由on子句中指定的聯接條件限定。

分配表名時可以使用如下形式

    •  table_name  as  table alias
    •  table_name  as  table_alias

 需要特別說明的是,如果為表分配了別名,那么T-SQL語句中對該表的所有顯示引用都必須使用別名,而不能使用別名。

四、where子句

 where子句可以篩選結果集的源表中的行。帶有where子句的select語句的結構如下:

   select <字段列表>
   from <表名>
   where<條件表達式>

 其中,條件表達式是由各種字段、常量、表達式、關系運算符、邏輯運算符和特殊的運算符組合起來的。

 where子句中的運算符:

 1、關系運算符

  關系運算符用來表示兩個表達式之間的比較關系。

關系運算符 含義
= 等於
< 小於
> 大於
!=(或<>) 不等於
>= 大於等於
<= 小於等於
!> 不大於
!< 不小於

 

   2、邏輯運算符

    邏輯運算符用於表示兩個表達式之間的邏輯關系:

邏輯運算符 含義
not 非(否)
and
or

 

  3、特殊運算符

特殊運算符 含義
% 通配符,通常與like配合使用
_ 通配符,代表嚴格的一個字符。where name like '_xxx'將查找以xxx結尾的所有4個字母的名字(sxxx,dxxx等)
[] 指定范圍([a-f])或集合([abcdefg])中的任何單個字符。where name like '[a-f]xxxx',將超找以abcdef開頭,xxxx結尾的字符。
[^] 不屬於指定范圍的([a-f])或集合([abcdefg])的任何單個字符。
between 定義一個取值范圍區間,使用and分開。between開始值與and結束值。
like 字符串匹配
in 一個字段的值是否在一組定義的值之中
exists 子查詢有結果集返回(則子查詢返回True)
not exists 子查詢沒有結果集返回(則子查詢返回True)
is null 字段是否為null
is not null 字段是否不為null

 在WHERE子句中使用EXISTS(如果使用得當的話)可以大大提高性能。因為使用EXISTS時,只要找到和條件匹配的記錄,SQL Server就立即停止。假設有一個包含一百萬條記錄的表,並且在第三個記錄中找到了匹配的記錄,那么使用EXISTS選項將避免讀取999997條記錄!NOT EXISTS以同樣的方式工作。

五、group by子句

  詳見地址:http://www.cnblogs.com/kissdodog/p/3365789.html

六、order by子句

   order by子句用於指定結果集的排序

  1、語法結構:

    select <字段名列表>
    from 數據庫表名
    [where <條件表達式>]
    [order by[<字段名或者表達式> [asc|desc],...]]

   order by子句可以搭配where子句,也可以和select、fromD搭配使用,而不需要where子句。

  order by子句的語法如下:

    [ order by { order_by_expression [ asc | desc] } [ ,...n ] ]

其中主要的參數說明如下:

  order_by_espression:指定要排序的列、列的別名、表達式或者指定為代表選擇列表內的名稱、別名或表達式的位置的負整數。

  asc:按遞增順序對指定列中的值進行排序。

  desc:按遞減順序對指定列中的值進行排序。

七、having篩選查詢

  詳見地址:http://www.cnblogs.com/kissdodog/p/3365789.html

八、into查詢

  into子句將查詢結果生成新表,新表的結構由查詢字段列表組成。也可以將查詢的結果送入tempdb數據庫的臨時表中,這樣關閉服務器之后臨時表會自動刪除。

  into查詢的語法結構:

  SELECT <字段名列表>
  [ into 新的數據表名 ]
  FROM 數據庫表名
  [ where <條件表達式> ]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM