SQL Server/T-SQL/Constraints/Nullable

Материал из SQL эксперт
Перейти к: навигация, поиск

Add a nullable column

   <source lang="sql">

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>

</source>
   
  


Changing a Column Definition: Make it Nullable

   <source lang="sql">

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>

</source>
   
  


Not Allowing Null Values in a Column

   <source lang="sql">

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

</source>