溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL SERVER

發(fā)布時間:2020-07-01 22:58:22 來源:網(wǎng)絡(luò) 閱讀:333 作者:宇宙星河 欄目:數(shù)據(jù)庫

1. 數(shù)據(jù)類型

create table nnnn

(

  column_char char(10), //字符

  column_varchar varchar(10), //可變長度字符

  column_text text, //存儲大于8000的字符

  column_int int, //整數(shù),4B

  column_smallint smallint, //短整數(shù),2B

  column_bigint bigint, //整數(shù),8B

  column_tinyint tinyint, //整數(shù),1B

  column_bit bit, //比特,1b

  column_decimal decimal(10,3), //精度10,小數(shù)點后3位

  column_float float, //浮點,對精度要求不高時可用

  column_datetime datetime, //日期,精確到千分之一秒

  column_smalltime smalldatetime, //日期,精確到分

  column_money money, //貨幣,2個4B,前面是整數(shù),后面是小數(shù)

  column_smallmoney smallmoney, 貨幣,2個2B,前面是整數(shù),后面是小數(shù)

  column_binary binary, //二進(jìn)制,最大長度為8KB,固定長度

  column_varbinary varbinary, //二進(jìn)制,最大長度為8KB,可變長度

  column_p_w_picpath p_w_picpath, //超過8KB,可存儲圖片等

  column_nchar nchar, //Unicode數(shù)據(jù)類型,存儲雙字節(jié)字符,最多存儲4000字符, 固定長度

  column_nvarchar nvarchar, //Unicode數(shù)據(jù)類型,存儲雙字節(jié)字符,最多存儲4000字符, 可變長度

  column_ntext ntext, //存儲大于4000字符

  column_sql_variant sql_variant //自定義數(shù)據(jù)類型

)

go


注意:上面的//表示的是注釋,但在SQL SERVER中不能識別


2. 標(biāo)識符-分隔符

對不符合全部規(guī)則的標(biāo)識符,使用分隔符[]或""


3.標(biāo)識符

(1)首個字符必須是

Unicode標(biāo)準(zhǔn)2.0定義的字母:a~z、A~Z、來自其他語言的字母字符

下劃線_、at符號@、數(shù)字符號#


注:@開始的標(biāo)識符,表示局部變量或參數(shù);數(shù)字符號開始的標(biāo)識符,表示臨時表或過程;雙數(shù)字符號##開始的標(biāo)識符,表示全局臨時對象。

(2)后續(xù)字符,字母、十進(jìn)制數(shù)字、下劃線

(3)不能是Transact-SQL的保留字

(4)不允許嵌入空格或其他特殊字符

(5)不符合規(guī)則的標(biāo)識符,用戶SQL語句時,需要用分隔符[]或""


4.一個對象的完整名稱

服務(wù)器名稱.數(shù)據(jù)庫名稱.所有者名稱.對象名稱

server.database.owner_name.object_name


5.完整性

實體完整性:實體完整性將記錄定義為特定表的唯一實體。

注:每一行都是這個表的唯一,不能和其他行重復(fù)

域完整性:域完整性是指給定字段的輸入有效性。

注:通過CHECK約束、FOREIGN KEY約束、DEFAULT定義、NOT NULL定義 來確定值的范圍。

引用完整性:在輸入或刪除記錄時,引用完整性保持表之間已定義的關(guān)系,在刪除主表記錄時,相關(guān)的明細(xì)表記錄也要自動刪除。

用戶定義完整性:用戶可以通過存儲過程、觸發(fā)器等對象來實施具體數(shù)據(jù)庫的完整性。


6.約束

NOT NULL:非空約束

UNIQUE:唯一性約束

PRIMARY KEY:主鍵約束

FOREIGN KEY:外鍵約束

CHECK:檢查約束


7.CHECK約束

{constant | column_name | function | (subquery)}

[

{operator?。ND?。R?。OT}

{constant | column_name | function | (subquery)}

]

注:constant,字面值,數(shù)字或字符數(shù)據(jù); column_name,指定列;function,內(nèi)置函數(shù);operator,運算符。

如: 物資編碼 LIKE '[0-9][0-9][0-9][0-9][0-9]'

   單價 > 0

   [物資編碼] >= 0 and [物資編碼] <= 99999

例如:

ALTER TABLE [dbo].[物資信息表] WITH NOCHECK ADD CONSTRAINT [CK_物資信息表] CHECK ([物資編碼] >= 0 and [物資編碼] <= 99999)

