您好,登錄后才能下訂單哦!
1. 數據類型
create table nnnn
(
column_char char(10), //字符
column_varchar varchar(10), //可變長度字符
column_text text, //存儲大于8000的字符
column_int int, //整數,4B
column_smallint smallint, //短整數,2B
column_bigint bigint, //整數,8B
column_tinyint tinyint, //整數,1B
column_bit bit, //比特,1b
column_decimal decimal(10,3), //精度10,小數點后3位
column_float float, //浮點,對精度要求不高時可用
column_datetime datetime, //日期,精確到千分之一秒
column_smalltime smalldatetime, //日期,精確到分
column_money money, //貨幣,2個4B,前面是整數,后面是小數
column_smallmoney smallmoney, 貨幣,2個2B,前面是整數,后面是小數
column_binary binary, //二進制,最大長度為8KB,固定長度
column_varbinary varbinary, //二進制,最大長度為8KB,可變長度
column_p_w_picpath p_w_picpath, //超過8KB,可存儲圖片等
column_nchar nchar, //Unicode數據類型,存儲雙字節字符,最多存儲4000字符, 固定長度
column_nvarchar nvarchar, //Unicode數據類型,存儲雙字節字符,最多存儲4000字符, 可變長度
column_ntext ntext, //存儲大于4000字符
column_sql_variant sql_variant //自定義數據類型
)
go
注意:上面的//表示的是注釋,但在SQL SERVER中不能識別
2. 標識符-分隔符
對不符合全部規則的標識符,使用分隔符[]或""
3.標識符
(1)首個字符必須是
Unicode標準2.0定義的字母:a~z、A~Z、來自其他語言的字母字符
下劃線_、at符號@、數字符號#
注:@開始的標識符,表示局部變量或參數;數字符號開始的標識符,表示臨時表或過程;雙數字符號##開始的標識符,表示全局臨時對象。
(2)后續字符,字母、十進制數字、下劃線
(3)不能是Transact-SQL的保留字
(4)不允許嵌入空格或其他特殊字符
(5)不符合規則的標識符,用戶SQL語句時,需要用分隔符[]或""
4.一個對象的完整名稱
服務器名稱.數據庫名稱.所有者名稱.對象名稱
server.database.owner_name.object_name
5.完整性
實體完整性:實體完整性將記錄定義為特定表的唯一實體。
注:每一行都是這個表的唯一,不能和其他行重復
域完整性:域完整性是指給定字段的輸入有效性。
注:通過CHECK約束、FOREIGN KEY約束、DEFAULT定義、NOT NULL定義 來確定值的范圍。
引用完整性:在輸入或刪除記錄時,引用完整性保持表之間已定義的關系,在刪除主表記錄時,相關的明細表記錄也要自動刪除。
用戶定義完整性:用戶可以通過存儲過程、觸發器等對象來實施具體數據庫的完整性。
6.約束
NOT NULL:非空約束
UNIQUE:唯一性約束
PRIMARY KEY:主鍵約束
FOREIGN KEY:外鍵約束
CHECK:檢查約束
7.CHECK約束
{constant | column_name | function | (subquery)}
[
{operator | AND | OR | NOT}
{constant | column_name | function | (subquery)}
]
注:constant,字面值,數字或字符數據; column_name,指定列;function,內置函數;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語言包括:
數據定義語言:包括創建數據表(關系)、刪除數據表、修改數據表、建立索引和約束以及創建其他數據庫對象等。
數據操縱語言:包括查詢、添加、刪除、修改數據等。
數據控制語言:控制安全性的命令。
SQL語句組成: 標識符、關鍵字、數據類型、運算符、表達式、函數、注釋
1.指定pubs數據庫為SQL語句的執行數據庫
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,所有布爾表達式為true,返回true;
any, 有一個為true,返回true;
like,如果操作數與一種模式匹配,返回true;
in,如果操作數等于表達式列表中的一個,返回true。
and, or, not
6.非空判斷
where hire_name is not null
7.打開或關閉text in row, text、ntext和p_w_picpath字符串存儲在數據行內/外(將數據保存到獨立的文本或圖像頁面里,此時文本行是一個指向該數據的指針)
sp_tableoption TableName, 'text in row', 'ON'
8.WRITETEXT、UPDATETEXT和READTEXT,處理大文本和圖像數據
9.IF...ELSE 結構
IF 條件判斷
過程1
ELSE
過程2
例如:
IF @myint==2
SET @myint=3
ELSE
SET @myint=4
GO
10.IF EXISTS(結構)
IF [NOT] EXISTS (SELECT 語句)
過程1
ELSE
過程2
11.BEGIN...END結構
它可以將多個命令作為一個整體看待
12.WHILE循環
WHILE 判斷表達式
{循環體}
[BREAK]
{循環體}
[CONTINUE]
注:BREAK,跳出循環;CONTINUE,開始下一次循環
13.GOTO語句
跳轉到對應的標簽處
label1:
PRINT 'HHA'
GOTO lable1
GO
注:lable1:是創建標簽
14.CASE語句
CASE 字段名稱
WHEN 記錄 THEN 結果值
WHEN 記錄 THEN 結果值
...
ELSE 結果子
END
SELECT、GROUP BY和HAVING、ALL、TOP、ORDER BY、ROWCOUNT、DISTINCT、UNION、WHERE、CASE、INSETR JOIN...ON...
SELECT
SELECT *
FROM TABLE_NAME
TOP
SELECT [TOP n [PERCENT] column_name [,...n]]
FROM tablename
注:TOP n 是返回前n行數據
TOP n PERCENT 是返回百分之n的數據
n不能用表達式或變量來替代
ROWCOUNT
SET ROWCOUNT 3
SELECT *
FROM 物資庫存記錄
GO
SET ROWCOUNT 0
SET ROWCOUNT 3表示設置返回結果的行數為3
SET ROWCOUNT 0表示恢復ROWCOUNT
DISTINCT
SELECT DISTINCT 物資名稱
FROM 物資基本信息
GO
注:DISTINCT用來從SELECT語句的結果集中除去重復的行
WHERE
條件
BETWEEN...AND結構
字段名或者表達式 [NOT] BETWEEN 表達式1 AND 表達式2
IN
表達式或者字段名 [NOT] IN (列表或者子查詢)
LIKE
字符串表達式 [NOT] LIKE 可以帶通配符串表達式
[ESCAPE 字符串表達式]
注:ESCAPE表示,允許在字符串中搜索通配符而不是將其作為通配符使用E
注:用于模糊查詢, 和LIKE結合使用的通配符%、_、[]和[^],他們必須與LIKE結合才有意義,否則就是普通字符
%:表示任意個任意字符
_:表示1個任意字符
[]:表示可以是方括號里列出的任意一個字符
[^]:表示不在方括號里列出的任意一個字符
EXISTS
EXISTS關鍵字用于指定一個子查詢,檢測行的存在。 也就是說,如果EXISTS關鍵字指定的子查詢查得的結果集不為空,則執行主體的SELECT 查詢,否則返回的結果集為空。
SELECT *
FROM TABLE_NAME
WHERE EXISTS (SELECT * FROM TAB WHERE NAME='1')
GO
設置查詢字段的顯示名稱
1.使用AS關鍵字
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
注:作為字段名稱時,漢字可以不使用'',但是作為值的時候,必須使用''
統計函數
SUM()、AVG()、MAX()、MIN()、COUNT()
求和、平均數、最大值、最小值、記錄數
GROUP BY和HAVING
[GROUP BY 表達式]
[HAVING 表達式]
注:GROUP BY用來對數據進行分組, HAVING用來對分組的數據設置條件
SELECT *
FROM A
WHERE price is NOT NULL
GROUP BY type
HAVING COUNT(*) > 3
GO
ALL
在GROUP BY子句中使用,但在SELECT語句中包括WHERE子句時ALL才有意義
SELECT *
FROM B
WHERE 數量>10
GROUP BY ALL 單位
注:使用ALL關鍵字,那么查詢結果將包括由GROUP BY子句產生的所有組,即使某些組沒有符合搜索條件的行。
ORDER BY
SELECT *
FROM C
ORDER BY price DESC
注:子句中的字段數目沒有限制,ASC表示升序,DESC表示降序,空值被視為最低的值
多表查詢
SELECT pub.pub_id, title.id
FROM pub, title
UNION
UNION可以將多個SELECT語句的查詢結果組合到一起
使用UNION的結果集,必須具有相同的字段結構,字段數必須相等,響應的字段的數據類型必須兼容
CASE、INNER JOIN...ON...表達式
INSERT
INSERT [INTO] 表名或試圖 [字段列表] values 值列表
INSERT INTO 物資庫存記錄 (物資編號,物資名稱) VALUES ('LP12', '螺釘')
UPDATE
UPDATE 表名或視圖
SET {字段名={expression | default | null}}
[FROM {<table_source>}[,...]]
DELETE
DELETE 表或視圖
FROM 其他表
WHERE 表達式
視圖
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}
修改視圖
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}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。