Mengetahui cara membuat tabel di SQL
merupakan konsep yang penting dan mendasar.
Dalam tutorial ini, saya akan memandu Anda melalui SQL
sintaks untuk CREATE TABLE
pernyataan menggunakan contoh kode untuk PostgreSQL dan MySQL.
Dasar CREATE TABLE
Sintaks
Berikut adalah sintaks dasar untuk CREATE TABLE
pernyataan:
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
Untuk bagian pertama, Anda harus memulai dengan CREATE TABLE
pernyataan diikuti dengan nama tabel yang ingin Anda buat.
Jika saya ingin membuat tabel informasi guru, maka saya akan menulis sesuatu seperti ini:
CREATE TABLE teachers();
Di dalam kurung, Anda akan menambahkan informasi untuk membuat kolom untuk tabel. Jika Anda lupa tanda kurung, maka Anda akan mendapatkan pesan kesalahan.
CREATE TABLE teachers;
Titik koma di akhir tanda kurung memberi tahu komputer bahwa itu adalah akhir dari SQL
penyataan. Anda kadang-kadang akan mendengar ini disebut sebagai terminator pernyataan.
Apa itu MySQL
mesin penyimpanan?
Menurut MySQL
dokumentasi:
Mesin penyimpanan adalah komponen MySQL yang menangani operasi SQL untuk tipe tabel yang berbeda.
MySQL
menggunakan mesin penyimpanan ini untuk melakukan operasi CRUD (membuat, membaca, memperbarui, dan menghapus) pada database.
Di MySQL
, Anda memiliki opsi untuk menentukan jenis mesin penyimpanan yang ingin Anda gunakan untuk tabel Anda. Jika Anda menghilangkan ENGINE
klausa maka defaultnya adalah InnoDB.
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
)ENGINE=storage_engine;
Apa IF NOT EXISTS
klausa?
Ada klausa opsional yang disebut IF NOT EXISTS
yang akan memeriksa apakah tabel yang ingin Anda buat sudah ada di database. Anda dapat menempatkan klausa itu tepat sebelum nama tabel.
CREATE TABLE IF NOT EXISTS teachers();
Jika tabel sudah ada, maka komputer tidak akan membuat tabel baru.
Jika Anda menghilangkan IF NOT EXISTS
klausa dan coba buat tabel yang sudah ada di database, maka Anda akan mendapatkan pesan error.
Dalam contoh ini, saya pertama kali membuat tabel yang disebut guru. Tetapi jika saya mencoba membuat tabel yang sama di perintah berikutnya, saya akan mengalami kesalahan.
CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();
Cara membuat kolom dalam tabel
Di dalam tanda kurung untuk CREATE TABLE
pernyataan, Anda akan membuat daftar nama kolom yang ingin Anda buat bersama dengan tipe data dan batasannya.
Ini adalah contoh bagaimana kita dapat menambahkan empat kolom school_id
, name
, email
dan age
ke meja guru kami. Setiap nama kolom harus dipisahkan dengan koma.
CREATE TABLE teachers(
school_id data_type column_constraint,
name data_type column_constraint,
email data_type column_constraint,
age data_type column_constraint
);
Menurut MySQL
dokumentasi:
MySQL memiliki batas keras 4096 kolom per tabel, tetapi maksimum efektif mungkin kurang untuk tabel tertentu. Batas kolom yang tepat tergantung pada beberapa faktor.
Jika Anda mengerjakan MySQL
yang lebih kecil proyek pribadi, maka Anda mungkin tidak perlu khawatir melebihi jumlah kolom untuk tabel Anda.
Menurut dokumentasi PostgreSQL, ada batas 1600 kolom per tabel. Mirip dengan MySQL
, batas pasti dapat bervariasi tergantung pada ruang disk atau batasan kinerja.
Tipe data dalam SQL
Saat Anda membuat kolom dalam tabel, Anda harus menetapkannya sebagai tipe data. Tipe data menjelaskan tipe nilai di dalam kolom.
Berikut adalah enam kategori populer dari tipe data di SQL
:
- Numerik (int, float, serial, desimal, dll)
- Data dan waktu (stempel waktu, data, waktu, dll)
- Karakter dan string (char, varchar, teks, dll)
- Unicode (ntext, nvarchar, dll.)
- Biner (biner, dll.)
- Lain-lain (xml, tabel, dll.)
Artikel ini tidak akan membahas setiap tipe data tunggal tetapi akan mencakup beberapa yang populer.
Berikut daftar lengkap PostgreSQL
tipe data dan MySQL
tipe data.
Apa itu SERIAL
dan AUTO_INCREMENT
?
Di PostgreSQL
, sebuah SERIAL
tipe data adalah bilangan bulat yang secara otomatis akan bertambah satu untuk setiap baris baru yang dibuat.
Kita dapat menambahkan SERIAL
tepat setelah school_id
kolom di tabel guru kami.
school_id SERIAL
Di MySQL
, Anda akan menggunakan AUTO_INCREMENT
bukannya SERIAL
. Dalam contoh ini, INT
tipe data yang digunakan yang mewakili bilangan bulat.
school_id INT AUTO_INCREMENT
Jika kita menambahkan lima baris ke tabel guru, output akan menunjukkan angka 1, 2, 3, 4, 5 untuk school_id
kolom karena bilangan bulat secara otomatis bertambah satu untuk setiap baris baru.
Apa itu VARCHAR
tipe data?
Sebuah VARCHAR
tipe data adalah panjang string variabel di mana Anda dapat mengatur panjang karakter maksimum.
Ini adalah contoh penggunaan VARCHAR
tipe data untuk name
dan email
kolom di tabel guru kami. Angka 30 adalah panjang karakter maksimum.
name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,
Kendala Kolom dalam SQL
Ini adalah aturan yang diterapkan pada data di dalam kolom tabel.
Berikut adalah daftar beberapa batasan kolom yang lebih umum:
- KUNCI UTAMA - kunci ini berfungsi sebagai pengenal unik untuk tabel
- KUNCI ASING - kunci ini memastikan bahwa nilai dalam kolom juga ada di tabel lain. Ini berfungsi sebagai penghubung antar tabel.
- UNIK - semua nilai di kolom harus unik
- NOT NULL - nilainya tidak boleh NULL. NULL adalah tidak adanya nilai
- CHECK - menguji nilai terhadap ekspresi boolean
Contoh PRIMARY
dan FOREIGN
kunci
Di tabel pengajar, kita dapat menambahkan PRIMARY KEY
ke school_id
kolom.
Seperti inilah tampilan kode di PostgreSQL:
school_id SERIAL PRIMARY KEY
Seperti inilah tampilan kode di MySQL:
school_id INT AUTO_INCREMENT PRIMARY KEY
Jika Anda ingin memiliki lebih dari satu kolom untuk PRIMARY KEY
, lalu Anda akan menambahkannya tepat setelah pembuatan kolom.
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
PRIMARY KEY (column1, column2)
);
Jika Anda ingin menautkan satu tabel ke tabel lainnya, Anda dapat menggunakan FOREIGN KEY
.
Katakanlah kita memiliki tabel bernama district_employees dengan kunci utama district_id
. Berikut adalah tampilan kode di PostgreSQL:
CREATE TABLE district_employees(
district_id SERIAL PRIMARY KEY,
employee_name VARCHAR(30) NOT NULL,
PRIMARY KEY(district_id)
);
Di tabel pengajar, kita dapat menggunakan kunci asing dan mereferensikan tabel district_employees.
district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
district_id INT REFERENCES district_employees(district_id),
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
Contoh NOT NULL
, CHECK
dan UNIQUE
Jika kita ingin memastikan bahwa kita tidak memiliki nilai yang null, kita dapat menggunakan NOT NULL
paksaan.
name VARCHAR(30) NOT NULL
Kita bisa menggunakan CHECK
kendala untuk memastikan bahwa semua guru kami berusia 18 tahun ke atas. CHECK
kendala menguji nilai terhadap ekspresi boolean.
age INT CHECK(age >= 18)
Jika salah satu nilai kita tidak memenuhi syarat tersebut, maka kita akan mendapatkan pesan error.
Kita bisa menggunakan UNIQUE
batasan untuk memastikan bahwa semua email unik.
email VARCHAR(30) UNIQUE
Ini adalah hasil akhir untuk tabel guru:
Seperti inilah tampilan kode di PostgreSQL:
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
Seperti inilah tampilan kode di MySQL:
CREATE TABLE teachers(
school_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
Saya harap Anda menikmati artikel ini dan semoga sukses dalam perjalanan SQL Anda.