SQL jenis Data

Setiap DBMS mendefinisikan jenis SQL-nya sendiri. Setiap driver ODBC hanya mengekspos jenis data SQL yang ditentukan DBMS terkait. Informasi tentang bagaimana driver memetakan jenis DBMS SQL ke pengidentifikasi jenis SQL yang ditentukan ODBC dan bagaimana driver memetakan jenis DBMS SQL ke pengidentifikasi jenis SQL khusus drivernya sendiri dikembalikan melalui panggilan ke SQLGetTypeInfo. Driver juga mengembalikan jenis data SQL saat menjelaskan jenis data kolom dan parameter melalui panggilan ke SQLColAttribute, SQLColumns, SQLDescribeCol, SQLDescribeParam, SQLProcedureColumns, dan SQLSpecialColumns.

Catatan

Jenis data SQL terkandung dalam bidang SQL_DESC_ CONCISE_TYPE, SQL_DESC_TYPE, dan SQL_DESC_DATETIME_INTERVAL_CODE deskriptor implementasi. Karakteristik jenis data SQL terkandung dalam bidang SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_LENGTH, dan SQL_DESC_OCTET_LENGTH dari deskriptor implementasi. Untuk informasi selengkapnya, lihat Pengidentifikasi Dan Deskriptor Tipe Data nanti dalam lampiran ini.

Driver dan sumber data tertentu tidak selalu mendukung semua jenis data SQL yang ditentukan dalam lampiran ini. Dukungan driver untuk jenis data SQL tergantung pada tingkat SQL-92 yang ditaati driver. Untuk menentukan tingkat tata bahasa SQL-92 yang didukung oleh driver, aplikasi memanggil SQLGetInfo dengan jenis informasi SQL_SQL_CONFORMANCE. Selain itu, driver dan sumber data tertentu dapat mendukung jenis data SQL tambahan khusus driver. Untuk menentukan jenis data mana yang didukung driver, aplikasi memanggil SQLGetTypeInfo. Untuk informasi tentang jenis data SQL khusus driver, lihat dokumentasi driver. Untuk informasi tentang jenis data di sumber data tertentu, lihat dokumentasi untuk sumber data tersebut.

Penting

Tabel di seluruh lampiran ini hanyalah pedoman dan menampilkan nama, rentang, dan batas jenis data SQL yang biasanya digunakan. Sumber data tertentu mungkin hanya mendukung beberapa jenis data yang tercantum, dan karakteristik jenis data yang didukung dapat berbeda dari yang tercantum.

Tabel berikut mencantumkan pengidentifikasi jenis SQL yang valid untuk semua jenis data SQL. Tabel juga mencantumkan nama dan deskripsi jenis data terkait dari SQL-92 (jika ada).

Pengidentifikasi jenis SQL[1] Data SQL umum

