Học SQLite cơ bản

Bài 5: Create, Attach, Detech Database trong SQLite

Trong nội dung bài học này, chúng ta sẽ tìm hiểu những thao tác cơ bản với Database trong SQLite như Create, Attach, Detech trong SQLite.

1. Create Database

Lệnh sqlite3 trong SQLite được sử dụng để tạo SQLite Database mới. Bạn không cần được trao bất kỳ quyền đặc biệt nào để tạo một cơ sở dữ liệu.
Cú pháp cơ bản của lệnh sqlite3 là:
$sqlite3 DatabaseName.db
Tất nhiên, tên của cơ sở dữ liệu nên luôn luôn là duy nhất bên trong RDBMS.
Ví dụ
Nếu bạn muốn tạo một cơ sở dữ liệu mới có tên là testDB.db, thì lệnh sqlite3 sẽ như sau:
$sqlite3 testDB.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
Lệnh trên sẽ tạo một file là testDB.db trong thư mục hiện tại. File này sẽ được sử dụng như là Database với SQLite Engine. Bạn sẽ chú ý thấy rằng, sau khi tạo cơ sở dữ liệu thành công, lệnh sqlite3 sẽ cung cấp một dòng nhắc sqlite>.
Khi một cơ sở dữ liệu đã được tạo, bạn có thể kiểm tra nó trong danh sách các cơ sở dữ liệu bởi sử dụng lệnh .databases trong SQLite, như sau:
sqlite> .databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
Bạn có thể sử dụng lệnh .quit trong SQLite để thoát khỏi dòng nhắc lệnh, như sau:
sqlite> .quit
$
Lệnh .dump trong SQLite
Bạn có thể sử dụng lệnh .dump để xuất toàn bộ Database vào trong một text file bởi sử dụng lệnh đó tại dòng nhắc lệnh, như sau:
$sqlite3 testDB.db .dump > testDB.sql
Lệnh trên sẽ chuyển đổi toàn bộ nội dung của cơ sở dữ liệu testDB.db vào trong một text file tên là testDB.sql. Bạn có thể thực hiện việc phục hồi từ testDB.sql đã tạo theo cách đơn giản sau:
$sqlite3 testDB.db < testDB.sql
Lúc này, cơ sở dữ liệu của bạn là trống, vì thế bạn có thể thử hai thủ tục trên trước khi bạn có một số bảng và dữ liệu trong Database của mình.

2. Attach Database

Giả sử có một tình huống khi bạn có nhiều cơ sở dữ liệu có sẵn và bạn muốn sử dụng bất cứ cơ sở dữ liệu nào tại một thời điểm. Lệnh ATTACH DATABASE trong SQLite được sử dụng để lựa chọn một Database cụ thể, và sau lệnh này, tất cả các lệnh SQLite khác sẽ được thực thi dưới Attached Database đó.
Cú pháp:
ATTACH DATABASE 'DatabaseName' As 'Alias-Name';
Lệnh trên sẽ tạo một Database trong trường hợp nó chưa được tạo, nếu không thì, nó sẽ chỉ gắn tên file chứa cơ sở dữ liệu với 'Alias-Name'.
Ví dụ
Nếu bạn muốn attach một cơ sở dữ liệu đang tồn tại testDB.db, thì lệnh ATTACH DATABASE sẽ như sau:
sqlite> ATTACH DATABASE 'testDB.db' as 'TEST';
Sử dụng lệnh .database trong SQLite để hiển thị Attached Database đó.
sqlite> .database
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db
Các tên main và TEMP được dành riêng tương ứng cho một Primary Database và một Database để giữ các bảng tạm và các đối tượng dữ liệu tạm thời khác. Cả hai tên này tồn tại cho mỗi kết nối Database và không nên được sử dụng để attach, nếu không thì bạn sẽ nhận một cảnh báo như sau:
sqlite>  ATTACH DATABASE 'testDB.db' as 'TEMP';
Error: database TEMP is already in use
sqlite>  ATTACH DATABASE 'testDB.db' as 'main';
Error: database TEMP is already in use

3. Detach Database

Lệnh DETACH DTABASE trong SQLite được sử dụng để detach và phân tách một cơ sở dữ liệu từ một kết nối database mà đã được attach trước đó với lệnh ATTACH. Nếu cùng một Database file đã được attach với nhiều alias, thì lệnh DETACH sẽ chỉ phân tách một cơ sở dữ liệu có tên đã cung cấp, và giữ nguyên phần còn lại. Bạn không thể detach hai cơ sở dữ liệu là main hoặc temp.

Nếu cơ sở dữ liệu là tạm thời, thì nó sẽ bị hủy và nội dung sẽ bị thất lạc.

Cú pháp:
DETACH DATABASE 'Alias-Name';
Ở đây, 'Alias-Name' chính là alias mà bạn đã sử dụng trong khi attach cơ sở dữ liệu bởi sử dụng lệnh ATTACH.
Ví dụ
Giả sử bạn có một Database,, mà bạn đã tạo trong chương trước và attach với test và currentDB như chúng ta quan sát được khi sử dụng lệnh .database sau:
sqlite>.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db
3    currentDB        /home/sqlite/testDB.db
Bây giờ, detach cơ sở dữ liệu currentDB từ testDB.db như sau:
sqlite> DETACH DATABASE 'currentDB';
Sau đó bạn có thể kiểm tra các attach hiện tại, bạn sẽ thấy rằng testDB.db vấn được gắn kết với test và main.
sqlite> .databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db
Như vậy, thông qua bài học này, mình đã giới thiệu đến các bạn những thao tác cơ bản với Database trong SQLite. Cảm ơn các bạn đã đọc.