[SQL] SQL SERVER基礎文法

來源:互聯網
上載者:User

標籤:多行   ring   全串連   參數   outer   復原   values   邏輯運算   unicode編碼   

Struct Query Language

1.3NF

  a.原子性

  b.不能資料冗餘

  c.引用其他表的主鍵

 

2.約束

  a.非空約束

  b.主鍵約束

  c.唯一約束

  d.預設約束

  e.檢查約束

  f.外鍵約束

 

3.外鍵與關係

  外鍵是約束,不做外鍵處理,關係也是存在的.

 

4.char varchar nchar nvarchar

  char:是固定字元,如果不夠,會用空格來處理. 不需要計算長度,速度快.

  varchar:是動態大小.需要計算長度,速度慢,儲存佔用小.

  nvarchar:是以unicode編碼儲存.每個字元佔2個位元組.可以在任何sql server都能正常顯示中文.不帶n的英文佔1個位元組.中文佔2個位元組

 

5.crud

  [select]:

  取前5:select top 5

  取前5%:select top 5 percent

  去除重複:select distinct

  條件:select * from 表名 where

  [insert]:insert into 表名[(欄位名,欄位名)] values(欄位值,欄位值)

  [update]:update 表名 set 欄位名=欄位值 [where]

  [delete]:delete [from] 表名 [where]

 

6.運算子優先順序

  [邏輯運算子]: and or not(!)

  [比較子]:< > = !=

  比較子一般邏輯運算子優先順序要高,除了not.!只比小括弧的優先順序低.

 

7.模糊查詢

  like:select * from 表名 where 欄位名 like 值

  _:匹配任意一個字元

  %:匹配任意多個字元

  [%]:匹配字元%

 

8.空值處理

  ISNULL:select ISNULL(english,‘缺考‘) from Scroe 英語成績為空白則顯示缺考

  is [not] null:select * from Scroe where english is null 把英語成績為null的查詢出來

 

9.彙總函式

  SUM AVG COUNT MAX MIN

  彙總函式一般和group by配合使用,having可以對group by後再過濾

 

10.完整查詢語句順序

  select top 5 distinct * from T where field = fieldValue group by field2 having field2>5 order by field

  1:from T  2:*  3:where  4:distinct  5:group by field2  6:having field2>5  7:order by  8:top 5

  

11.常用函數

  [類型轉換]:CAST(值 as 類型)  CONVERT(類型,值)

  [字串]:LTRIM(值)  RTRIM(值)  LOWER(值)  UPPER(值)  LEN(值)  SUBSTRING(值,開始位置,長度)

  [日期]:GETDATE()取現在時間  DATEADD(datepart,number,date)加時間date+num  DATEDIFF(datepart,startdate,enddate)取時間差end-start  DATEPART(datepart,date)

 

取消/強制插入識別欄位:set identity_insert 表名 off/on

清空表:truncate table 表名

 

12.複製表

   select * into 新表 from 原表 where 1=1

13.聯集查詢

  當2個結果集列數相同,類型相同,可以合并為一個結果集.

  union:會自動去除重複行

  union all:顯示所有行.

 

14.串連查詢

  分內串連和外串連

  內串連:[inner ]join

      select * from T1 inner join T2 on T1.ID2 = T2.ID

      自串連是特殊的內串連,樹結構儲存: select * from T as T1 join T as T2 where T2.PID = T1.ID

      

  外串連:

    left [outer] join:左串連,左表內容全部顯示.右邊沒有的用NULL標示

    right [outer] join:右串連,右表內容全部顯示.左邊沒有的用NULL標示

    full [outer] join:全串連,左右表內容全部顯示,沒有的用NULL標示

 

15.開窗函數

  可以將多行合并為一個區來看待.可以對一個區進行統計.區別於group by,可以查詢所有列.

  開窗函數:over()  裡面可以跟order by和partition by(類似 group by)

  排名:rank() over(order by id)

  排序:row_number() over(order by id)

  小計:avg(cost) over(partition by cost)(平均費用)

 

16.視圖

  本質封裝一個sql語句,不會儲存任何資料.

  建立:  create view viewName as sql語句

  查看sql:  exec sp_helptext viewName 

 

17.事務

  事務是保證多個操作同時成功或者同時失敗

  begin tran(開始事務)  commit tran(提交事務)  rollback tran(復原事務)

  開啟/關閉事務自動認可:set implicit_transactions off/on

 

18.預存程序

  預存程序本質是封裝一段代碼.

  建立:  create proc procName  

        @param1 int,@param2 int output

        as  

        set  @param2 [email protected] * @param1 

  參數預設值:預存程序只有最後一個參數可以有預設值.

 

19.索引

  [聚焦索引]:

  [非聚焦索引]:

  create index indexName on tableName(fieldName)

 

20.觸發器

  對某個表的進行增刪改操作時,自動執行一個操作.有2種方式執行,1是觸發源操作前替換執行 2是觸發源操作後執行

  暫存資料表:inserted deleted

  2種方式:after | instead of

  3種觸發源:insert update delete

  建立:

    create trigger triggerName

      after insert

      as  begin

      insert into T  select * from inserted

      end

  建議:影響效率 謹慎使用

 

 

21.遊標

  逐行的操作資料

  對每條資料執行指定的

  使用:(讓T表中每個人的年齡增1)

    declare c1 cursor for

    select id,age from T

    declare @id int

    declare @age int

    open c1

    fetch c1 into @id,@age

    while(@@FETCH_STATU = 0)

    begin

      set @age= 1 + @age

      update T set age = @age where id = @id

      fetch c1 into @id,@age

    end  

    close c1

    deallocate c1

 

[SQL] SQL SERVER基礎文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.