《SQL SERVER 2008資料庫學習筆記(一)——Clown》

來源:互聯網
上載者:User

標籤:des   io   ar   os   使用   sp   for   strong   資料   

    最近看了一本SQL SERVER2010的教材,順便記錄了一下筆記(PS:此書暫時沒有看完、所以暫時更新一下內容)!一下內容為本人自己整理、如有錯誤還請大家指出以免影響別人的學習。

 

1、 建立一個表TestDB

  DROP TABLE TestDB

  CREATE TABLE TestDB(

    id varchar(15) NOT NULL,

    name varchar(15) NOT NULL,

    sex int NOT NULL,

    CONSTRAINT pk_id PRIMARY KEY(id)

  );

2、 向TestDB表中插入一條資料

  INSERT INTO TestDB (id,name,sex) VALUES (‘001‘,‘Clown‘,1);

3、 查詢TestDB中全部資料

  SELECT * FROM TestDB;

4、 給查詢的列名起個自訂的別名

  SELECT id AS c1,name AS c2,sex AS c3 FROM TestDB;

  也可以不加[AS]

  SELECT id c1,name c2,sex c3 FROM TestDB;

  也可以對別名加[“”],則可以使用關鍵字做別名

  SELECT id "AS",name "SUM",sex "CHAR" FROM TestDB;

5、 使用DISTINCT消除重複的行(計算量大、一般情況不建議使用)

    SELECT DISTINCT name,sex FROM TestDB;

6、 ORDERY BY進行升序排列

    SELECT * FROM TestDB ORDER BY sex

7、 ORDERY BY CASE按照條件排序

    SELECT id c1,name c2,sex c3

    FROM TestDB

    ORDER BY CASE -- ORDER BY為一個隱式遊標(CURSOR)

    WHEN name=‘Clown‘ -- 如果[name]列的值全部為[Clown]

    THEN sex   -- 則按照[sex]排序

    ELSE id -- 否則按照[id]排序

    END;

8、 ORDERY BY [column] DESC降序排列

    SELECT * FROM TestDB ORDER BY id DESC;

9、 WHERE進行資料篩選

    -- 篩選出[id]為[001]的所有行的所有列

    SELECT * FROM TestDB WHERE id=‘001‘;

    註:不能在WHERE中使用SUM()或者COUNT()等彙總函式!

    比較子最快的為相等[=]其次是不相等[<、<=、>、>=]最慢的為不等於[<>或!=]

    表中選擇特定行的操作稱為[限制]

    WHERE語句不能用[列名]的[別名]、必須用原列名

    WHERE在SELECT之前進行計算

10、多條件查詢串連符:AND 、OR 、NOT

  AND:查詢多個條件同時為[真]

  OR:一個條件成立即可以

  NOT:取與條件相反的結果

  -- 篩選出[id]為[001]的所有行的所有列

  SELECT * FROM TestDB WHERE NOT id<>‘001‘;

  註:同時使用是AND、OR、NOT優先順序:NOT最高其次是AND最後為OR

11LIKE模糊查詢

  -- 查詢[name]欄位含有[C]的資料

       SELECT * FROM TestDB WHERE name LIKE ‘%C%‘

  -- 查詢[name]欄位含有6位長度的資料

  SELECT * FROM TestDB WHERE name LIKE ‘_____%‘

  -- 查詢[name]欄位[C]或[a]或[b]開頭並[lown]結尾的資料

  SELECT * FROM TestDB WHERE name LIKE ‘[Cab]lown%‘

  -- ESCAPE ‘\‘ 此句聲明[\]為逸出字元相當於查詢的是[_Clown]關鍵字

  SELECT * FROM TestDB WHERE name LIKE ‘\_Clown%‘  ESCAPE ‘\‘

  -- 不是以[A]開頭的[6]位或以上的關鍵字

  SELECT * FROM TestDB WHERE name LIKE ‘[^A]Clown%‘

  註:LIKE僅試用於字串

12BETWEEN篩選出大於等於並小於等於的一個段

  -- 篩選出[id]大於等於並且小於等於的資料

  SELECT * FROM TestDB WHERE id BETWEEN 1 AND 2

13IN關鍵字篩選值是否等於給定的值

  -- 篩選出[id]為[001]和[003]的值

  SELECT * FROM TestDB WHERE id in (‘001‘,‘003‘)

14IS NULL值是否為[NULL](PS:[NULL]不代表字面量)

  -- 篩選出[name]為[NULL]的資料;[NULL]不代表字面量而是說明是否為空白

  SELECT * FROM TestDB WHERE name IS NULL

  -- 篩選出[name]為非空的資料;[NULL]不代表字面量而是說明是否為空白

  SELECT * FROM TestDB WHERE name IS NOT NULL

15SUBSTRING(Column,position,length)提取字串

  -- 提取[name]列值、從第[1]位開始共[1]位

  SELECT SUBSTRING(name,1,1) FROM TestDB

16UPPER(string)LOWER(string)大小寫轉換函式

   -- [name]列轉換為小寫

  SELECT LOWER(name) FROM TestDB

  -- [name]列轉換為大寫

  SELECT UPPER(name) FROM TestDB

17、擷取目前時間戳

  -- 擷取目前時間戳

  SELECT  CURRENT_TIMESTAMP

18、類型轉換CAST(expression AS type)

  -- 將[sex]列轉換為[varchar]類型

  SELECT CAST(sex as varchar) FROM TestDB

