SQL Server/T-SQL/Constraints/Nullable
Версия от 13:46, 26 мая 2010; (обсуждение)
Add a nullable column
4>
5> CREATE TABLE Employees
6> (
7> EmployeeID int IDENTITY NOT NULL,
8> FirstName varchar(25) NOT NULL,
9> MiddleInitial char(1) NULL,
10> LastName varchar(25) NOT NULL,
11> Title varchar(25) NOT NULL,
12> SSN varchar(11) NOT NULL,
13> Salary money NOT NULL,
14> PriorSalary money NOT NULL,
15> LastRaise AS Salary - PriorSalary,
16> HireDate smalldatetime NOT NULL,
17> TerminationDate smalldatetime NULL,
18> ManagerEmpID int NOT NULL,
19> Department varchar(25) NOT NULL
20> )
21> GO
1>
2>
3> EXEC sp_help Employees
4> GO
Name Owner
Type Created_datetime
-------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------
--------------------------------------------------------- ------------------------------- -----------------------
Employees dbo
user table 2008-08-17 13:06:12.460
Column_name Type
Computed Length Prec Scale Nullable TrimTrailingBlanks FixedLenNu
llInSource Collation
-------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------
--------------------------------------------------------- ----------------------------------- ----------- ----- ----- ----------------------------------- ----------------------------------- ----------
------------------------- --------------------------------------------------------------------------------------------------------------------------------
EmployeeID int
no 4 10 0 no (n/a) (n/a)
NULL
FirstName varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
MiddleInitial char
no 1 yes no yes
SQL_Latin1_General_CP1_CI_AS
LastName varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
Title varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
SSN varchar
no 11 no no no
SQL_Latin1_General_CP1_CI_AS
Salary money
no 8 19 4 no (n/a) (n/a)
NULL
PriorSalary money
no 8 19 4 no (n/a) (n/a)
NULL
LastRaise money
yes 8 19 4 yes (n/a) (n/a)
NULL
HireDate smalldatetime
no 4 no (n/a) (n/a)
NULL
TerminationDate smalldatetime
no 4 yes (n/a) (n/a)
NULL
ManagerEmpID int
no 4 10 0 no (n/a) (n/a)
NULL
Department varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
Identity Seed Increment
Not For Replication
-------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- ------------------------------
---------- -------------------
EmployeeID 1
1 0
RowGuidCol
--------------------------------------------------------------------------------------------------------------------------------
No rowguidcol column defined.
Data_located_on_filegroup
--------------------------------------------------------------------------------------------------------------------------------
PRIMARY
The object "Employees" does not have any indexes, or you do not have permissions.
No constraints are defined on object "Employees", or you do not have permissions.
No foreign keys reference table "Employees", or you do not have permissions on referencing tables.
Table is referenced by views
--------------------------------------------------------------------------------------------------------------------------------
1>
2> ALTER TABLE Employees
3> ADD
4> PreviousEmployer varchar(30) NULL
5> GO
1>
2> EXEC sp_help Employees
3> GO
Name Owner
Type Created_datetime
-------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------
--------------------------------------------------------- ------------------------------- -----------------------
Employees dbo
user table 2008-08-17 13:06:12.460
Column_name Type
Computed Length Prec Scale Nullable TrimTrailingBlanks FixedLenNu
llInSource Collation
-------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------
--------------------------------------------------------- ----------------------------------- ----------- ----- ----- ----------------------------------- ----------------------------------- ----------
------------------------- --------------------------------------------------------------------------------------------------------------------------------
EmployeeID int
no 4 10 0 no (n/a) (n/a)
NULL
FirstName varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
MiddleInitial char
no 1 yes no yes
SQL_Latin1_General_CP1_CI_AS
LastName varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
Title varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
SSN varchar
no 11 no no no
SQL_Latin1_General_CP1_CI_AS
Salary money
no 8 19 4 no (n/a) (n/a)
NULL
PriorSalary money
no 8 19 4 no (n/a) (n/a)
NULL
LastRaise money
yes 8 19 4 yes (n/a) (n/a)
NULL
HireDate smalldatetime
no 4 no (n/a) (n/a)
NULL
TerminationDate smalldatetime
no 4 yes (n/a) (n/a)
NULL
ManagerEmpID int
no 4 10 0 no (n/a) (n/a)
NULL
Department varchar
no 25 no no no
SQL_Latin1_General_CP1_CI_AS
PreviousEmployer varchar
no 30 yes no yes
SQL_Latin1_General_CP1_CI_AS
Identity Seed Increment
Not For Replication
-------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- ------------------------------
---------- -------------------
EmployeeID 1
1 0
RowGuidCol
--------------------------------------------------------------------------------------------------------------------------------
No rowguidcol column defined.
Data_located_on_filegroup
--------------------------------------------------------------------------------------------------------------------------------
PRIMARY
The object "Employees" does not have any indexes, or you do not have permissions.
No constraints are defined on object "Employees", or you do not have permissions.
No foreign keys reference table "Employees", or you do not have permissions on referencing tables.
Table is referenced by views
--------------------------------------------------------------------------------------------------------------------------------
1>
2> drop table Employees;
3> GO
1>
Changing a Column Definition: Make it Nullable
5>
6>
7> CREATE TABLE employee(
8> id INTEGER NOT NULL PRIMARY KEY,
9> first_name VARCHAR(10),
10> last_name VARCHAR(10),
11> salary DECIMAL(10,2),
12> start_Date DATETIME,
13> region VARCHAR(10),
14> city VARCHAR(20),
15> managerid INTEGER
16> );
17> GO
1> INSERT INTO employee VALUES (1, "Jason" , "Martin", 5890,"2005-03-22","North","Vancouver",3);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (2, "Alison", "Mathews",4789,"2003-07-21","South","Utown",4);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (3, "James" , "Smith", 6678,"2001-12-01","North","Paris",5);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (4, "Celia" , "Rice", 5567,"2006-03-03","South","London",6);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (5, "Robert", "Black", 4467,"2004-07-02","East","Newton",7);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (6, "Linda" , "Green" , 6456,"2002-05-19","East","Calgary",8);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (7, "David" , "Larry", 5345,"2008-03-18","West","New York",9);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (8, "James" , "Cat", 4234,"2007-07-17","West","Regina",9);
2> GO
(1 rows affected)
1> INSERT INTO employee VALUES (9, "Joan" , "Act", 6123,"2001-04-16","North","Toronto",10);
2> GO
(1 rows affected)
1>
2> select * from employee;
3> GO
id first_name last_name salary start_Date region city managerid
----------- ---------- ---------- ------------ ----------------------- ---------- -------------------- -----------
1 Jason Martin 5890.00 2005-03-22 00:00:00.000 North Vancouver 3
2 Alison Mathews 4789.00 2003-07-21 00:00:00.000 South Utown 4
3 James Smith 6678.00 2001-12-01 00:00:00.000 North Paris 5
4 Celia Rice 5567.00 2006-03-03 00:00:00.000 South London 6
5 Robert Black 4467.00 2004-07-02 00:00:00.000 East Newton 7
6 Linda Green 6456.00 2002-05-19 00:00:00.000 East Calgary 8
7 David Larry 5345.00 2008-03-18 00:00:00.000 West New York 9
8 James Cat 4234.00 2007-07-17 00:00:00.000 West Regina 9
9 Joan Act 6123.00 2001-04-16 00:00:00.000 North Toronto 10
(9 rows affected)
1>
2>
3> ALTER TABLE employee
4> ALTER COLUMN region nchar(20) NULL
5>
6> select * from employee;
7> GO
id first_name last_name salary start_Date region city manager
id
----------- ---------- ---------- ------------ ----------------------- -------------------- -------------------- -------
----
1 Jason Martin 5890.00 2005-03-22 00:00:00.000 North Vancouver
3
2 Alison Mathews 4789.00 2003-07-21 00:00:00.000 South Utown
4
3 James Smith 6678.00 2001-12-01 00:00:00.000 North Paris
5
4 Celia Rice 5567.00 2006-03-03 00:00:00.000 South London
6
5 Robert Black 4467.00 2004-07-02 00:00:00.000 East Newton
7
6 Linda Green 6456.00 2002-05-19 00:00:00.000 East Calgary
8
7 David Larry 5345.00 2008-03-18 00:00:00.000 West New York
9
8 James Cat 4234.00 2007-07-17 00:00:00.000 West Regina
9
9 Joan Act 6123.00 2001-04-16 00:00:00.000 North Toronto
10
(9 rows affected)
1>
2> drop table employee;
3> GO
1>
Not Allowing Null Values in a Column
5> CREATE TABLE T (
6> int1 int,
7> bit1 bit NOT NULL,
8> varchar1 varchar(3),
9> dec1 dec(5,2),
10> cmp1 AS (int1 + bit1)
11> )
12> GO
1>
2> drop table t;
3> GO