Hệ quản trị SQL Server - Khóa chính

Khóa chính trong Sql Server

Khóa chính trong SQL Server là một trường đơn hoặc nhiều trường được sử dụng để xác định duy nhất một bản ghi. Bất kỳ trường nào của khóa chính không thể chứa giá trị null. Một bảng chỉ có thể có một khóa chính.

Bạn có thể tạo khóa chính bằng câu lệnh CREATE TABLE hoặc câu lệnh ALTER TABLE

Cú pháp:

CREATE TABLE table_name  
(   
  column1 datatype [ NULL | NOT NULL ] [ PRIMARY KEY ],  
  column2 datatype [ NULL | NOT NULL ],  
  ...  
);   

Hoặc

CREATE TABLE table_name  
(   
  column1 datatype [ NULL | NOT NULL ],  
  column2 datatype [ NULL | NOT NULL ],  
  ...  
  CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ... column_n)  
);   

Ví dụ:

Tạo một bảng "cricketers" có trường "cricketer_id"  là khóa chính

CREATE TABLE cricketers  
( cricketer_id INT PRIMARY KEY,  
  last_name VARCHAR(50) NOT NULL,  
  first_name VARCHAR(50) NOT NULL,  
  salary MONEY  
);   

Kết quả:

SQL Server primary key 1

Bạn có thể xem bảng đã tạo bằng cách sử dụng lệnh SELECT:

SELECT *   
FROM [javatpoint].[dbo].[cricketers]    

Kết quả:

SQL Server primary key 2

Trường cricketer_id là khóa chính.

Bạn cũng có thể tạo bảng có khóa chính bằng cách sử dụng cú pháp thứ hai:

Ví dụ:

CREATE TABLE cricketers2  
( cricketer_id INT,  
  last_name VARCHAR(50) NOT NULL,  
  first_name VARCHAR(50) NOT NULL,  
  salary MONEY,  
  CONSTRAINT cricketers2_pk PRIMARY KEY (cricketer_id)  
);   

Kết quả:

SQL Server primary key 3

Bạn có thể xem bảng đã tạo bằng cách sử dụng lệnh SELECT:

SELECT *   
FROM [javatpoint].[dbo].[cricketers2]    

Kết quả:

SQL Server primary key 4


Cách dùng nhiều trường làm khóa chính

Ví dụ:

CREATE TABLE cricketers3  
( last_name VARCHAR(50) NOT NULL,  
  first_name VARCHAR(50) NOT NULL,  
  salary MONEY,  
  CONSTRAINT cricketers3_pk PRIMARY KEY (last_name, first_name)  
);  

Kết quả:

SQL Server primary key 5

Bạn có thể xem bảng đã tạo bằng cách sử dụng lệnh SELECT

SELECT *   
FROM [javatpoint].[dbo].[cricketers3]    

Kết quả:

SQL Server primary key 6

Chúng ta lấy 2 trường  last_name và first_name làm khóa chính.


Tạo khóa chính dùng lệnh ALTER TABLE 

Bạn có thể sử dụng câu lệnh ALTER TABLE để tạo khóa chính chỉ trên một cột hoặc nhiều cột đã được xác định là NOT NULL.

Cú pháp:

ALTER TABLE table_name  
ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ... column_n);  

Ví dụ:

Tạo một khóa chính "cricketer_id"  trong bảng "cricketers2".

ALTER TABLE [javatpoint].[dbo].[cricketers2]  
ADD CONSTRAINT cricketers2_pk PRIMARY KEY (cricketer_id);  

Kết quả:

SQL Server primary key 7