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

5 cách để kiểm tra kiểu dữ liệu của cột trong SQLite

Trong SQLite, có khá nhiều cách để xem cấu trúc của bảng. Do đó, có khá nhiều cách để chúng ta có thể kiểm tra kiểu dữ liệu của các cột bên trong bảng đó.

Ngoài ra còn có một chức năng cho phép chúng tôi kiểm tra loại dữ liệu của một cột được trả về trong một truy vấn.

Dưới đây là năm cách để kiểm tra kiểu dữ liệu của một cột trong SQLite.

PRAGMA table_info() Tuyên bố

PRAGMA table_info() câu lệnh trả về thông tin về một bảng được chỉ định, bao gồm các cột và kiểu dữ liệu của nó.

Dưới đây là một ví dụ về việc trả lại thông tin về bảng có tên là Album .

PRAGMA table_info(Album);

Kết quả:

cid  name      type           notnull  dflt_value  pk
---  --------  -------------  -------  ----------  --
0    AlbumId   INTEGER        1                    1 
1    Title     NVARCHAR(160)  1                    0 
2    ArtistId  INTEGER        1                    0 

Trong trường hợp này, các cột được tạo với kiểu dữ liệu được xác định rõ ràng.

Đây là một ví dụ khác:

PRAGMA table_info(Events);

Kết quả:

cid  name       type     notnull  dflt_value  pk
---  ---------  -------  -------  ----------  --
0    EventId    INTEGER  0                    1 
1    EventName           0                    0 
2    StartDate           0                    0 
3    EndDate             0                    0 

Trong trường hợp này, chỉ cột đầu tiên có kiểu dữ liệu được xác định rõ ràng.

SQLite sử dụng cách tiếp cận kiểu dữ liệu khác với các RDBMS chính khác. SQLite sử dụng hệ thống nhập động và do đó, kiểu dữ liệu của một giá trị được liên kết với chính giá trị đó, không phải với vùng chứa của nó.

Điều đó nói rằng, SQLite cho phép chúng ta chỉ định rõ ràng kiểu dữ liệu của các cột. Trong các ví dụ trên, một số cột đã được tạo với kiểu dữ liệu của chúng được xác định rõ ràng và chúng ta có thể xem các kiểu dữ liệu đó là gì bằng cách chạy PRAGMA ở trên tuyên bố.

PRAGMA table_xinfo() Tuyên bố

PRAGMA table_xinfo() câu lệnh hoàn toàn giống với PRAGMA table_info() , ngoại trừ việc nó cũng trả về các cột ẩn trên bảng ảo:

PRAGMA table_xinfo(Album);

Kết quả:

cid  name      type           notnull  dflt_value  pk  hidden
---  --------  -------------  -------  ----------  --  ------
0    AlbumId   INTEGER        1                    1   0     
1    Title     NVARCHAR(160)  1                    0   0     
2    ArtistId  INTEGER        1                    0   0     

Chúng ta có thể thấy rằng nó về cơ bản giống với table_info() , ngoại trừ cột phụ.

.schema Lệnh

Một cách khác để truy xuất cấu trúc của bảng là sử dụng .schema yêu cầu. Đây là một trong số các phương pháp bạn có thể sử dụng để trả về SQL được sử dụng để tạo bảng.

Ví dụ:

.schema Album

Kết quả:

CREATE TABLE Chinook.[Album]
(
    [AlbumId] INTEGER  NOT NULL,
    [Title] NVARCHAR(160)  NOT NULL,
    [ArtistId] INTEGER  NOT NULL,
    CONSTRAINT [PK_Album] PRIMARY KEY  ([AlbumId]),
    FOREIGN KEY ([ArtistId]) REFERENCES [Artist] ([ArtistId]) 
		ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE INDEX Chinook.[IFK_AlbumArtistId] ON [Album] ([ArtistId]);

Phương thức này cho phép chúng ta tạo SQL cần thiết để tạo lại bảng - bao gồm việc chỉ định bất kỳ kiểu dữ liệu nào.

sqlite_schema Bảng

Bạn có thể sử dụng sqlite_schema bảng giống như ví dụ trước.

Đây là một ví dụ sử dụng cùng một bảng.

SELECT sql 
FROM Chinook.sqlite_schema 
WHERE tbl_name = 'Album';

Kết quả:

CREATE TABLE [Album]
(
    [AlbumId] INTEGER  NOT NULL,
    [Title] NVARCHAR(160)  NOT NULL,
    [ArtistId] INTEGER  NOT NULL,
    CONSTRAINT [PK_Album] PRIMARY KEY  ([AlbumId]),
    FOREIGN KEY ([ArtistId]) REFERENCES [Artist] ([ArtistId]) 
		ON DELETE NO ACTION ON UPDATE NO ACTION
)
CREATE INDEX [IFK_AlbumArtistId] ON [Album] ([ArtistId]) 

sqlite_schema cũng có thể được truy cập bảng bằng sqlite_master .

typeof() Chức năng

Bạn có thể sử dụng typeof() hàm để lấy kiểu dữ liệu của một cột được trả về bởi một truy vấn. Cụ thể hơn, nó trả về kiểu dữ liệu của biểu thức đã cho.

Ví dụ:

SELECT typeof(Title) FROM Album
LIMIT 1;

Kết quả:

text

Ở đây tôi đã sử dụng LIMIT để giới hạn kết quả chỉ ở một hàng, nếu không, chúng ta sẽ thấy cùng một kết quả được lặp lại cho mỗi hàng trong bảng.

Hãy nhớ rằng phương thức này trả về kiểu dữ liệu của biểu thức được trả về bởi truy vấn - không phải kiểu dữ liệu thực tế được gán cho cột. Các loại có thể được trả về là:

  • null
  • integer
  • real
  • text
  • blob

Mỗi cột trong cơ sở dữ liệu SQLite được gán một trong các kiểu sở thích ở trên.

Chúng thực sự được gọi là các lớp lưu trữ. Một lớp lưu trữ tổng quát hơn một kiểu dữ liệu. Tất cả các giá trị trong các câu lệnh SQL, cho dù chúng là các ký tự được nhúng trong văn bản câu lệnh SQL hay các tham số liên kết với các câu lệnh SQL được biên dịch trước đều có một lớp lưu trữ ngầm định. Công cụ cơ sở dữ liệu có thể chuyển đổi giá trị giữa các lớp lưu trữ dạng số (INTEGERREAL ) và TEXT trong quá trình thực thi truy vấn.

Thông tin thêm về các kiểu dữ liệu trong SQLite

Xem kiểu dữ liệu SQLite (tài liệu SQLite) và Ưu điểm của kiểu gõ linh hoạt (tài liệu SQLite) để biết thêm thông tin về kiểu dữ liệu trong SQLite.

Cũng xem STRICT bảng (tài liệu SQLite), một tính năng đã được thêm vào SQLite phiên bản 3.37.0 trên 2021-11-27 cho phép chúng tôi từ chối hệ thống nhập linh hoạt và thay vào đó thực thi hệ thống kiểu cứng nhắc truyền thống được tìm thấy trong tất cả các công cụ cơ sở dữ liệu SQL khác và trong tiêu chuẩn SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ thêm dữ liệu vào cơ sở dữ liệu sqlite một lần và đọc nhiều lần

  2. cách lấy hình ảnh từ có thể vẽ theo tên của chúng trong cơ sở dữ liệu sqlite và sau đó hiển thị nó trong dạng xem danh sách

  3. Nhập tệp CSV vào bảng SQLite

  4. SQLite CROSS JOIN với một ví dụ thực tế

  5. Ứng dụng ngừng hoạt động do cơ sở dữ liệu