Question: Is it required to make foreign key column in a table as NOT NULL,
If we not written explicitly foreign key column as not null what it will be?
Can it contain null values?

And what is the Difference between following two statements:

```
[PhoneId] [int] NOT NULL FOREIGN KEY REFERENCES [dbo].[tbl_PhoneNumber](PhoneNumberId)
[PhoneId] [int] FOREIGN KEY REFERENCES [dbo].[tbl_PhoneNumber](PhoneNumberId)

```

Answer: 
> 
> Is it required to make foreign key column in a table as NOT NULL,
> 
> 
> 

No it is not required. MSDN says that:-

> 
> When a value other than NULL is entered into the column of a FOREIGN
>  KEY constraint, the value must exist in the referenced column;
>  otherwise, a foreign key violation error message is returned. To make
>  sure that all values of a composite foreign key constraint are
>  verified, specify NOT NULL on all the participating columns.
> 
> 
> 

So the simple answer to your question is NO IT IS NOT REQUIRED.

A foreign key attribute can contain NULL values as well.

Your second definition will allow `Nulls` in the column. 

From [here](http://blog.sqlauthority.com/2008/09/08/sql-server-%E2%80%93-2008-creating-primary-key-foreign-key-and-default-constraint/):-

> 
> When a FOREIGN KEY constraint is added to an existing column or
>  columns in the table SQL Server, by default checks the existing data
>  in the columns to ensure that all values, except NULL, exist in the
>  column(s) of the referenced PRIMARY KEY or UNIQUE constraint.
> 
> 
> 

Also check **[Foreign Key Constraints](http://technet.microsoft.com/en-us/library/ms189049.aspx)**
It is not required. A foreign key attribute without `NOT NULL` can contain `NULL` values, and this can be used to indicate that no such tuple in the referenced relation is applicable.