Tạo bảng trong SQL - mệnh đề CREATE TABLE
Một cơ sở dữ liệu có thể chứa trong nó hàng trăm bảng, mỗi bảng có trong nó các quy tắc riêng nằm trong mô tả cơ sở dữ liệu. Bảng xây dựng theo cấu trúc gồm cột và hàng. Các cột của bảng có thể thiết lập lưu giá trị kiểu dữ liệu cụ thể như là số, chữ, ngày tháng thậm chí là file (chuỗi nhị phân).
Mệnh đề CREATE TABLE trong SQL dùng để tạo ra bảng mới. Quy tắc cơ bản nó phải đưa ra định nghĩa tên các cột và kiểu dữ liệu của cột. Cú pháp cơ bản nhất như sau:
CREATE TABLE table_name ( column_name1 data_type1(size), column_name2 data_type2(size), column_name3 data_type3(size), .... columnN data_typeN(size) )
- column_name là tên các cột muốn tạo trong bảng
- data_type tham số định nghĩa kiểu dữ liệu mà cột lưu trữ, ví dụ int lưu trữ số nguyên
- size chỉ ra chiều dài lớn nhất của dữ liệu nếu kiểu dữ liệu đó yêu cầu (cần tham khảo các kiểu dữ liệu tùy hệ quản trị CSDL).
Ví dụ 1: Tạo bảng mới trong SQL
Hãy tạo bảng có tên là Persons, bảng đó có các cột: PersionID dữ liệu số nguyên, LastName, FirstName, Address, City là text dài 255 ký tự
CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
Sau khi thi hành lệnh trên, SQL sẽ tạo ra bảng, bạn có thể dùng các lệnh SQL khác nhau đã biết để kiểm tra.
Ở đây có một file CSDL mẫu dạng SQLite, bạn có thể tải về nghiên cứu, thực hành: CSDL SQLite mẫu. Hoặc sử dụng trực tiếp công cụ Online: Chạy SQL
Trong câu lệnh trên bạn có thấy đã sử dụng int
và varchar
là kiểu dữ liệu cho cột
Kiểu dữ liệu trong các hệ quản trị CSDL - SQL
Trong SQL có nhiều kiểu dữ liệu, mỗi hệ CSDL khác nhau (SQLServer, MySQL, Access, SQLite ...) lại thêm vào một số dữ liệu riêng nên khi sử dụng hệ CSDL cần tham khảo hướng dẫn của hệ CSDL đó để biết cụ thể kiểu dữ liệu mà nó hỗ trợ, dưới đây là một số hay dùng
Kiểu dữ liệu SQLite
SQLite cung cấp hệ thống kiểu động, có không bắt buộc chỉ định kiểu khi tạo cột cho bảng, kiểu của cột căn
cứ vào kiểu giá trị lưu trữ vào cột. Các dữ liệu lưu vào cột sẽ được SQLite phân tích và lưu trữ là
Storage Class
(Storage Class là cơ chế lưu dữ liệu của SQLite), có 5 Storage Class:
Storage Class | Ý nghĩa |
---|---|
NULL | Không có thông tin gì |
INTEGER | Các số nguyên, có thể có 1, 2,3, 4, 8 byte. |
REAL | Các số thực 8 byte |
TEXT | Dữ liệu chuỗi |
BLOB | Dữ liệu nhị phân |
Các kiểu dữ liệu trong chuẩn SQL được sử dụng thì SQLite tự động sử dụng Storage Classe tương ứng, vậy bạn có thể sử dụng các kiểu dữ liệu sau
Kiểu dữ liệu | Storage Class |
---|---|
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8 | INTEGER |
CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB | TEXT |
BLOB | BLOB |
REAL DOUBLE DOUBLE PRECISION FLOAT | REAL |
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME | NUMERIC (INTEGER và REAL) |
Tham khảo danh sách đầy đủ các kiểu dữ liệu SQLite hỗ trợ tại: SQLite
Kiểu dữ liệu trong MySQL
Tham khảo chi tiết tại: kiểu dữ liệu trong MySQL
Kiểu dữ liệu MS SQL Server
Tham khảo chi tiết tại: kiểu dữ liệu trong SQL Server
Kiểu dữ liệu MS Access
Tham khảo danh sách đầy đủ các kiểu dữ liệu MS Access hỗ trợ tại: MS Access
Khóa chính Primary Key trong SQL, Sử dụng Pk khi tạo bảng
Khóa chính (Pk) là giá trị duy nhất cho một bản ghi (dòng) trong bảng. Một bảng có thể định nghĩa một cột là khóa chính Primary, Khóa chính giúp cho việc tìm kiếm, lọc dữ liệu. Hài dòng dữ liệu khác nhau của bản, thì khóa chính sẽ khác nhau.
Để thiết lập khóa chính khi tạo bảng sử dụng thêm: PRIMARY KEY(tên-cột)
Ví dụ tạo bảng trên, sửa lại và thiết lập PersonID là khóa chính
CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY(PersonID) );
Nếu muốn thiết lập cột PersonID không được gán NULL thì cho thêm NOT NULL
,
giá trị cột tự gán tăng dần thì thêm AUTO_INCREMENT
PersonID int NOT NULL AUTO_INCREMENT
Cú pháp trên áp dụng được cho SQLite, MySQL. Còn đối với SQL Server bạn tạo khóa chính với cú pháp như sau: tại cột cần thiết lập khóa chính cho thêm vào PRIMARY KEY
CREATE TABLE Persons ( PersonID int PRIMARY KEY, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
Trong SQL Server nếu viết là cột PersonID là
PersonID int NOT NULL PRIMARY KEY
Cột đó là khóa chính và không được phép để NULL.
Trong SQL Server nếu viết là cột PersonID là
PersonID int IDENTITY(1,1) PRIMARY KEY
Cột đó tự động gán giá trị tăng dần.
Chú ý nếu bảng Persons đã có trong database! Bạn có thể xóa nó bằng DROP để tạo lại (hoặc thay đổi cấu trúc bảng đang tồn tại để tránh mất dữ liệu với TABLE ALTER)
DROP TABLE Persons
Sau khi chạy lệnh trên, bảng được tạo và lức này bạn có thể sử dụng INSERT INTO để chèn dữ liệu