Penciptaan jadual yang bermakna
Dalam kuliah sebelum ini, kita sudah berkenalan sedikit dengan pertanyaan untuk membuat jadual, kini tiba masanya untuk menyelidiki perkara ini dengan lebih mendalam.
Mencipta jadual sangat serupa dengan mengisytiharkan kelas di Jawa dan mempunyai corak ini:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
Sebagai contoh, mari tulis pertanyaan yang mencipta jadual dengan pengguna:
CREATE TABLE user (
id INT,
name VARCHAR(100),
level INT,
created_date DATE,
);
Ia kelihatan sangat mudah, kerana banyak nuansa tidak ditunjukkan di sini.
Pertama, jadual mungkin mempunyai tetapan tambahan.
Dan kedua, setiap lajur boleh mempunyai tetapan tambahan.
Dan kita akan mulakan dengan tetapan untuk membuat lajur.
Kunci dalam jadual
Selain nama dan jenis data, lajur jadual juga boleh mempunyai tetapan berikut:
KUNCI UTAMA | Lajur ialah kunci jadual |
KUNCI UNIK | Semua nilai lajur mestilah unik. |
Nilai asal | Nilai asal |
BUKAN NULL | Larangan menerima nilai NULL |
AUTO_INCREMENT | SQL Server akan menambah nilai secara automatik apabila rekod baharu ditambahkan pada jadual |
DIJANA | Medan yang dikira |
PENYIMPANAN | Di mana untuk menyimpan data: pada cakera atau dalam memori |
KOMEN | Komen lajur, cth. tajuk dalam bahasa tempatan |
Di bawah ini kita akan melihat sebahagian daripada mereka.
Pertama, ia adalah KUNCI UTAMA .
Selalunya, ini adalah lajur berasingan dengan nama id dan jenis INT. Ini adalah apa yang dipanggil "kunci induk" jadual, dan semua barisnya mempunyai nilai unik untuk kunci ini. Ia digunakan terutamanya supaya jadual lain boleh merujuk kepada rekod jadual kami dan menunjuk kepada rekod khususnya.
Kedua ialah UNIQUE KEY .
Dalam beberapa cara, ia serupa dengan PRIMARY KEY, walaupun beban semantiknya berbeza sama sekali. Jika lajur mempunyai atribut UNIK, maka semua nilai dalam lajur itu mestilah unik. Contoh yang baik tentang perbezaan antara KUNCI UNIK dan KUNCI PRIMER ialah senarai orang di pejabat pasport.
Nombor cukai ialah KUNCI UTAMA, ia digunakan untuk memudahkan merujuk kepada orang yang betul dari jadual lain.
Nombor pasport adalah KUNCI UNIK. Tiada dua orang boleh mempunyai nombor pasport yang sama. Walau bagaimanapun, nombor pasport boleh ditukar. Contohnya, apabila menukar nama keluarga. Dan nombor cukai akan kekal bersama anda selama-lamanya. Ini adalah tugas utama KUNCI PRIMER. Contoh pertanyaan yang menyatakan KUNCI UTAMA:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(100),
level INT,
created_date DATE,
);
Tetapan jenis data
Terdapat sifat yang kurang penting tetapi berguna.
nilai DEFAUL
Apabila memasukkan data (menambah baris baharu) ke dalam jadual, anda boleh meninggalkan nilai beberapa lajur jika ia mempunyai nilai lalai. Dalam kes ini, pelayan SQL hanya akan menetapkan nilai lajur itu sendiri.
Bermula dengan versi 8 MySQL, anda boleh menentukan ungkapan sebagai nilai.
BUKAN NULL
Jika anda menentukan atribut NOT NULL untuk lajur semasa membuat jadual, maka SQL Server akan memastikan bahawa adalah mustahil untuk menyimpan nilai NULL dalam lajur ini. Secara lalai, mana-mana lajur boleh mempunyai nilai NULL, malah lajur INT. Yang agak tidak jelas untuk pengaturcara Java.
AUTO_INCREMENT
Ia biasanya digunakan untuk id lajur. Apabila anda menambah baris baharu pada jadual, anda benar-benar mahu pelayan SQL memberikan id untuk entri ini. Siapa yang lebih baik daripada pelayan tahu berapa banyak baris yang dia ada dalam jadual. Terutama jika permintaan daripada pelanggan yang berbeza pergi ke pelayan SQL yang sama.
Inilah yang dilakukan oleh atribut AUTO_INCREMENT. Apabila menambah baris baharu, kami hanya tidak menghantar apa-apa sebagai id dan pelayan SQL akan menentukan ID yang betul untuk rekod ini: ia hanya akan mengambil ID rekod sedia ada terakhir dan meningkatkannya sebanyak 1. Atribut ini hanya boleh digunakan dengan jenis integer dan nombor nyata. Dan, sudah tentu, mari kita buat contoh membuat jadual sedemikian:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
level INT DEFAULT 1,
created_date DATE NOT NULL,
);
GO TO FULL VERSION