[SQL Server] Primary Key trong SQL

Bài này bạn sẽ được giới thiệu cách tạo khóa chính (Primary Key) thể hiện qua các hệ hệ quản trị CSDL như SQL Serer, MySQL, Oracle, Access.
Primary key là một hoặc nhiều column co tính chất đặc biệt đó là dùng để phân biệt sự khác nhau giữa các dòng dữ liệu, vì vậy giá trị của nó phải là duy nhất. Mỗi table chỉ có một primary key duy nhất, mỗi primary key có thể có một hoặc nhiều column.

1. Tạo Primary Key bằng Create Table

Các ví dụ dưới đây là cách tạo Primary Key.
REATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);
SQL Server / Oracle / MS Access
1
2
3
4
5
6
CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);
Nếu bạn muốn đặt tên cho Primary Key để tiện cho việc quản lý sau này thì hãy sử dụng cú pháp sau:
MySQL / SQL Server / Oracle / MS Access
1
2
3
4
5
6
7
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
Việc đặt tên này rất có lợi bởi sau này bạn có thể dễ dàng xóa khóa chính bằng câu lệnh SQL.

2. Tạo Primary Key bằng Alter Table

Giả sử ta cần tạo khóa chính cho column ID nằm trong bảng Person thì cách làm như sau:
MySQL / SQL Server / Oracle / MS Access
1
2
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
Trường hợp khóa chính có nhiều column thì bạn sẽ viết các column cách nhau bởi dấu phẩy.
MySQL / SQL Server / Oracle / MS Access
1
2
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
Lưu ý: Khi bạn sử dụng lệnh Alter Table để tạo khóa chính thì các column đó phải đặt là NOT NULL, nếu không sẽ bị báo lỗi vì khóa chính không chấp nhận giá trị NULL.

3. Xóa Primary Key 

Để xóa khóa chính Primary Key thì ta sử dụng lệnh Alter Table.
MySQL
1
2
ALTER TABLE Persons
DROP PRIMARY KEY;
SQL Server / Oracle / MS Access
1
2
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
Như vậy với MySQL thì ta không cần tên của khóa chính.

Nhận xét

Bài đăng phổ biến từ blog này

[SQL Server] Toán tử LIKE và NOT LIKE trong SQL

[Javascript] Object constructor

[SQL Server] Lọc dữ liệu trùng với DISTINCT trong SQL