Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

SQL CREATE TABLE untuk Pemula

Artikel ini berisi CREATE TABLE SQL dasar pernyataan yang dapat digunakan pemula untuk membuat tabel dasar untuk proyek database mereka.

Sintaks Dasar

Sintaks dasar untuk membuat tabel dalam SQL adalah seperti ini:

CREATE TABLE TableName (
    Column1 datatype optional_constraints,
    Column2 datatype optional_constraints,
    Column3 datatype optional_constraints,
    ...
);

Dimana:

  • TableName adalah nama yang ingin Anda berikan ke tabel
  • Column1 , dll adalah nama yang Anda berikan ke kolom Anda
  • datatype adalah tipe data yang Anda tetapkan untuk setiap kolom. Sebagian besar RDBMS mengharuskan Anda menetapkan tipe data untuk setiap kolom. Di SQLite, ini opsional.
  • optional_constraints adalah daftar batasan opsional yang Anda terapkan pada kolom.

Perhatikan bahwa sebagian besar DBMS menggunakan sintaks yang lebih kompleks daripada ini (yaitu mereka menawarkan lebih banyak opsi), tetapi ini umumnya sintaks dasar yang diperlukan untuk membuat tabel. Kebanyakan pemula memulai dengan sintaks ini, kemudian mempelajari opsi lanjutan lainnya saat mereka maju.

Contoh Dasar

Berikut ini contoh dasarnya:

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL,
    OwnerId     int NOT NULL,
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

Berikut beberapa hal yang perlu diperhatikan:

  • Nama tabel dan kolom bisa apa saja. Misalnya, alih-alih PetId Saya bisa menyebutnya petid , PETID , atau pet_id . Beberapa DBMS (misalnya Postgres) peka huruf besar/kecil ketika Anda menanyakan tabel dan nama kolomnya, sementara yang lain tidak (misalnya SQL Server).
  • Beberapa DBMS menggunakan nama yang berbeda untuk tipe datanya.
  • NOT NULL adalah batasan tabel yang menetapkan bahwa kolom ini harus berisi nilai (yaitu tidak boleh berisi NULL nilai).
  • NULL berarti kolom boleh berisi NULL nilai-nilai. Beberapa DBMS (seperti DB2) tidak mendukung NULL kata kunci, sehingga Anda harus menghilangkannya saat bekerja dengan DBMS semacam itu.
  • PRIMARY KEY menambahkan batasan kunci utama ke tabel. Sebaiknya tentukan kunci utama di semua tabel Anda.
  • Jika tabel dengan nama yang sama sudah ada di database, Anda akan mendapatkan kesalahan. Anda harus menghapus tabel yang ada atau mengubahnya (atau mengubah nama tabel yang Anda buat).

Membuat Tabel dengan Kunci Asing

Contoh berikut membuat tabel dengan dua kunci asing. Kunci asing digunakan untuk membuat hubungan antara dua tabel.

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL REFERENCES PetTypes (PetTypeId),
    OwnerId     int NOT NULL REFERENCES Owners (OwnerId),
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

REFERENCES klausa digunakan untuk mendefinisikan kunci asing terhadap dua kolom. Dalam kasus kami, kunci asing memberlakukan hal berikut:

  • Pets.PetTypeId kolom mereferensikan PetTypes.PetTypeId kolom (nilai apa pun yang masuk ke Pets.PetTypeId kolom harus memiliki nilai yang cocok di PetTypes.PetTypeId kolom).
  • Pets.OwnerId kolom mereferensikan Owners.OwnerId kolom (nilai apa pun yang masuk ke Pets.OwnerId kolom harus memiliki nilai yang cocok di Owners.OwnerId kolom).

Kunci asing juga dapat ditambahkan nanti, menggunakan ALTER TABLE pernyataan jika diperlukan.

Buat Tabel dengan Batasan DEFAULT

Contoh berikut membuat tabel dengan DEFAULT kendala.

CREATE TABLE OrderItems
(
    OrderId     int NOT NULL PRIMARY KEY,
    OrderItem   int NOT NULL,
    ProductId   int NOT NULL,
    Quantity    int NOT NULL DEFAULT 1,
    ItemPrice   decimal(8,2) NOT NULL 
);

Buat Tabel dengan Kolom Stempel Waktu