GO


8.NULL 、空白、0是不同的





SQL語言包括:

  1. 數(shù)據(jù)定義語言:包括創(chuàng)建數(shù)據(jù)表(關(guān)系)、刪除數(shù)據(jù)表、修改數(shù)據(jù)表、建立索引和約束以及創(chuàng)建其他數(shù)據(jù)庫對象等。

  2. 數(shù)據(jù)操縱語言:包括查詢、添加、刪除、修改數(shù)據(jù)等。

  3. 數(shù)據(jù)控制語言:控制安全性的命令。


SQL語句組成: 標(biāo)識符、關(guān)鍵字、數(shù)據(jù)類型、運算符、表達(dá)式、函數(shù)、注釋


1.指定pubs數(shù)據(jù)庫為SQL語句的執(zhí)行數(shù)據(jù)庫

USE pubs

GO

2.查詢語句

SELECT emp_id, fname+''+lname as name, hire_date

FROM employee

WHERE year(hire_date) > 1992

GO

3.聲明變量

DECLARE

{

  @myint int,

 @sdf char(8);

}

GO

注:聲明了兩個比變量@myint和@sdf

4.為變量賦值

SET @myint =12

SET @myint =1, @sdf = 'dDD'

5.邏輯運算

 all,所有布爾表達(dá)式為true,返回true;

 any, 有一個為true,返回true;

 like,如果操作數(shù)與一種模式匹配,返回true;

 in,如果操作數(shù)等于表達(dá)式列表中的一個,返回true。

 and, or, not

6.非空判斷

where hire_name is not null

7.打開或關(guān)閉text in row, text、ntext和p_w_picpath字符串存儲在數(shù)據(jù)行內(nèi)/外(將數(shù)據(jù)保存到獨立的文本或圖像頁面里,此時文本行是一個指向該數(shù)據(jù)的指針)

sp_tableoption TableName, 'text in row', 'ON'

8.WRITETEXT、UPDATETEXT和READTEXT,處理大文本和圖像數(shù)據(jù)

9.IF...ELSE 結(jié)構(gòu)

IF 條件判斷

  過程1

ELSE

  過程2

例如:

IF @myint==2

  SET @myint=3

ELSE

  SET @myint=4

GO

10.IF EXISTS(結(jié)構(gòu))

IF [NOT] EXISTS (SELECT 語句)

  過程1

ELSE

  過程2

11.BEGIN...END結(jié)構(gòu)

它可以將多個命令作為一個整體看待

12.WHILE循環(huán)

WHILE 判斷表達(dá)式

{循環(huán)體}

[BREAK]

{循環(huán)體}

[CONTINUE]

注:BREAK,跳出循環(huán);CONTINUE,開始下一次循環(huán)

13.GOTO語句

跳轉(zhuǎn)到對應(yīng)的標(biāo)簽處

label1:

 PRINT 'HHA'

 GOTO lable1

GO

注:lable1:是創(chuàng)建標(biāo)簽

14.CASE語句

CASE 字段名稱

 WHEN 記錄 THEN 結(jié)果值

 WHEN 記錄 THEN 結(jié)果值

 ...

 ELSE 結(jié)果子

END



