- Giới thiệu SQL
- SQL là gì
- Các khái niệm RDBMS
- Database là gì
- Cú pháp SQL cơ bản
- Kiểu dữ liệu
- Toán tử
- Biểu thức (Expression)
- Lệnh Create Database
- Lệnh Drop Database
- Lệnh Select Database
- Lệnh Rename Database
- Lệnh Create Table
- Lệnh Drop Table
- Lệnh Delete Table
- Lệnh Rename Table
- Lệnh Truncate Table
- Lệnh ALter Table
- Sao chép bảng
- Bảng tạm (Temp Table)
- Truy vấn Update
- Truy vấn Insert
- Truy vấn Select
- Mệnh đề Order By
- Mệnh đề Group By
- Từ khóa Distinct
- Sắp xếp kết quả
- Mệnh đề Where
- Mệnh đề AND & OR
- Mệnh đề WITH
- Mệnh đề Like
- Mệnh đề Top
- Mệnh đề Union
- Giá trị NULL
- Cú pháp Alias
- Chỉ mục (Index)
- Sử dụng View
- Mệnh đề Having
- SQL Transaction
- Toán tử Wildcard
- Truy vấn con
- Sử dụng Sequence
- Xử lý bản sao
- SQL Injection
- Ràng buộc (Constraint)
- Ràng buộc NOT NULL
- Ràng buộc DEFAULT
- Ràng buộc UNIQUE
- Ràng buộc PRIMARY KEY
- Ràng buộc FOREIGN KEY
- Ràng buộc CHECK
- Ràng buộc INDEX
- Sử dụng Join
- Inner Join
- Left Join
- Right Join
- Full Join
- Self Join
- Cartesian Join
- Hàm hữu ích
- Hàm xử lý Date
- Hàm xử lý chuỗi
- Hàm xử lý số
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- Tuning DB
- Tài liệu SQL tham khảo
Mô phỏng bảng trong SQL
Có một tình huống khi bạn cần một bản sao thực sự của một bảng và các lệnh CREATE TABLE … SELECT … không phù hợp với mục đích của bạn, bởi vì bản sao phải bao gồm cùng chỉ mục, cùng giá trị mặc định, và …
Nếu bạn đang sử dụng MySQL RDBMS, bạn có thể xử lý tình huống này theo các bước sau:
Sử dụng lệnh SHOW CREATE TABLE để lấy một lệnh CREATE TABLE mà xác định cấu trúc, chỉ mục và tất cả thông tin của bảng nguồn.
Sửa đổi lệnh để thay đổi tên bảng thành tên một bảng mô phỏng và thực thi lệnh. Theo cách này, bạn sẽ có bảng mô phỏng thực sự.
(Tùy ý) Nếu bạn cần sao các nội dung bảng, bạn thông báo một lệnh INSERT INTO … SELECT.
Ví dụ
Bạn thử ví dụ sau để tạo một bảng mô phỏng cho VIETJACK_DB có cấu trúc như sau:
Bước 1
Lấy toàn bộ cấu trúc của bảng:
SQL> SHOW CREATE TABLE VIETJACK_DB \G; *************************** 1. row *************************** Table: VIETJACK_DB Create Table: CREATE TABLE `VIETJACK_DB` ( `vietjack_id` int(11) NOT NULL auto_increment, `vietjack_title` varchar(100) NOT NULL default '', `vietjack_author` varchar(40) NOT NULL default '', `submission_date` date default NULL, PRIMARY KEY (`vietjack_id`), UNIQUE KEY `AUTHOR_INDEX` (`vietjack_author`) ) TYPE=MyISAM 1 row in set (0.00 sec)
Bước 2
Thay tên bảng này và tạo bảng khác.
SQL> CREATE TABLE `CLONE_TBL` ( -> `vietjack_id` int(11) NOT NULL auto_increment, -> `vietjack_title` varchar(100) NOT NULL default '', -> `vietjack_author` varchar(40) NOT NULL default '', -> `submission_date` date default NULL, -> PRIMARY KEY (`vietjack_id`), -> UNIQUE KEY `AUTHOR_INDEX` (`vietjack_author`) -> ) TYPE=MyISAM; Query OK, 0 rows affected (1.80 sec)
Bước 3
Sau khi thực thi bước 2, bạn sẽ mô phỏng một bảng trong Database. Nếu bạn muốn sao chép dữ liệu từ bảng cũ, thì bạn có thể thực hiện bằng việc sử dụng lệnh INSERT INTO … SELECT.
SQL> INSERT INTO CLONE_TBL (vietjack_id, -> vietjack_title, -> vietjack_author, -> submission_date) -> SELECT vietjack_id,vietjack_title, -> vietjack_author,submission_date, -> FROM VIETJACK_DB; Query OK, 3 rows affected (0.07 sec) Records: 3 Duplicates: 0 Warnings: 0
Cuối cùng, bạn sẽ có bảng mô phỏng thực sự như bạn muốn có.