1. 程式人生 > >SQL Server ---T-SQl基本語句

SQL Server ---T-SQl基本語句

語法 主鍵 結果集 不用 定義 為什麽 blog img 計算

T-SQL 是 SQL-Server 的結構化查詢語言。

基本數據操作語言.

基礎語句

技術分享

先創建表 我後面的列子都是用的這一個表,列名啥的 就大概看看吧~~ 純粹為了學習語句,語法~~所以先創建個表吧~

技術分享

1.SELECT語句

註意 : 最好選擇想要的列,不要因為省事用 “ * ” 去選擇所有的列,因為這樣檢索的數據會比你實際需要的數據多 ,實際使用中也會降低應用程序 和 網絡 的使用 性能。

where 子句

不加限制條件的查詢在填充 列表框和組合框 時非常有用,並且在其他想要提供域列表的情況下也非常有用。

在where子句中運算順序NOT、AND、OR是醬紫的。

In 左邊表達式 和 右邊任意值匹配時 返回TURE。常用於子查詢。

Order by 子句

決定數據的輸出順序,會選擇系統開銷最小的方法來輸出查詢結果

DECS 降序 ASC 升序

Group by 子句

用於聚合信息。

如果不使用group by 子句,那麽 sum函數將返回指定列的所有行之和。用了group by ,sum函數返回的是每一組的和(ps:圖裏最後一行忘記刪掉了~沒用~)

技術分享

註意:使用Group by子句時select 列表中所有列必須是聚合列 要麽就是 Group by 中包含的列。

如果在select 列表中用了聚合列,那麽select 列表必須只包含聚合列,否則 必須有一個 Group by子句。

有點暈麽 沒關系 來翻一下

    就是說 select 聚合,聚合 from XX where xx 列都是聚合列 可以不用 Group by

    但是 select ID, 聚合 from XX where xx Group By 因為不都是聚合列,所以要有 Group by

下面那句 同理可證。

A.聚合函數

聚合函數獨立使用時,聚合函數只是用於聚合整個結果集 就像圖裏的第三條語句那樣。但是和Group by 一起使用時會很強大。

B.AVG 平均數

C.MAX/MIN 最大值/最小值

當求最大值和最小值時,為了分辨 列,可以使用AS關鍵字。雖然AS關鍵列是可選的,但是一為了程序可讀性,二為了編寫代碼符合ANSI/ISO標準。

技術分享

D.COUNT(表達式 / * )

計算查詢中返回的行數

分為2種情況 第一種count(*)時

技術分享

第二種count(表達式)時

寫這個時候碰到一點問題,關於主鍵約束,唯一約束的定義用法,回來專門寫一篇好好研究下。

好,可以看見我寫了兩個不同的表達式,既然每一行都有列,那為什麽出來的結果不一樣?

這裏就是要註意的地方了。

註意:除了COUNT(*)函數外,所有的聚合函數都忽略NULL值。

技術分享

COUNT函數和GROUP BY函數一起使用時

技術分享

E.使用HAVING 子句給分組設置條件

如果要將查詢條件放到分組後,可以用HAVing

註意:HAVING子句僅用於帶有GROUP BY子句的查詢語句。where子句應用於某一行,而having子句應用於分組的聚合值。

技術分享

F.使用for xml語句輸出XML

這裏以後會放一個專門介紹的鏈接,在這不做過多介紹。

G.通過option子句利用提示

這裏以後會放一個專門介紹的鏈接,在這不做過多介紹。

H.distinct和all謂詞

這兩個與重復數據的處理有關。

上圖 秒懂~

技術分享

這樣就可以篩選出 不重復的數據,在實際操作中這樣會讓返回的數量 大大的減小,而且下面的語句也比上面的語句執行速度要快。這裏以後會有個鏈接來討論為什麽會更快。

在聚合函數也可以使用distinct,語法:Select COUNT(distinct ID)from 表名。

ALL的含義剛好和distinct相反,所以他表示的就是除了distinct之外的情況。現在就需要了解就好, 以後會放一個專門介紹的鏈接,在這不做過多介紹。

2.使用insert語句添加數據

技術分享

into 關鍵字可加可不加,加了就是為了增強語句可讀性。隨意~

註意:在插值時有三種情況下,列不能設置為null值

1.列定義為默認值。

2.列定義為接受某種形式的系統生成值。比如說identity值

3.插入數據時已經提供了該列的值。

(存儲過程sp_help功能給出任意數據庫對象、用戶自定義數據類型或sql server數據類型的信息。如圖:查看course表屬性)

技術分享

insert into ...select語句

如果要插入的數據塊兒是從以下獲得:

  • 數據庫中的另一個表
  • 同一服務器上一個完全不同的數據庫
  • 來自另一sql server的異類查詢或其他數據
  • 同一表
insert into 需要插數據的表 Select 列名 from 輸出數據的表 where ID between 1 AND 100;

3.用update語句更改數據

技術分享

update 表名 set 列名 =‘更新的值’ where 列名 =‘老的值’或者是 需要更改的那列的隨意列名和隨意列名的值

註意:有一些列是不能更新或者不建議更新的,比如timestamp 還有主鍵最好不要更新。

3.DELETE語句

技術分享

SQL Server ---T-SQl基本語句