Contents
Trong bài này chúng ta sẽ tìm hiểu một lệnh đầu tiên trong ngôn ngữ T-SQL nói riêng và trong MySQL nói chung đó là lệnh tạo mới một bảng (Create Table). Trong bài này chúng ta có sử dụng một số kiểu dữ liệu trong MySQL nên để thiết lập kiểu dữ liệu cho các trường trong bảng.
Như bạn biết trong các mô hình như mô hình thực thể mối kết hợp ER thì chúng ta có tìm hiểu khái niệm về loại thực thể (entity), nếu liên hệ tới hệ cơ sở dữ liệu thì quy chung chúng lại thành một bảng (table).
Ví dụ đơn giản: Trong 1 mô hình website bán sản phẩm chúng ta có các loại thực thể như SẢN PHẨM, TIN TỨC, DANH MỤC, …etc.
Từ đó ta sẽ định hình được trong mô hình website bán hàng này sẽ cần tồn tại 3 bảng lớn là MenuUser (bảng danh mục), Product (bảng sản phẩm), Article (bảng tin tức).
Mỗi table chúng ta sẽ có một số thông tin riêng. Ví dụ như bảng Product chúng ta có:
- Mã sản phẩm
- Tên sản phẩm
- Thuộc danh mục
- Mô tả sản phẩm
- Kích hoạt (Nếu kích hoạt thì sản phẩm sẽ được đăng ra ngoài website)
1. Lệnh tạo bảng (Create Table) trong MySQL
Trước tiên chúng ta cần sử dụng lệnh tạo database để tạo mới một database, sau đó sử dụng lệnh USE để chọn database này (Bạn nào không biết câu lệnh USE trong mysql thì đọc lại bài khái quát về MySQL nhé)
1
|
CREATE DATABASE hocmysql |
Để tạo mới một bảng ta sử dụng cú pháp sau:
1
2
3
|
CREATE TABLE [IF NOT EXISTS] table_name( /*column_list*/ ) ENGINE=table_type |
Trong đó:
CREATE TABLE
: là từ khóa tạo bảng[IF NOT EXISTS]
: dòng này có thể có hoặc không, ý nghĩa của nó là nếu table này chưa tồn tại thì thực hiện tạo, còn nếu tồn tại rồi thì không tạo mới. Dùng câu lệnh này rất nhiều khi bạn Export và Import dữ liệu sau này.column_list
: là danh sách các cột của bảng, ví dụ như ProductID, ProductName, … Mỗi cột gồm hai thông số là tên cột và kiểu dữ liệu cho nó, nếu có nhiều cột thì sẽ dùng dấu phảy (,) để ngăn cách.
Ví dụ: ProductName varchar(150)ENGINE=table_type
: Là kiểu engine của bảng này.
Ví dụ: Cho bảng Product gồm có các thông tin sau:
- ProductID: Là mã sản phẩm kiểu INT (Là khoá chính của bảng Product)
- ProductName: Là tên sản phẩm kiểu kí tự có dấu maxlength=150 kí tự NVARCHAR(150)
- MenuUserID: Là danh sách các Id của các danh mục kiểu kí tự không dấu ngăn cách bằng dấu ,
- Description: Là mô tả chi tiết của sản phẩm kiểu TEXT (kiểu này có thể lưu cả HTML)
- IsActive: Trường này để kích hoạt sản phẩm (Kiểu BOOLEAN)
Lệnh tạo bảng như sau:
1
2
3
4
5
6
7
8
9
10
11
|
USE hocmysql; CREATE TABLE IF NOT EXISTS product (
ProductID int(11) NOT NULL, ProductName varchar(150) COLLATE utf8_unicode_ci NOT NULL, MenuUserID varchar(50) COLLATE utf8_unicode_ci NOT NULL, LanguageKey varchar(5) COLLATE utf8_unicode_ci NOT NULL, Description text COLLATE utf8_unicode_ci NOT NULL, IsActive tinyint(1) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
2. Gán giá trị mặc định cho table
Giá trị mặc định tức là khi bạn tạo một record mới mà bạn không nhập dữ liệu vào thì mặc nhiên nó sẽ lấy giá trị mặc định đó làm giá trị. Để gán giá trị mặc định thì ta sẽ dùng từ khóa DEFAULT đằng sau mỗi fields.
Ví dụ:
1
3
4
5
6
7
8
9
10
11
|
USE hocmysql; CREATE TABLE IF NOT EXISTS product (
ProductID int(11) NOT NULL, ProductName varchar(150) DEFAULT 'ABC' COLLATE utf8_unicode_ci NOT NULL,MenuUserID varchar(50) COLLATE utf8_unicode_ci NOT NULL, LanguageKey varchar(5) COLLATE utf8_unicode_ci NOT NULL, Description text COLLATE utf8_unicode_ci NOT NULL, IsActive tinyint(1) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
3. Thiết lập Null và Not Null cho Column
Nếu bạn muốn một column nào đó mỗi khi nhập dữ liệu thì bắt buộc phải nhập cho nó thì bạn sẽ sử dụng từ khóa NOT NULL. Ngược lại thì bạn sẽ dùng từ khóa NULL (mặc định là NULL nếu ban không truyền)
Ví dụ:
1
3
4
5
6
7
8
9
10
11
|
USE hocmysql; CREATE TABLE IF NOT EXISTS product (
ProductID int(11) NOT NULL, ProductName varchar(150) DEFAULT 'ABC' COLLATE utf8_unicode_ci NOT NULL,MenuUserID varchar(50) COLLATE utf8_unicode_ci NOT NULL, LanguageKey varchar(5) COLLATE utf8_unicode_ci NOT NULL, Description text COLLATE utf8_unicode_ci NOT NULL, IsActive tinyint(1) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
Xóa bảng trong MYSQL (DROP TABLE)
Để xóa bảng ta sử dụng cú pháp: DROP TABLE tb_name
.
Ví dụ:
1
|
DROP TABLE product |
#Lời kết
Thông qua bài học này mình mong muốn các bạn có thể tạo được Table trong MySQL. Tạo tiền đề để các bạn có thể học bài tiếp theo.
#Chú ý
Trong tất cả các bài học hướng dẫn về MySQL cơ bản mình đều xoay quanh một cơ sở dữ liệu là hocmysql. Nên các bạn đọc bài tạo cơ sở dữ liệu đề mô tại đây để thực hành trong các bài trong khoá học này nhé!.