Anda dapat menggunakan DEFAULT kendala untuk secara otomatis memasukkan tanggal dan waktu saat ini ke dalam kolom setiap kali baris baru dimasukkan. Ini sering disebut sebagai memasukkan cap waktu.

DBMS yang berbeda menggunakan fungsi yang berbeda untuk mengembalikan tanggal saat ini.

Berikut ini contoh melakukannya di SQL Server.

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime DEFAULT CURRENT_TIMESTAMP
);

Di SQL Server, CURRENT_TIMESTAMP adalah ANSI yang setara dengan GETDATE() fungsi.

Sebagai alternatif, Anda dapat menggunakan SYSDATETIME() untuk stempel waktu presisi yang lebih tinggi:

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

Untuk mendukung presisi yang lebih tinggi, tipe data kolom harus datetime2 .

SQL Server memiliki beberapa tipe data untuk nilai tanggal/waktu. Lihat fungsi tanggal dan waktu SQL Server untuk daftar.

Setiap DBMS memiliki fungsinya masing-masing untuk mengembalikan tanggal dan waktu. Berikut daftar yang utama:

DB2 CURRENT_DATE
MySQL CURRENT_DATE atau NOW()
Oracle SYSDATE
PostgreSQL CURRENT_DATE
SQL Server CURRENT_TIMESTAMP , GETDATE() atau SYSDATETIME()
SQLite datetime('now')

Lihat juga:

  • Fungsi Tanggal dan Waktu SQL Server
  • Fungsi Tanggal dan Waktu SQLite

Buat Kolom dengan Nilai yang Bertambah Secara Otomatis

Terkadang Anda perlu membuat kolom yang secara otomatis menambah nilai setiap kali baris baru dimasukkan. Ini biasanya disebut sebagai kolom “peningkatan otomatis” atau “identitas”, tergantung pada DBMS yang digunakan.

Di SQL Server, gunakan IDENTITY argumen:

CREATE TABLE Users
(
    UserId         int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

Dalam hal ini, kami menggunakan IDENTITY(1,1) .

  • 1 pertama adalah benih. Ini menentukan nilai apa untuk memulai penghitungan (yaitu ini adalah nilai dari baris pertama yang dimasukkan ke dalam tabel).
  • Yang kedua 1 adalah kenaikan. Ini adalah nilai tambahan yang ditambahkan ke nilai identitas baris sebelumnya yang dimuat.

Setiap DBMS memiliki kata kunci sendiri untuk membuat kolom penambahan otomatis.

  • Di MySQL dan MariaDb, gunakan AUTO_INCREMENT
  • Dalam SQLite, Anda memiliki beberapa opsi (termasuk AUTOINCREMENT kata kunci)
  • Di PostgreSQL, gunakan SERIAL
  • Dari Oracle Database 12c , Anda sekarang dapat menggunakan kata kunci IDENTITY untuk membuat kolom yang bertambah secara otomatis. Contohnya mungkin terlihat seperti:UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY

Opsi Lanjutan

Sebagian besar DBMS memungkinkan Anda untuk menentukan opsi lanjutan saat membuat tabel. Opsi yang tersedia akan sangat bergantung pada DBMS Anda.

Lihat dokumentasi DBMS Anda jika Anda memerlukan opsi yang tidak ditentukan dalam artikel ini.

Banyak opsi lanjutan dapat diatur melalui GUI (tergantung pada alat yang Anda gunakan untuk terhubung ke database Anda). Anda selalu dapat membuat atau memodifikasi tabel melalui GUI, lalu gunakan opsi "Script as Create" (atau serupa) untuk melihat kode SQL yang harus Anda jalankan untuk membuat tabel seperti itu. Anda dapat mengambil kode ini dan mengubah nama tabel, nama kolom, dll untuk membuat tabel baru berdasarkan definisi tabel sebelumnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL ORDER BY:5 Tindakan dan Larangan untuk Mengurutkan Data Seperti Seorang Profesional

  2. Buat Daftar Keren Sendiri, atau GitHub sebagai Notebook

  3. Pertimbangan Sekitar Urutan Kolom dalam Indeks dan Sortir

  4. Mitos Kinerja :Indeks Clustered vs. Non-Clustered

  5. Model Data Pengiriman Bahan Makanan