type[2]
Deskripsi jenis umum
SQL_CHAR CHAR(n) String karakter dari panjang string tetap n.
SQL_VARCHAR VARCHAR(n) String karakter panjang variabel dengan panjang string maksimum n.
SQL_LONGVARCHAR LONG VARCHAR Data karakter panjang variabel. Panjang maksimum bergantung pada sumber data. [9]
SQL_WCHAR WCHAR(n) String karakter Unicode dari panjang string tetap n
SQL_WVARCHAR VARWCHAR(n) String karakter panjang variabel Unicode dengan panjang string maksimum n
SQL_WLONGVARCHAR LONGWVARCHAR Data karakter panjang variabel Unicode. Panjang maksimum bergantung pada sumber data
SQL_DECIMAL DECIMAL(p,s) Nilai numerik yang ditandatangani, tepat dengan presisi setidaknya p dan skala s. (Presisi maksimum ditentukan driver.) (1 <= p<= 15; s<= p).[ 4]
SQL_NUMERIC NUMERIC(p,s) Nilai numerik yang ditandatangani, tepat dengan p presisi dan skala s (1 <= p<= 15; s<= p).[ 4]
SQL_SMALLINT SMALLINT Nilai numerik yang tepat dengan presisi 5 dan skala 0 (ditandatangani: -32.768 <= n<= 32.767, tidak ditandatangani: 0 <= n<= 65.535)[3].
SQL_INTEGER INTEGER Nilai numerik yang tepat dengan presisi 10 dan skala 0 (ditandatangani: -2[31] <= n<= 2[31] - 1, tidak ditandatangani: 0 <= n<= 2[32] - 1)[3].
SQL_REAL REAL Nilai numerik yang ditandatangani, perkiraan dengan presisi biner 24 (nilai nol atau absolut 10[-38] hingga 10[38]).
SQL_FLOAT FLOAT(p) Ditandatangani, perkiraan, nilai numerik dengan presisi biner setidaknya p. (Presisi maksimum ditentukan driver.) [5]
SQL_DOUBLE PRESISI GANDA Nilai numerik yang ditandatangani, perkiraan dengan presisi biner 53 (nilai nol atau absolut 10[-308] hingga 10[308]).
SQL_BIT BIT Data biner bit tunggal. [8]
SQL_TINYINT TINYINT Nilai numerik yang tepat dengan presisi 3 dan skala 0 (ditandatangani: -128 <= n<= 127, tidak ditandatangani: 0 <= n<= 255)[3].
SQL_BIGINT BIGINT Nilai numerik yang tepat dengan presisi 19 (jika ditandatangani) atau 20 (jika tidak ditandatangani) dan skala 0 (ditandatangani: -2[63] <= n<= 2[63] - 1, tidak ditandatangani: 0 <= n<= 2[64] - 1)[3],[9].
SQL_BINARY BINARY(n) Data biner dengan panjang tetap n.[ 9]
SQL_VARBINARY VARBINARY(n) Data biner panjang variabel dengan panjang maksimum n. Maksimum diatur oleh pengguna. [9]
SQL_LONGVARBINARY VARBINARY PANJANG Data biner panjang variabel. Panjang maksimum bergantung pada sumber data. [9]
SQL_TYPE_DATE[6] TANGGAL Bidang tahun, bulan, dan hari, sesuai dengan aturan kalender Gregorian. (Lihat Batasan Kalender Gregorian, nanti dalam lampiran ini.)
SQL_TYPE_TIME[6] TIME(p) Bidang jam, menit, dan kedua, dengan nilai yang valid untuk jam 00 hingga 23, nilai yang valid untuk menit 00 hingga 59, dan nilai yang valid untuk detik 00 hingga 61. Presisi p menunjukkan presisi detik.
SQL_TYPE_TIMESTAMP[6] TIMESTAMP(p) Bidang tahun, bulan, hari, jam, menit, dan kedua, dengan nilai yang valid seperti yang ditentukan untuk jenis data DATE dan TIME.
SQL_TYPE_UTCDATETIME UTCDATETIME Bidang tahun, bulan, hari, jam, menit, kedua, utchour, dan utcminute. Bidang utchour dan utcminute memiliki presisi mikrodetik 1/10.
SQL_TYPE_UTCTIME UTCTIME Bidang jam, menit, kedua, utchour, dan utcminute. Bidang utchour dan utcminute memiliki presisi mikrodetik 1/10..
SQL_INTERVAL_MONTH[7] INTERVAL MONTH(p) Jumlah bulan antara dua tanggal; p adalah presisi terdepan interval.
SQL_INTERVAL_YEAR[7] INTERVAL YEAR(p) Jumlah tahun antara dua tanggal; p adalah presisi terdepan interval.
SQL_INTERVAL_YEAR_TO_MONTH[7] INTERVAL YEAR(p) TO MONTH Jumlah tahun dan bulan antara dua tanggal; p adalah presisi terdepan interval.
SQL_INTERVAL_DAY[7] INTERVAL DAY(p) Jumlah hari antara dua tanggal; p adalah presisi terdepan interval.
SQL_INTERVAL_HOUR[7] INTERVAL HOUR(p) Jumlah jam antara dua tanggal/waktu; p adalah presisi terdepan interval.
SQL_INTERVAL_MINUTE[7] INTERVAL MINUTE(p) Jumlah menit antara dua tanggal/waktu; p adalah presisi terdepan interval.
SQL_INTERVAL_SECOND[7] INTERVAL SECOND(p,q) Jumlah detik antara dua tanggal/waktu; p adalah presisi terdepan interval dan q adalah presisi interval detik.
SQL_INTERVAL_DAY_TO_HOUR[7] INTERVAL DAY(p) TO HOUR Jumlah hari/jam antara dua tanggal/waktu; p adalah presisi terdepan interval.
SQL_INTERVAL_DAY_TO_MINUTE[7] INTERVAL DAY(p) TO MINUTE Jumlah hari/jam/menit antara dua tanggal/waktu; p adalah presisi terdepan interval.
SQL_INTERVAL_DAY_TO_SECOND[7] INTERVAL DAY(p) TO SECOND(q) Jumlah hari/jam/menit/detik antara dua tanggal/waktu; p adalah presisi terdepan interval dan q adalah presisi interval detik.
SQL_INTERVAL_HOUR_TO_MINUTE[7] INTERVAL HOUR(p) TO MINUTE Jumlah jam/menit antara dua tanggal/waktu; p adalah presisi terdepan interval.
SQL_INTERVAL_HOUR_TO_SECOND[7] INTERVAL HOUR(p) TO SECOND(q) Jumlah jam/menit/detik antara dua tanggal/waktu; p adalah presisi terdepan interval dan q adalah presisi interval detik.
SQL_INTERVAL_MINUTE_TO_SECOND[7] INTERVAL MINUTE(p) TO SECOND(q) Jumlah menit/detik antara dua tanggal/waktu; p adalah presisi terdepan interval dan q adalah presisi interval detik.
SQL_GUID GUID GUID panjang tetap.

