SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

BẢNG ALTER SQLite

Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite ALTER TABLE để thay đổi cấu trúc của một bảng hiện có.

Không giống như SQL-standard và các hệ thống cơ sở dữ liệu khác, SQLite hỗ trợ một chức năng rất hạn chế của ALTER TABLE tuyên bố.

Bằng cách sử dụng ALTER TABLE của SQLite tuyên bố, bạn có thể thực hiện hai hành động:

  1. Đổi tên bảng.
  2. Thêm một cột mới vào bảng.
  3. Đổi tên cột (được hỗ trợ thêm trong phiên bản 3.20.0)

Sử dụng SQLite ALTER TABLE để đổi tên bảng

Để đổi tên bảng, bạn sử dụng ALTER TABLE RENAME TO sau đây tuyên bố:

ALTER TABLE existing_table
RENAME TO new_table;Code language: SQL (Structured Query Language) (sql)

Đây là những điểm quan trọng bạn nên biết trước khi đổi tên bảng:

  • ALTER TABLE chỉ đổi tên một bảng trong cơ sở dữ liệu. Bạn không thể sử dụng nó để di chuyển bảng giữa các cơ sở dữ liệu đính kèm.
  • Các đối tượng cơ sở dữ liệu như chỉ mục và trình kích hoạt được liên kết với bảng sẽ được liên kết với bảng mới.
  • Nếu một bảng được tham chiếu bởi các chế độ xem hoặc câu lệnh trong trình kích hoạt, bạn phải thay đổi định nghĩa của các chế độ xem và trình kích hoạt theo cách thủ công.

Hãy lấy một ví dụ về đổi tên bảng.

Đầu tiên, tạo một bảng có tên devices có ba cột:name, model , serial; và chèn một hàng mới vào devices bảng.

CREATE TABLE devices (
   name TEXT NOT NULL,
   model TEXT NOT NULL,
   Serial INTEGER NOT NULL UNIQUE
);

INSERT INTO devices (name, model, serial)
VALUES('HP ZBook 17 G3 Mobile Workstation','ZBook','SN-2015');Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Thứ hai, sử dụng ALTER TABLE RENAME TO câu lệnh thay đổi devices bảng tới devices bảng như sau:

ALTER TABLE devices
RENAME TO equipment;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Thứ ba, truy vấn dữ liệu từ devices bảng để xác minh RENAME hoạt động.

SELECT
	name,
	model,
	serial
FROM
	equipment;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Sử dụng SQLite ALTER TABLE để thêm cột mới vào bảng

Bạn có thể sử dụng SQLite ALTER TABLE câu lệnh để thêm một cột mới vào một bảng hiện có. Trong trường hợp này, SQLite nối cột mới vào cuối danh sách cột hiện có.

Phần sau minh họa cú pháp của ALTER TABLE ADD COLUMN tuyên bố:

ALTER TABLE table_name
ADD COLUMN column_definition;Code language: SQL (Structured Query Language) (sql)

Có một số hạn chế đối với cột mới:

  • Cột mới không được có UNIQUE hoặc PRIMARY KEY ràng buộc.
  • Nếu cột mới có NOT NULL ràng buộc, bạn phải chỉ định giá trị mặc định cho cột khác với NULL giá trị.
  • Cột mới không được có giá trị mặc định là CURRENT_TIMESTAMP , CURRENT_DATECURRENT_TIME hoặc một biểu thức.
  • Nếu cột mới là khóa ngoại và kiểm tra ràng buộc khóa ngoại được bật, cột mới phải chấp nhận giá trị mặc định NULL .

Ví dụ:bạn có thể thêm một cột mới có tên là location tới devices bảng:

ALTER TABLE equipment 
ADD COLUMN location text;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Sử dụng SQLite ALTER TABLE để đổi tên cột

SQLite đã thêm hỗ trợ đổi tên cột bằng ALTER TABLE RENAME COLUMN trong phiên bản 3.20.0

Phần sau trình bày cú pháp của ALTER TABLE RENAME COLUMN tuyên bố:

ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;

Để biết thêm thông tin về cách đổi tên cột, hãy xem hướng dẫn đổi tên cột.

Sử dụng SQLite ALTER TABLE cho các tác vụ khác

Nếu bạn muốn thực hiện các hành động khác, ví dụ:thả một cột, bạn sử dụng các bước sau:

Tập lệnh sau minh họa các bước ở trên:

-- disable foreign key constraint check
PRAGMA foreign_keys=off;

-- start a transaction
BEGIN TRANSACTION;

-- Here you can drop column
CREATE TABLE IF NOT EXISTS new_table( 
   column_definition,
   ...
);
-- copy data from the table to the new_table
INSERT INTO new_table(column_list)
SELECT column_list
FROM table;

-- drop the table
DROP TABLE table;

-- rename the new_table to the table
ALTER TABLE new_table RENAME TO table; 

-- commit the transaction
COMMIT;

-- enable foreign key constraint check
PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

SQLite ALTER TABLE DROP COLUMN ví dụ

SQLite không hỗ trợ ALTER TABLE DROP COLUMN tuyên bố. Để bỏ một cột, bạn cần thực hiện các bước ở trên.

Tập lệnh sau tạo hai bảng usersfavorites và chèn dữ liệu vào các bảng này:

CREATE TABLE users(
	UserId INTEGER PRIMARY KEY,
	FirstName TEXT NOT NULL,
	LastName TEXT NOT NULL,
	Email TEXT NOT NULL,
	Phone TEXT NOT NULL
);

CREATE TABLE favorites(
	UserId INTEGER,
	PlaylistId INTEGER,
	FOREIGN KEY(UserId) REFERENCES users(UserId),
	FOREIGN KEY(PlaylistId) REFERENCES playlists(PlaylistId)
);

INSERT INTO users(FirstName, LastName, Email, Phone)
VALUES('John','Doe','[email protected]','408-234-3456');

INSERT INTO favorites(UserId, PlaylistId)
VALUES(1,1);Code language: SQL (Structured Query Language) (sql)

Câu lệnh sau trả về dữ liệu từ users bảng:

SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)

Và câu lệnh sau trả về dữ liệu từ favorites bảng:

SELECT * FROM favorites;Code language: SQL (Structured Query Language) (sql)

Giả sử, bạn muốn bỏ cột phone của users bảng.

Đầu tiên, vô hiệu hóa kiểm tra ràng buộc khóa ngoại:

PRAGMA foreign_keys=off;

Thứ hai, bắt đầu một giao dịch mới:

BEGIN TRANSACTION;Code language: SQL (Structured Query Language) (sql)

Thứ ba, tạo một bảng mới để chứa dữ liệu của users bảng ngoại trừ phone cột:

CREATE TABLE IF NOT EXISTS persons (
	UserId INTEGER PRIMARY KEY,
	FirstName TEXT NOT NULL,
	LastName TEXT NOT NULL,
	Email TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql)

Thứ tư, sao chép dữ liệu từ users tới persons bảng:

INSERT INTO persons(UserId, FirstName, LastName, Email)
SELECT UserId, FirstName, LastName, Email 
FROM users;
Code language: SQL (Structured Query Language) (sql)

Thứ năm, loại bỏ users bảng:

Người dùng
DROP TABLE users;Code language: SQL (Structured Query Language) (sql)

Thứ sáu, đổi tên persons bảng cho users bảng:

ALTER TABLE persons RENAME TO users;Code language: SQL (Structured Query Language) (sql)

Thứ bảy, thực hiện giao dịch:

COMMIT;Code language: SQL (Structured Query Language) (sql)

Thứ tám, bật kiểm tra ràng buộc khóa ngoại:

PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

Đây là users bảng sau khi đánh rơi phone cột:

SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)

Tóm tắt

  • Sử dụng ALTER TABLE để sửa đổi cấu trúc của một bảng hiện có.
  • Sử dụng ALTER TABLE table_name RENAME TO new_name để đổi tên bảng.
  • Sử dụng ALTER TABLE table_name ADD COLUMN column_definition để thêm một cột vào bảng.
  • Sử dụng ALTER TABLE table_name RENAME COLUMN current_name TO new_name để đổi tên một cột.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật dữ liệu Hoạt động từ dịch vụ khi dịch vụ bị tạm dừng

  2. Cách phát triển một ứng dụng Android gốc ngoại tuyến ưu tiên

  3. SQLite Node.js

  4. Xử lý xung đột khóa chính khi chèn dữ liệu vào SQLite

  5. android.database.sqlite.SQLiteCantOpenDatabaseException:lỗi không xác định (mã 14):Không thể mở cơ sở dữ liệu