SELECT、GROUP BY和HAVING、ALL、TOP、ORDER BY、ROWCOUNT、DISTINCT、UNION、WHERE、CASE、INSETR JOIN...ON...

  1. SELECT

    SELECT *

    FROM TABLE_NAME

  2. TOP

    SELECT [TOP n [PERCENT] column_name [,...n]]

    FROM tablename

    注:TOP n   是返回前n行數(shù)據(jù)

      TOP n PERCENT   是返回百分之n的數(shù)據(jù)

    n不能用表達(dá)式或變量來替代

  3. ROWCOUNT

    SET ROWCOUNT 3

    SELECT *

    FROM 物資庫存記錄

    GO

    SET ROWCOUNT 0

    SET ROWCOUNT 3表示設(shè)置返回結(jié)果的行數(shù)為3

    SET ROWCOUNT 0表示恢復(fù)ROWCOUNT

  4. DISTINCT

    SELECT DISTINCT 物資名稱

    FROM 物資基本信息

    GO

    注:DISTINCT用來從SELECT語句的結(jié)果集中除去重復(fù)的行

  5. WHERE

    條件

  6. BETWEEN...AND結(jié)構(gòu)

    字段名或者表達(dá)式 [NOT] BETWEEN 表達(dá)式1 AND 表達(dá)式2

  7. IN

    表達(dá)式或者字段名 [NOT] IN (列表或者子查詢)

  8. LIKE

    字符串表達(dá)式 [NOT] LIKE 可以帶通配符串表達(dá)式

    [ESCAPE 字符串表達(dá)式]

    注:ESCAPE表示,允許在字符串中搜索通配符而不是將其作為通配符使用E

    注:用于模糊查詢, 和LIKE結(jié)合使用的通配符%、_、[]和[^],他們必須與LIKE結(jié)合才有意義,否則就是普通字符

    %:表示任意個任意字符

    _:表示1個任意字符

    []:表示可以是方括號里列出的任意一個字符

    [^]:表示不在方括號里列出的任意一個字符

  9. EXISTS

    EXISTS關(guān)鍵字用于指定一個子查詢,檢測行的存在。 也就是說,如果EXISTS關(guān)鍵字指定的子查詢查得的結(jié)果集不為空,則執(zhí)行主體的SELECT 查詢,否則返回的結(jié)果集為空。

    SELECT *

    FROM TABLE_NAME

    WHERE EXISTS (SELECT * FROM TAB WHERE NAME='1')

    GO

  10. 設(shè)置查詢字段的顯示名稱

    1.使用AS關(guān)鍵字

    2.使用“=”號

    3.直接給出名稱

    例如:

    SELECT emp_id '雇員編號', fname+''+'lname' ‘姓名’

    FROM employee

    GO

    例如:

    SELECT emp_id AS '雇員編號', fname+''+'lname' AS ‘姓名’

    FROM employee

    GO

    例如:

    SELECT '雇員編號'=emp_id ,  ‘姓名’=fname+''+'lname'

    FROM employee

    GO

    注:作為字段名稱時,漢字可以不使用'',但是作為值的時候,必須使用''

  11. 統(tǒng)計函數(shù)

    SUM()、AVG()、MAX()、MIN()、COUNT()

    求和、平均數(shù)、最大值、最小值、記錄數(shù)

  12. GROUP BY和HAVING

    [GROUP BY 表達(dá)式]

    [HAVING 表達(dá)式]

    注:GROUP BY用來對數(shù)據(jù)進(jìn)行分組, HAVING用來對分組的數(shù)據(jù)設(shè)置條件

    SELECT *

    FROM A

    WHERE price is NOT NULL

    GROUP BY type

    HAVING COUNT(*) > 3

    GO

  13. ALL

    在GROUP BY子句中使用,但在SELECT語句中包括WHERE子句時ALL才有意義

    SELECT *

    FROM B

    WHERE 數(shù)量>10

    GROUP BY ALL 單位

    注:使用ALL關(guān)鍵字,那么查詢結(jié)果將包括由GROUP BY子句產(chǎn)生的所有組,即使某些組沒有符合搜索條件的行。

  14. ORDER BY

    SELECT *

    FROM C

    ORDER BY price DESC

    注:子句中的字段數(shù)目沒有限制,ASC表示升序,DESC表示降序,空值被視為最低的值

  15. 多表查詢

    SELECT pub.pub_id, title.id

    FROM pub, title

  16. UNION

    UNION可以將多個SELECT語句的查詢結(jié)果組合到一起

    使用UNION的結(jié)果集,必須具有相同的字段結(jié)構(gòu),字段數(shù)必須相等,響應(yīng)的字段的數(shù)據(jù)類型必須兼容

  17. CASE、INNER JOIN...ON...表達(dá)式

  18. INSERT

    INSERT [INTO] 表名或試圖 [字段列表] values 值列表

    INSERT INTO 物資庫存記錄 (物資編號,物資名稱) VALUES ('LP12', '螺釘')

  19. UPDATE

    UPDATE 表名或視圖

    SET {字段名={expression | default | null}}

    [FROM {<table_source>}[,...]]

  20. DELETE

    DELETE 表或視圖

    FROM 其他表

    WHERE 表達(dá)式

  21. 視圖

    CREATE VIEW [database_name.][owner.]view_name[(column [,...n])]

    [WITH <view_attribute>[,...n]]

    AS

    select_statement

    [WITH CHECK OPTION]


    <view_attribute>::= {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}

  22. 修改視圖

    ALTER

    VIEW [database_name.][owner.]view_name[(column [,...n])]

    [WITH <view_attribute>[,...n]]

    AS

    select_statement

    [WITH CHECK OPTION]


    <view_attribute>::= {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI