SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

5 Cara Memeriksa Tipe Data Kolom di SQLite

Di SQLite, ada beberapa cara untuk melihat struktur tabel. Oleh karena itu, ada beberapa cara untuk memeriksa tipe data kolom di dalam tabel tersebut.

Ada juga fungsi yang memungkinkan kita memeriksa tipe data kolom yang dikembalikan dalam kueri.

Berikut adalah lima cara untuk memeriksa tipe data kolom di SQLite.

PRAGMA table_info() Pernyataan

PRAGMA table_info() pernyataan mengembalikan informasi tentang tabel tertentu, termasuk kolom dan tipe datanya.

Berikut ini contoh pengembalian informasi tentang tabel yang disebut Album .

PRAGMA table_info(Album);

Hasil:

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

Dalam hal ini, kolom dibuat dengan tipe data yang ditentukan secara eksplisit.

Ini contoh lain:

PRAGMA table_info(Events);

Hasil:

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

Dalam hal ini, hanya kolom pertama yang memiliki tipe data yang didefinisikan secara eksplisit.

SQLite menggunakan pendekatan yang berbeda untuk tipe data dari RDBMS utama lainnya. SQLite menggunakan sistem pengetikan dinamis, sehingga tipe data dari suatu nilai dikaitkan dengan nilai itu sendiri, bukan dengan wadahnya.

Yang mengatakan, SQLite memungkinkan kita untuk secara eksplisit menentukan tipe data kolom. Pada contoh di atas, beberapa kolom dibuat dengan tipe data yang didefinisikan secara eksplisit, dan kita dapat melihat tipe data tersebut dengan menjalankan PRAGMA di atas pernyataan.

PRAGMA table_xinfo() Pernyataan

PRAGMA table_xinfo() pernyataan ini persis sama dengan PRAGMA table_info() pernyataan, kecuali bahwa ia juga mengembalikan kolom tersembunyi pada tabel virtual:

PRAGMA table_xinfo(Album);

Hasil:

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     

Kita dapat melihat bahwa pada dasarnya sama dengan table_info() , kecuali dengan kolom tambahan.

.schema Perintah

Cara lain untuk mengambil struktur tabel adalah dengan menggunakan .schema memerintah. Ini adalah salah satu dari beberapa metode yang dapat Anda gunakan untuk mengembalikan SQL yang digunakan untuk membuat tabel.

Contoh:

.schema Album

Hasil:

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]);

Metode ini memungkinkan kita untuk menghasilkan SQL yang diperlukan untuk membuat ulang tabel – termasuk menentukan tipe data apa pun.

sqlite_schema Tabel

Anda dapat menggunakan sqlite_schema tabel ke hal yang sama seperti contoh sebelumnya.

Berikut ini contoh menggunakan tabel yang sama.

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

Hasil:

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 tabel juga dapat diakses menggunakan sqlite_master .

typeof() Fungsi

Anda dapat menggunakan typeof() berfungsi untuk mendapatkan tipe data kolom yang dikembalikan oleh kueri. Lebih khusus lagi, ini mengembalikan tipe data dari ekspresi yang diberikan.

Contoh:

SELECT typeof(Title) FROM Album
LIMIT 1;

Hasil:

text

Di sini saya menggunakan LIMIT klausa untuk membatasi hasil hanya satu baris, jika tidak, kita akan melihat hasil yang sama diulang untuk setiap baris dalam tabel.

Ingatlah bahwa metode ini mengembalikan tipe data ekspresi yang dikembalikan oleh kueri – bukan tipe data aktual yang ditetapkan ke kolom. Jenis yang mungkin dikembalikan adalah:

  • null
  • integer
  • real
  • text
  • blob

Setiap kolom dalam database SQLite diberikan salah satu dari jenis afinitas di atas.

Ini sebenarnya disebut sebagai kelas penyimpanan. Kelas penyimpanan lebih umum daripada tipe data. Semua nilai dalam pernyataan SQL, apakah itu literal yang disematkan dalam teks pernyataan SQL atau parameter yang terikat ke pernyataan SQL yang telah dikompilasi sebelumnya memiliki kelas penyimpanan implisit. Mesin database dapat mengonversi nilai antara kelas penyimpanan numerik (INTEGER dan REAL ) dan TEXT selama eksekusi kueri.

Informasi Lebih Lanjut tentang Tipe Data di SQLite

Lihat tipe data SQLite (dokumentasi SQLite) dan Keuntungan Pengetikan Fleksibel (dokumentasi SQLite) untuk informasi selengkapnya tentang tipe data di SQLite.

Lihat juga STRICT tabel (dokumentasi SQLite), fitur yang ditambahkan dalam SQLite versi 3.37.0 pada tanggal 27-11-2011 yang memungkinkan kita untuk menolak sistem pengetikan fleksibel, dan sebagai gantinya menerapkan sistem tipe kaku tradisional yang ditemukan di semua mesin database SQL lainnya dan di standar 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. Sqlite Android Raw Query INSERT INTO Tidak Berfungsi

  2. Lebih baik menggunakan adaptor Kursor atau adaptor Array

  3. Cara Mendapatkan Tanggal Kemarin di SQLite

  4. SQLite JSON_EXTRACT()

  5. SQLite tidak ada kolom seperti itu