Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng CREATE VIEW
của SQLite để tạo một dạng xem mới trong cơ sở dữ liệu.
Chế độ xem là gì
Trong lý thuyết cơ sở dữ liệu, một khung nhìn là một tập hợp kết quả của một truy vấn được lưu trữ. Dạng xem là cách để đóng gói truy vấn vào một đối tượng được đặt tên được lưu trữ trong cơ sở dữ liệu.
Bạn có thể truy cập dữ liệu của các bảng bên dưới thông qua một dạng xem. Các bảng mà truy vấn trong định nghĩa dạng xem đề cập đến được gọi là bảng cơ sở.
Một chế độ xem hữu ích trong một số trường hợp:
- Đầu tiên, các khung nhìn cung cấp một lớp trừu tượng trên các bảng. Bạn có thể thêm và xóa các cột trong chế độ xem mà không cần chạm vào giản đồ của các bảng bên dưới.
- Thứ hai, bạn có thể sử dụng các chế độ xem để đóng gói các truy vấn phức tạp bằng các phép nối nhằm đơn giản hóa việc truy cập dữ liệu.
Chế độ xem SQLite chỉ được đọc. Nó có nghĩa là bạn không thể sử dụng INSERT
, DELETE
và UPDATE
để cập nhật dữ liệu trong bảng cơ sở thông qua dạng xem.
SQLite CREATE VIEW
tuyên bố
Để tạo chế độ xem, bạn sử dụng CREATE VIEW
tuyên bố như sau:
CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)]
AS
select-statement;
Code language: SQL (Structured Query Language) (sql)
Đầu tiên, chỉ định tên cho chế độ xem. IF NOT EXISTS
tùy chọn chỉ tạo một chế độ xem mới nếu nó không tồn tại. Nếu chế độ xem đã tồn tại, nó không có tác dụng gì.
Thứ hai, sử dụng TEMP
hoặc TEMPORARY
nếu bạn muốn chế độ xem chỉ hiển thị trong kết nối cơ sở dữ liệu hiện tại. Dạng xem được gọi là dạng xem tạm thời và SQLite tự động loại bỏ dạng xem tạm thời bất cứ khi nào kết nối cơ sở dữ liệu bị đóng.
Thứ ba, chỉ định một SELECT
tuyên bố cho chế độ xem. Theo mặc định, các cột của chế độ xem bắt nguồn từ tập kết quả của SELECT
tuyên bố. Tuy nhiên, bạn có thể gán tên của các cột dạng xem khác với tên cột của bảng
SQLite CREATE VIEW
ví dụ
Hãy lấy một số ví dụ về cách tạo chế độ xem mới bằng cách sử dụng CREATE VIEW
tuyên bố.
1) Tạo một dạng xem để đơn giản hóa một truy vấn phức tạp
Truy vấn sau đây lấy dữ liệu từ tracks
, albums
, media_types
và genres
bảng trong cơ sở dữ liệu mẫu sử dụng mệnh đề nối bên trong.
SELECT
trackid,
tracks.name,
albums.Title AS album,
media_types.Name AS media,
genres.Name AS genres
FROM
tracks
INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId
INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId
INNER JOIN genres ON genres.GenreId = tracks.GenreId;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Để tạo một dạng xem dựa trên truy vấn này, bạn sử dụng câu lệnh sau:
CREATE VIEW v_tracks
AS
SELECT
trackid,
tracks.name,
albums.Title AS album,
media_types.Name AS media,
genres.Name AS genres
FROM
tracks
INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId
INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId
INNER JOIN genres ON genres.GenreId = tracks.GenreId;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Từ bây giờ, bạn có thể sử dụng truy vấn đơn giản sau thay vì truy vấn phức tạp ở trên.
SELECT * FROM v_tracks;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
2) Tạo chế độ xem với tên cột tùy chỉnh
Câu lệnh sau tạo một dạng xem có tên v_albums
chứa tiêu đề anbom và thời lượng của anbom tính bằng phút:
CREATE VIEW v_albums (
AlbumTitle,
Minutes
)
AS
SELECT albums.title,
SUM(milliseconds) / 60000
FROM tracks
INNER JOIN
albums USING (
AlbumId
)
GROUP BY AlbumTitle;
Code language: SQL (Structured Query Language) (sql)
Trong ví dụ này, chúng tôi đã chỉ định các cột mới cho chế độ xem AlbumTitle
cho albums.title
cột và Phút cho biểu thức SUM(milliseconds) / 60000
Truy vấn này trả về dữ liệu từ v_albums
xem:
SELECT * FROM v_albums;
Code language: SQL (Structured Query Language) (sql)
Trong hướng dẫn này, bạn đã học về các dạng xem cơ sở dữ liệu và cách sử dụng CREATE VIEW
để tạo các dạng xem mới trong SQLite.