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

SQLite - Thay đổi bảng

SQLite hỗ trợ một tập hợp con giới hạn của tiêu chuẩn SQL ALTER TABLE tuyên bố.

Trong SQLite, ALTER TABLE cho phép người dùng đổi tên bảng hoặc thêm cột mới vào bảng hiện có.

Thêm cột

ADD COLUMN cú pháp được sử dụng để thêm một cột mới vào một bảng hiện có.

Hãy thêm một cột vào Nghệ sĩ bảng:

ALTER TABLE Artists
ADD COLUMN Bio TEXT;

Và sau đó kiểm tra bảng với .schema lệnh:

sqlite> .schema Artists
CREATE TABLE Artists(
  ArtistId    INTEGER PRIMARY KEY, 
  ArtistName  TEXT NOT NULL
, Bio TEXT);

Các hạn chế sau áp dụng khi sử dụng ADD COLUMN cú pháp trong SQLite:

  • Cột có thể không có PRIMARY KEY hoặc UNIQUE ràng buộc.
  • Cột có thể không có giá trị mặc định là CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP hoặc một biểu thức trong ngoặc đơn.
  • Nếu một NOT NULL ràng buộc được chỉ định, sau đó cột phải có giá trị mặc định khác với NULL .
  • Nếu các ràng buộc khóa ngoại được bật và một cột có REFERENCES mệnh đề được thêm vào, cột phải có giá trị mặc định là NULL .

Đổi tên bảng

RENAME TO cú pháp cho phép bạn thay đổi tên của một bảng.

Hãy đổi tên một trong các bảng của chúng ta:

ALTER TABLE Albums
RENAME TO Albums1;

Và kiểm tra nó bằng .tables lệnh:

sqlite> .tables
Albums1  Artists

Bây giờ, bất kỳ thao tác nào tiếp theo sẽ cần sử dụng tên mới của bảng. Vì vậy, chúng tôi có thể chọn dữ liệu như sau:

SELECT AlbumName, Year 
FROM Artists AS a INNER JOIN Albums1 AS r
ON a.ArtistId = r.ArtistId
WHERE a.ArtistName = 'Joe Satriani';
AlbumName             Year                                              
--------------------  --------------------------------------------------
Surfing with the Ali  1987                                              
Flying in a Blue Dre  1989                                              
Black Swans and Worm  2010                                              

Cập nhật hoặc giảm cột

SQLite không hỗ trợ các mệnh đề như DROP COLUMN , ALTER COLUMNADD CONSTRAINT , là một phần của tiêu chuẩn SQL.

Tuy nhiên, có những cách khác để thực hiện những điều này với SQLite.

Thay đổi một cột

Giả sử chúng tôi muốn thay đổi tên của Năm cột thành Ngày phát hành . Ngoài ra, chúng tôi muốn xóa NOT NULL hạn chế.

Để thực hiện việc này, bạn có thể tạo một bảng mới (với định nghĩa cột mới), điền dữ liệu từ bảng cũ vào bảng, sau đó sau khi hoàn tất, hãy xóa bảng cũ và đổi tên bảng mới để phản ánh tên ban đầu.

Tạo bảng mới

Đầu tiên, tạo bảng mới (lưu ý ReleaseDate thay vì Year ).

CREATE TABLE Albums(
  AlbumId     INTEGER PRIMARY KEY, 
  AlbumName   TEXT NOT NULL,
  ReleaseDate TEXT,
  ArtistId INTEGER NOT NULL,
  FOREIGN KEY(ArtistId) REFERENCES Artists(ArtistId)
);

Vì vậy, bây giờ chúng ta có các bảng sau trong cơ sở dữ liệu của mình:

sqlite> .tables
Albums   Albums1  Artists

Chèn dữ liệu

Sau đó, chèn dữ liệu từ bảng cũ.

Sử dụng INSERT câu lệnh chọn dữ liệu từ bảng cũ và chèn nó vào bảng mới. Như thế này:

INSERT INTO Albums (AlbumId, AlbumName, ReleaseDate, ArtistId)
SELECT AlbumId, AlbumName, Year, ArtistId
FROM Albums1;

Xác minh rằng dữ liệu đã được chèn vào bảng mới:

sqlite> SELECT * FROM Albums;
AlbumId   AlbumName                        ReleaseDate  ArtistId  
--------  -------------------------------  -----------  ----------
1         Killers                          1981         7         
2         Powerslave                       1984         7         
3         Surfing with the Alien           1987         1         
4         Heavy as a Really Heavy Thing    1995         11        
5         Yummy Yummy                      1994         17        
6         Out of the Loop                  2007         6         
7         Suck on This                     1989         13        
8         Pork Soda                        1993         13        
9         Sailing the Seas of Cheese       1991         13        
10        Flying in a Blue Dream           1989         1         
11        Black Swans and Wormhole Wizard  2010         1         
12        Somewhere in Time                1986         7         
13        Big Red Car                      1995         17        

Bỏ bảng cũ

Bây giờ bảng mới đã được tạo và điền dữ liệu, chúng tôi có quyền lựa chọn xóa bảng cũ, sửa đổi hoặc giữ nguyên bảng đó.

Hãy để nó ngay bây giờ, chúng ta sẽ gỡ bỏ nó sau.

Thả một cột

Để bỏ một cột, bạn có thể tạo một bảng từ SELECT tuyên bố. Trong SELECT câu lệnh, bỏ qua / các cột mà bạn muốn bỏ - SQLite sẽ chỉ tạo những cột được bao gồm trong SELECT tuyên bố.

CREATE TABLE Albums2 AS 
SELECT AlbumId, AlbumName, ArtistId 
FROM Albums1;

Và sau đó kiểm tra xem dữ liệu đã được chèn thành công vào bảng mới chưa:

sqlite> select * from Albums2;
AlbumId   AlbumName                        ArtistId  
--------  -------------------------------  ----------
1         Killers                          7         
2         Powerslave                       7         
3         Surfing with the Alien           1         
4         Heavy as a Really Heavy Thing    11        
5         Yummy Yummy                      17        
6         Out of the Loop                  6         
7         Suck on This                     13        
8         Pork Soda                        13        
9         Sailing the Seas of Cheese       13        
10        Flying in a Blue Dream           1         
11        Black Swans and Wormhole Wizard  1         
12        Somewhere in Time                7         
13        Big Red Car                      17        

Vì vậy, bây giờ chúng tôi có các bảng sau trong cơ sở dữ liệu của mình:

sqlite> .tables
Albums   Albums1  Albums2  Artists

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mục đích của bản đồ chiếu Android trong nhà cung cấp nội dung là gì?

  2. Cách gói các dòng văn bản dài trong kết quả SQLite

  3. Hành vi của Android SQLite Journal đã thay đổi?

  4. Không thể sao chép db được tạo trước từ nội dung

  5. Tôi nên chọn gì - JSON hay SQLite?