Pambuka kanggo Tipe Data ing SQL
Ora kaya JavaScript, SQL nduweni ketik sing kuat. Ing saben tabel, saben kolom nduweni jinis data tetep dhewe.
Jinis data ana akeh, nanging beda karo basa Jawa, akeh banget ora amarga ana jinis data kanggo kabeh kesempatan. Basis data gumantung banget marang ukuran data, mula akeh jinis data sing beda-beda mung dawane.
Secara total, jinis data bisa dipérang dadi 5 klompok:
- Jinis angka
- Tipe string
- Jinis kanggo nyimpen tanggal lan wektu
- Obyek: biasane dituduhake minangka kumpulan bait
- Transportasi : JSON lan XML
Biasane DBMS sing beda isih duwe jinis data dhewe. Saben DBMS duwe spesialisasi dhewe, mula nambahake jinis data anyar minangka perkara sing umum banget.
Bab liyane yaiku mung nambahake jinis data anyar ora cukup, sampeyan kudu nambah fungsi sing bakal digunakake, uga nggawe karya iki trep lan cepet.
Yen sampeyan nggarap DBMS industri (perusahaan), mesthine sampeyan kudu ngatasi jinis data lan fungsine. Kanggo apa kudu maca 2-5 buku sing apik.
Minangka bagéan saka kenalan kita karo SQL, kita bakal nimbang telung klompok utama jinis data:
- Angka
- strings
- Tanggal
Tipe Numerik ing SQL
Ing SQL, jinis numerik dipérang dadi telung klompok:
- Jinis integer
- Nomer titik tetep (nomer titik desimal tetep)
- Angka floating point
Ayo dadi miwiti karo integer . Mung ana 5, lan bisa diterangake ing siji tabel:
# | Ketik jeneng | Dawane ing bita | Analog saka Jawa | Nilai minimal | Nilai maksimum |
---|---|---|---|---|---|
1 | TINYINT | 1 | bait | -128 | 127 |
2 | Cilik | 2 | cendhak | -32.768 | 32.767 |
3 | MEDIUMINT | 3 | -8,388,608 | 8.388.607 | |
4 | INT | 4 | int | -2.147.483.648 | 2.147.483.647 |
5 | BIGINT | 8 | dawa | -2 63 | 2 63-1 |
Jinis data meh padha karo jinis data Jawa, nanging uga ana jinis integer sing dawane telung bita. Iki ditindakake kanggo ngirit ukuran.
Sabanjure teka jinis floating point , kaya ing Jawa, mung ana loro:
# | Ketik jeneng | Dawane ing bita | Analog saka Jawa | Nilai minimal | Nilai maksimum |
---|---|---|---|---|---|
1 | NGAMUNG | 4 | ngambang | -3.40E+38 | +1.18E+38 |
2 | GANDA | 8 | pindho | -1.79E+308 | +1,79E+308 |
Maneh, ora ana sing anyar. Kabeh padha karo ing Jawa. Nanging, ora kaya Jawa, SQL duwe jinis khusus liyane, nomer nyata titik tetep. Iki jenenge DECIMAL.
Biasane jinis iki digunakake kanggo nyimpen jumlah dhuwit. Nalika jeneng jinis iki ditulis, banjur sawise iku biasane dituduhake carane akeh panggonan desimal nomer sadurunge lan sawise titik desimal. Format umum katon kaya iki:
DECIMAL(total_characters, after_comma)
Lan conto cilik:
salary DECIMAL(5,2)
Iki carane kita njlèntrèhaké kasunyatan sing kolom gaji bisa ngemot integer (maksimum 3 panggonan desimal) lan bagean pecahan - 2 panggonan desimal.
Jumlah maksimal karakter sing didhukung jinis DECIMAL yaiku 65.
Tipe string ing SQL
Baris ing basis data bisa disimpen ing rong wangun:
- Senar dawa tetep
- String kanthi dawa variabel
String dawa tetep ditemtokake minangka CHAR :
CHAR(length)
Dawane tetep tegese kabeh nilai kolom iki bakal ngemot jumlah karakter sing tetep.
Conto string dawa tetep:
country_code CHAR(2)
String dawa variabel ditemtokake dening jinis VARCHAR :
VARCHAR(max_length)
Dawane variabel tegese kabeh nilai kolom iki bakal ngemot teks kanthi dawa apa wae, nanging ora luwih saka dawa maksimal.
Tuladha string dawa variabel:
phone VARCHAR(12)
Senar dawa tetep duwe kauntungan gedhe. Yen klien njaluk server SQL bali menyang dheweke baris 1.000.000 saka meja, lan larik ing tabel dawa tetep, banjur, ngerti dawa baris, sampeyan bisa kanthi gampang ngetung bita sing ana hubungane karo sing dikarepake. baris.
Ing cilik saka dawa maneko rupo baris, iku ora bakal bisa kanggo cepet golek baris sing dikarepake ing meja. Elinga kacepetan akses menyang ArrayList lan LinkedList, kahanane kira-kira padha ing kene.
Ayo mbandhingake carane strings saka macem-macem dawa bakal disimpen ing tabel, gumantung ing jinis data.
baris | CHAR(4) | Byte kanggo nyimpen | VARCHAR(4) | Byte kanggo nyimpen | |
---|---|---|---|---|---|
'' | '' | 4 | '' | 1 | |
'ab' | 'ab' | 4 | 'ab' | 3 | |
'a b c d' | 'a b c d' | 4 | 'a b c d' | 5 | |
'abcdefgh' | 'a b c d' | 4 | 'a b c d' | 5 |
Cathetan. Jinis VARCHAR mbutuhake siji bait maneh kanggo dawa sing padha, amarga kudu nyimpen dawa senar kasebut.
Tipe sementara ing SQL
SQL uga duwe jinis khusus kanggo nyimpen tanggal lan wektu. Ana limang jinis total:
# | Ketik jeneng | Analog saka Java DateTime API | Tuladha | Nilai minimal | Nilai maksimum |
---|---|---|---|---|---|
1 | TANGGAL | LocalDate | '2022-06-30' | '1000-01-01' | '9999-12-31' |
2 | WAKTU | Wektu Lokal | 'hh:mm:ss[.fraksi]' | '-838:59:59.000000' | '838:59:59.000000' |
3 | DATETIME | LocalDateTime | '1000-01-01 00:00:00.000000' | '9999-12-31 23:59:59.999999' | |
4 | TIMESTAMP | Tanggal | '01-01-1970 00:00:01.000000' | '2038-01-19 03:14:07.999999' | |
5 | TAHUN | 1901 | 2155 |
Kabeh data ing pitakon ditulis minangka senar - ing kuotasi tunggal. Format entri dadi saka paling gedhe nganti paling cilik:
- taun
- wulan
- dina
- jam
- menit
- Kapindho
- Fraksi sedetik
Jinis DATE, TIME lan DATETIME bisa dianggep minangka analog saka jinis saka Java DateTme API: LocalDate, LocalTime, LocalDateTime. Logikane meh padha.
Jinis TIMESTAMP nyimpen data ing milidetik wiwit wiwitan taun 1970 (standar sistem operasi UNIX). Ing wangun iki disimpen kanthi jinis Tanggal ing basa Jawa.
Lan pungkasane, ana jinis YEAR, sing dawane 1 byte lan nyimpen nilai saka 1 nganti 255. Mulane, sawetara taun sing kasedhiya yaiku 1901-2155. Taun 1900 ora bisa disimpen kanthi jinis iki, amarga nilai 0 digunakake kanggo ngode nilai NULL.
Nyimpen obyek ing SQL
Ana jinis khusus kanggo nyimpen obyek utawa teks sing dawa banget. Kita ora bakal njlentrehake kanthi rinci, nanging aku bakal menehi dhaptar:
# | Ketik jeneng | Panjelasan |
---|---|---|
1 | TEKS | Digunakake kanggo nyimpen teks dawa. Nalika mbandhingake lan ngurutake ing lapangan iki, mung 100 karakter pisanan sing digunakake. |
2 | BLOB | Jeneng stands for Byte Large Object. Disimpen minangka mung koleksi bita. Bisa digunakake kanggo, contone, nyimpen gambar ing database. |
3 | CLOB | Jeneng iku singkatan saka Char Large Object. Digunakake kanggo nyimpen teks dawa. |
4 | ENUM | Ngidini sampeyan nyetel set nilai sing tetep lan nyimpen salah sijine minangka nilai. |
5 | SET | Ngidini sampeyan nyetel set nilai sing tetep lan nyimpen subset kasebut minangka nilai. Biasane nyimpen minangka topeng binar. |
Secara teoritis, sampeyan bisa nggawe serialisasi obyek Jawa minangka set bita lan nyimpen ing basis data minangka BLOB. Nyimpen obyek ora dadi masalah. Kepiye cara kerja bareng karo dheweke?
Ayo dadi meja nyimpen yuta obyek ing wangun serialized - carane sampeyan bakal nelusuri liwat? DBMS mung ndhukung jinis data tartamtu nalika nyedhiyakake sawetara fungsi kanggo nggarap.