GO
CREATE TABLE xCount
(pkey1 INT IDENTITY NOT NULL
CONSTRAINT pk_xCount PRIMARY KEY,
Col1 int NULL)
GO
INSERT xCount (Col1) VALUES (10)
GO
INSERT xCount (Col1) VALUES (15)
GO
INSERT xCount (Col1) VALUES (20)
GO
INSERT xCount (Col1) VALUES (NULL)
GO
SELECT AVG(Col1) AvgWithoutIsNullFunctionOnCol1,
AVG(ISNULL(Col1,0)) AvgWithIsNullFunctionOnCol1,
COUNT(Col1) NoIsNullFunctionOnCol1 ,
COUNT(ISNULL(Col1,0)) UsingIsNullFunctionOnCol1,
Count(*) UsingAsterisk
FROM xCount
GO
DROP TABLE xCount
GO
SET NOCOUNT ON
GO
CREATE TABLE Parent
(pkey1 INT IDENTITY NOT NULL
CONSTRAINT pkParent PRIMARY KEY,
col1 INT NULL)
GO
INSERT Parent (col1) VALUES (284)
GO
INSERT Parent (col1) VALUES (326)
GO
以下代码则创建子表,并在引用父表的列中插入一个空值。
CREATE TABLE Child
(pkey1 INT IDENTITY
CONSTRAINT pkChild PRIMARY KEY,
Parentpkey1 INT NULL
CONSTRAINT fkChildParent FOREIGN KEY
REFERENCES Parent(pkey1),
col1 INT NULL)
GO
INSERT Child (Parentpkey1, col1) VALUES (null,2)
GO
SET NOCOUNT ON
GO
CREATE TABLE parent (pkey1 INT IDENTITY NOT NULL, pkey2 INT NOT NULL, col1 INT NULL,
CONSTRAINT pk_parent PRIMARY KEY NONCLUSTERED ( pkey1, pkey2))
GO
INSERT parent (pkey2) VALUES ( 2 )
INSERT parent (pkey2) VALUES ( 85 )
INSERT parent (pkey2) VALUES ( 41 )
INSERT parent (pkey2) VALUES ( 11 )
GO
SELECT * FROM parent
GO
CREATE TABLE child (cpkey1 INT IDENTITY NOT NULL
CONSTRAINT pk_child PRIMARY KEY NONCLUSTERED (cpkey1),
pkey1 INT NULL, pkey2 INT NULL, col1 INT NULL,
CONSTRAINT fk_parent_child FOREIGN KEY (pkey1, pkey2)
REFERENCES parent (pkey1, pkey2))
GO
INSERT child (pkey1, pkey2) VALUES ( null, 85 )
GO
SELECT * FROM child
GO
DELETE child
GO
ALTER TABLE child WITH NOCHECK
ADD CONSTRAINT ck_fk_parent_child CHECK
((pkey1 IS NOT NULL AND pkey2 IS NOT NULL) OR
(pkey1 IS NULL AND pkey2 IS NULL) )
GO
INSERT child (pkey1, pkey2) VALUES ( null, 11 )
GO
DROP TABLE child, parent
GO