[1] Ini adalah nilai yang dikembalikan di kolom DATA_TYPE dengan panggilan ke SQLGetTypeInfo.

[2] Ini adalah nilai yang dikembalikan di kolom NAME dan CREATE PARAMS dengan panggilan ke SQLGetTypeInfo. Kolom NAME mengembalikan penunjukan-misalnya, CHAR-sedangkan kolom CREATE PARAMS mengembalikan daftar parameter pembuatan yang dipisahkan koma seperti presisi, skala, dan panjang.

[3] Aplikasi menggunakan SQLGetTypeInfo atau SQLColAttribute untuk menentukan apakah jenis data tertentu atau kolom tertentu dalam tataan hasil tidak ditandatangani.

[4] jenis data SQL_DECIMAL dan SQL_NUMERIC hanya berbeda dalam presisinya. Presisi DECIMAL(p,s) adalah presisi desimal yang ditentukan implementasi yang tidak kurang dari p, sedangkan presisi NUMERIC(p,s) sama persis dengan p.

[5] Tergantung pada implementasinya, presisi SQL_FLOAT dapat berupa 24 atau 53: jika 24, jenis data SQL_FLOAT sama dengan SQL_REAL; jika 53, jenis data SQL_FLOAT sama dengan SQL_DOUBLE.

Dalam ODBC 3.x, jenis data tanggal, waktu, dan tanda waktu SQL masing-masing SQL_TYPE_DATE, SQL_TYPE_TIME, dan SQL_TYPE_TIMESTAMP; dalam ODBC 2.x, jenis data SQL_DATE, SQL_TIME, dan SQL_TIMESTAMP.

[7] Untuk informasi selengkapnya tentang jenis data SQL interval, lihat bagian Jenis Data Interval, nanti di lampiran ini.

[8] Jenis data SQL_BIT memiliki karakteristik yang berbeda dari jenis BIT di SQL-92.

[9] Jenis data ini tidak memiliki jenis data yang sesuai di SQL-92.

Bagian ini menyediakan contoh berikut.