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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk