麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Transact-SQL三值邏輯

2024-07-21 02:51:07
字體:
來源:轉載
供稿:網友
Transact-SQL三值邏輯

/*===========================<一>==========================

在SQL中邏輯表達式的值有三種:   1.TRUE   2.FALSE  3.UNKNOWNUNKNOWN邏輯值通常出現在包含NULL的邏輯表達式中,例如:  1. NULL > 0  2. NULL = NULL  3. 1 + NULL = X

============================<二>==========================

1. 在所有的查詢篩選器中【ON、WHERE、HAVING】,都把UNKNOWN當 做FALSE處理;2. 在CHECK約束中UNKNOWN的值被當做TRUE處理;3. 在UNIQUE約束、排序操作、分組操作UNKNOWN的值被當做TRUE處理; ============================<三>==========================*/

首先,你的測試數據庫中創建測試表,腳本如下:

USE Study --/*我的測試數據庫是Study,這里需要修改成你的數據庫名。*/GOCREATE TABLE Salary(    SalaryID NVARCHAR(36) NOT NULL    ,EmployeeID NVARCHAR(36)     ,Salary INTCONSTRAINT [PK_Salary] PRIMARY KEY CLUSTERED (    [SalaryID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOALTER TABLE [dbo].[Salary] WITH NOCHECK ADD CONSTRAINT [CK_Salary] CHECK (([Salary] > 0))GOALTER TABLE [dbo].[Salary] CHECK CONSTRAINT [CK_Salary]GOALTER TABLE Salary ADD CONSTRAINT AK_Employee UNIQUE (EmployeeID);GO
View Code

然后,向測試表中插入數據。

--插入正常數據INSERT INTO [Study].[dbo].[Salary]    ([SalaryID]    ,[EmployeeID]    ,[Salary])VALUES    (NEWID()    ,NEWID()    ,4800)GO--插入EmployeeID為NULL的值INSERT INTO [Study].[dbo].[Salary]    ([SalaryID]    ,[EmployeeID]    ,[Salary])VALUES    (NEWID()    ,null    ,5600)GO--插入兩條SALARY為NULL的值INSERT INTO [Study].[dbo].[Salary]    ([SalaryID]    ,[EmployeeID]    ,[Salary])VALUES    (NEWID()    ,NEWID()    ,null)GOINSERT INTO [Study].[dbo].[Salary]    ([SalaryID]    ,[EmployeeID]    ,[Salary])VALUES    (NEWID()    ,NEWID()    ,null)GO
View Code

查詢一下,插入數據以后的表中的數據情況:

SELECT * FROM [Salary]
View Code

表數據:

SalaryIDEmployeeIDSalary
2D5E8F91-8312-4FA4-BF0C-2643E688555DNULL5600
6A22894A-9D7B-4964-9E1B-EF1307D86AFA70AD8361-B392-41A3-B30F-6F1B04281808NULL
B6D65637-D65E-4E62-BD15-741BD1F8F8C0CAA18E7E-A792-45B8-82CE-80F719359F62NULL
F0FDEA1F-1814-406C-A91C-146751B6BD922BA81F41-B9BC-4F2A-ABAA-662D1B1ED0324800

1. 驗證Check約束,建表時我加了Salary的Check約束,Salary > 0;

INSERT INTO [Study].[dbo].[Salary]    ([SalaryID]    ,[EmployeeID]    ,[Salary])VALUES    (NEWID()    ,NEWID()    ,-1000)GO
View Code

分析

  我插入-1000時有如下消息提示(說明我的約束是起作用的):

  The INSERT statement conflicted with the CHECK constraint "CK_Salary".   The conflict occurred in database "Study", table "dbo.Salary", column 'Salary'.

  前面我已經插入了兩條Salary為NULL的記錄,說明在Check約束中NULL > 0的邏輯值(UNKNOWN)  是被視為TRURE值。

2. 在查詢篩選器中,UNKNOWN被視作FALSE;

SELECT * FROM SalaryWHERE Salary > 4000
View Code

分析

  查詢結果為兩條數據,Salary分別為5600和4800.而兩條Salary為NULL的沒有被查詢出來。  說明NULL > 4000的邏輯值(UNKNOWN)被視為FALSE.

3. GROUP BY/ORDER BY中UNKNOWN被視作TRURE;

SELECT Salary FROM SalaryGROUP BY SalarySELECT Salary FROM SalaryORDER BY Salary ASC
View Code

查詢結果分別為:

1.分組查詢

Salary
NULL
4800
5600

2.排序查詢

Salary
NULL
NULL
4800
5600

分析:  根據以下查詢結果我們可以分析出:NULL == NULL的邏輯值(UNKNOWN),被視作TURE處理。

4. UNIQUE約束中,UNKNOWN被視作FALSE;EmployeeID已經加了UNIQUE約束,前面我已經

 插入了一條EmployeeID為NULL的值,下面我再插入一條EmployeeID為NULL的值的記錄:

INSERT INTO [Study].[dbo].[Salary]    ([SalaryID]    ,[EmployeeID]    ,[Salary])VALUES    (NEWID()    ,null    ,5600)GO
View Code

執行結果,提示如下信息:

Violation of UNIQUE KEY constraint 'AK_Employee'. Cannot insert duplicate key in object 'dbo.Salary'.

分析:  則說明 NULL == NULL的邏輯值(UNKNOWN),被視作FALSE處理。===========================<End>============================


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蜜桃精品视频 | 久久久久亚洲精品 | 中文字幕精品久久 | av在线网站观看 | 国产精品视频一区二区三区四区国 | 久久久国产精品免费观看 | www.91sao | 精品国产一区二区三区免费 | 色淫视频 | 激情夜色 | 九九热精品免费 | 一级一级一级一级毛片 | 精品成人在线 | 一区二区三区欧洲 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 5xsq在线视频 | 欧美综合成人 | 激情在线视频 | a级高清免费毛片av在线 | 欧美性videofree精品 | 免费看一级视频 | 91 在线免费观看 | 亚洲精久久 | 国产免费一区二区三区在线能观看 | 一级做人爱c黑人影片 | 国产精品久久久久久久久久 | 韩国一大片a毛片 | 午夜视频在线 | 日韩在线激情 | 黄色一级毛片免费看 | 欧美性猛交xxxxx按摩国内 | 国产在线精品一区二区三区不卡 | 午夜天堂在线视频 | 午夜精品影院 | 黄色网址进入 | 久久宗合色 | 一区二区三区欧美在线 | 国产一级一国产一级毛片 | 蜜桃麻豆视频 | 国产毛片毛片 | 日本黄色a视频 |