19CASE函數相當於IF ELSE

  -- CASE相當於IF ELSE

  SELECT id, ColumnName =

      CASE id

         WHEN ‘001‘ THEN ‘Road‘

         WHEN ‘002‘ THEN ‘Mountain‘

         WHEN ‘003‘ THEN ‘Touring‘

         ELSE ‘Not for sale‘

      END

  FROM TestDB

  ORDER BY id;

20INNER JOIN 內連結

  -- 內連結->返回[TestDB]表中[id]等於[TestDB2]表中[OrderId]

  SELECT * FROM TestDB t1

  INNER JOIN TestDB2 t2

  ON t1.id = t2.OrderId

21sp_help 查看錶的結構

  -- [G_GAMEList]為表名稱

   sp_help G_GAMEList

22UPDATE SET 更新資料

  -- [G_GAMEList]為表名,[GG_Date]為需要修改的欄位以及值,如不加WHERE則修改全部

  UPDATE G_GAMEList

       SET GG_Date = ‘2014-10-28‘

  WHERE GG_Id = ‘1‘;

23DELETE 刪除,不刪除表結構

  -- 刪除[G_GAMEList]表、有刪除記錄可以恢複

  DELETE G_GAMEList

  -- 刪除[G_GAMEList]表中[GG_AddId]欄位為[1]的行

  DELETE FROM G_GAMEList WHERE GG_AddId=‘1‘;

24DROP TABLE 刪除,刪除表結構以及表

  -- DROP刪除表不可恢複,但速度比DELETE快

  DROP TABLE G_GAMEList

25、TRUNCATE 刪除可以使自增欄位歸零但資料不可恢複,不刪除表結構

  TRUNCATE TABLE dbo.a;

26、約束

         NOT NULL                           阻止向列中插入空值

         PRIMARY KEY                     設定表的主鍵

         FOREIGN KEY                     設定表的外鍵

         UNIQUE                               阻止向列中插入重複的值

         CHECK                                  使用邏輯(布爾)運算式限制插入列中的值

 

         列約束:是列定義的一部分,它設定作用於列的條件。

         資料表條件約束:是有別於列定義並加強於表中多個列的條件。

27、CREATE TABLE t_Name 建立表

         -- 建立一張新表

  CREATE TABLE t_TestTable(

     id varchar(10),

    name varchar(10)

  )

28DEFAULT設定列的預設值

  -- 建立一張新表,設定[name]預設值為‘‘

  CREATE TABLE t_TestTable(

    id varchar(10),

    name varchar(10) NOT NULL DEFAULT ‘‘

  )

29、主鍵PRIMARY KEY與外鍵 FOREIGN KEY

  -- 設定[C_Id]為主鍵

  CREATE TABLE t_City(

    C_Id varchar(10) NOT NULL PRIMARY KEY,

    C_Name varchar(10) NOT NULL,

    C_Parment int DEFAULT 0,

  )

   -- 建立一個[t_User]表,[U_Id]為主鍵,[U_City]為外鍵主鍵為[t_City]表中的[C_Id]列

  CREATE TABLE t_User(

    U_Id varchar(10) NOT NULL PRIMARY KEY,

    U_Name varchar(10) NOT NULL,

    U_Sex int NOT NULL DEFAULT 1,

    U_City varchar(10),

    CONSTRAINT FK_U_City

     FOREIGN KEY(U_City)

     REFERENCES t_City(C_Id)

  )

 

  INSERT INTO t_City(C_Id,C_Name)VALUES(‘1‘,‘呼倫貝爾‘);

 

  -- 外鍵不能插入父表中沒有的資料

  INSERT INTO t_User(U_Id,U_Name,U_Sex,U_City) VALUES (‘1‘,‘Clown‘,1,‘1‘);

 

  -- 外鍵可以為空白

  INSERT INTO t_User(U_Id,U_Name,U_Sex) VALUES(‘2‘,‘Clown‘,1);

  註:外鍵可以為[NULL]但是不能為父表中不存在的值。

30UNIQUE值唯一

  CREATE TABLE t_Test(

    T_Id varchar(10),

    CONSTRAINT un_id

    UNIQUE(T_Id)

  )

  註:UNIQUE標識[T_Id]列為唯一值不能插入重複資料

31、建立臨時變數表

  建立局部變數表:

  CREATE TABLE #t_TempTable(

    TT_Id CHAR(3),

  )

  建立全域變數表:

  CREATE TABLE ##t_AllTempTable(

    ATT_Id CHAR(3),

  )

  註:建立臨時變數表是用來儲存臨時的資料當會話結束或事物結束時則資料清除

32ALTER修改

  -- 向[t_City]表中增加列[C_Time]

  ALTER TABLE t_City

    ADD C_Time VARCHAR(10);

 

  -- 刪除[C_Time]列

  ALTER TABLE t_City

    DROP COLUMN C_Time

33CREATE INDEX建立索引

  -- 為表[t_City]的[C_Id]列建立索引

  CREATE INDEX index_Name ON t_City(C_Id);

  -- 刪除索引

  DROP INDEX index_Name ON t_City;

  註:索引查詢速度變快但是修改和添加資料時變慢,在添、改資料時索引也需要自動維護

《SQL SERVER 2008資料庫學習筆記(一)——Clown》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.