SQL - Panduan Cepat

SQL adalah bahasa untuk mengoperasikan database; ini mencakup pembuatan database, penghapusan, pengambilan baris, modifikasi baris, dll. SQL adalah fileANSI (American National Standards Institute) bahasa standar, tetapi ada banyak versi bahasa SQL yang berbeda.

Apa itu SQL?

SQL adalah Structured Query Language, yang merupakan bahasa komputer untuk menyimpan, memanipulasi, dan mengambil data yang disimpan dalam database relasional.

SQL adalah bahasa standar untuk Sistem Database Relasional. Semua Sistem Manajemen Database Relasional (RDMS) seperti MySQL, MS Access, Oracle, Sybase, Informix, Postgres dan SQL Server menggunakan SQL sebagai bahasa database standar mereka.

Selain itu, mereka menggunakan dialek yang berbeda, seperti -

  • MS SQL Server menggunakan T-SQL,
  • Oracle menggunakan PL / SQL,
  • Versi MS Access dari SQL disebut JET SQL (format asli) dll.

Mengapa SQL?

SQL sangat populer karena menawarkan keuntungan berikut -

  • Memungkinkan pengguna untuk mengakses data dalam sistem manajemen basis data relasional.

  • Memungkinkan pengguna untuk mendeskripsikan data.

  • Memungkinkan pengguna untuk menentukan data dalam database dan memanipulasi data itu.

  • Memungkinkan untuk menyematkan dalam bahasa lain menggunakan modul SQL, perpustakaan & pra-kompiler.

  • Memungkinkan pengguna untuk membuat dan melepaskan database dan tabel.

  • Memungkinkan pengguna untuk membuat tampilan, prosedur tersimpan, fungsi dalam database.

  • Memungkinkan pengguna untuk mengatur izin pada tabel, prosedur dan tampilan.

Sejarah Singkat SQL

  • 1970- Dr. Edgar F. "Ted" Codd dari IBM dikenal sebagai bapak database relasional. Dia menggambarkan model relasional untuk database.

  • 1974 - Bahasa Permintaan Terstruktur muncul.

  • 1978 - IBM bekerja untuk mengembangkan ide Codd dan merilis produk bernama System / R.

  • 1986- IBM mengembangkan prototipe pertama dari database relasional dan distandarisasi oleh ANSI. Database relasional pertama dirilis oleh Relational Software yang kemudian dikenal sebagai Oracle.

Proses SQL

Saat Anda menjalankan perintah SQL untuk RDBMS apa pun, sistem menentukan cara terbaik untuk menjalankan permintaan Anda dan mesin SQL mencari cara untuk menafsirkan tugas tersebut.

Ada berbagai komponen yang disertakan dalam proses ini.

Komponen-komponen ini adalah -

  • Operator Permintaan
  • Mesin Pengoptimalan
  • Mesin Kueri Klasik
  • Mesin Kueri SQL, dll.

Mesin kueri klasik menangani semua kueri non-SQL, tetapi mesin kueri SQL tidak akan menangani file logis.

Berikut ini adalah diagram sederhana yang menunjukkan Arsitektur SQL -

Perintah SQL

Perintah SQL standar untuk berinteraksi dengan database relasional adalah CREATE, SELECT, INSERT, UPDATE, DELETE dan DROP. Perintah-perintah ini dapat diklasifikasikan ke dalam kelompok berikut berdasarkan sifatnya -

DDL - Bahasa Definisi Data

Sr.No. Perintah & Deskripsi
1

CREATE

Membuat tabel baru, tampilan tabel, atau objek lain dalam database.

2

ALTER

Mengubah objek database yang sudah ada, seperti tabel.

3

DROP

Menghapus seluruh tabel, tampilan tabel, atau objek lain dalam database.

DML - Bahasa Manipulasi Data

Sr.No. Perintah & Deskripsi
1

SELECT

Mengambil rekaman tertentu dari satu atau beberapa tabel.

2

INSERT

Membuat rekor.

3

UPDATE

Mengubah catatan.

4

DELETE

Menghapus catatan.

DCL - Bahasa Kontrol Data

Sr.No. Perintah & Deskripsi
1

GRANT

Memberikan hak istimewa kepada pengguna.

2

REVOKE

Mengambil kembali hak istimewa yang diberikan dari pengguna.

Apakah RDBMS itu?

RDBMS adalah singkatan dari Relasional Database Mmanajemen System. RDBMS adalah dasar untuk SQL, dan untuk semua sistem database modern seperti MS SQL Server, IBM DB2, Oracle, MySQL, dan Microsoft Access.

Sistem manajemen basis data relasional (RDBMS) adalah sistem manajemen basis data (DBMS) yang didasarkan pada model relasional seperti yang diperkenalkan oleh EF Codd.

Apa itu meja?

Data dalam RDBMS disimpan dalam objek database yang disebut sebagai tables. Tabel ini pada dasarnya adalah kumpulan entri data terkait dan terdiri dari banyak kolom dan baris.

Ingat, tabel adalah bentuk penyimpanan data yang paling umum dan paling sederhana dalam database relasional. Program berikut adalah contoh tabel CUSTOMERS -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Apakah bidang itu?

Setiap tabel dipecah menjadi entitas yang lebih kecil yang disebut bidang. Field pada tabel CUSTOMERS terdiri dari ID, NAMA, USIA, ALAMAT dan GAJI.

Bidang adalah kolom dalam tabel yang dirancang untuk mempertahankan informasi spesifik tentang setiap catatan dalam tabel.

Apa itu Record atau Row?

Rekaman juga disebut sebagai baris data adalah setiap entri individu yang ada dalam tabel. Misalnya, ada 7 record dalam tabel CUSTOMERS di atas. Berikut adalah satu baris data atau catatan di tabel PELANGGAN -

+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

Record adalah entitas horizontal dalam tabel.

Apa itu kolom?

Kolom adalah entitas vertikal dalam tabel yang berisi semua informasi yang terkait dengan bidang tertentu dalam tabel.

Misalnya, kolom di tabel PELANGGAN adalah ALAMAT, yang mewakili deskripsi lokasi dan akan seperti yang ditunjukkan di bawah ini -

+-----------+
| ADDRESS   |
+-----------+
| Ahmedabad |
| Delhi     |
| Kota      |
| Mumbai    |
| Bhopal    |
| MP        |
| Indore    |
+----+------+

Apa itu nilai NULL?

Nilai NULL dalam tabel adalah nilai dalam bidang yang tampak kosong, yang berarti bidang dengan nilai NULL adalah bidang tanpa nilai.

Sangat penting untuk memahami bahwa nilai NULL berbeda dari nilai nol atau bidang yang berisi spasi. Bidang dengan nilai NULL adalah bidang yang dibiarkan kosong selama pembuatan rekaman.

Batasan SQL

Batasan adalah aturan yang diterapkan pada kolom data di atas tabel. Ini digunakan untuk membatasi jenis data yang bisa masuk ke dalam tabel. Ini memastikan keakuratan dan keandalan data dalam database.

Batasan dapat berupa tingkat kolom atau tingkat tabel. Batasan tingkat kolom diterapkan hanya untuk satu kolom sedangkan, batasan tingkat tabel diterapkan ke seluruh tabel.

Berikut adalah beberapa kendala yang paling umum digunakan yang tersedia di SQL -

  • NOT NULL Constraint - Memastikan bahwa kolom tidak dapat memiliki nilai NULL.

  • Batasan DEFAULT - Memberikan nilai default untuk kolom saat tidak ada yang ditentukan.

  • Batasan UNIK - Memastikan bahwa semua nilai dalam kolom berbeda.

  • PRIMARY Key - Secara unik mengidentifikasi setiap baris / record dalam tabel database.

  • FOREIGN Key - Secara unik mengidentifikasi baris / record dalam tabel database lain.

  • PERIKSA Kendala - Batasan PERIKSA memastikan bahwa semua nilai dalam kolom memenuhi kondisi tertentu.

  • INDEX - Digunakan untuk membuat dan mengambil data dari database dengan sangat cepat.

Integritas data

Kategori integritas data berikut ada dengan setiap RDBMS -

  • Entity Integrity − Tidak ada baris duplikat dalam tabel.

  • Domain Integrity − Menerapkan entri yang valid untuk kolom tertentu dengan membatasi tipe, format, atau rentang nilai.

  • Referential integrity − Baris tidak dapat dihapus, yang digunakan oleh rekaman lain.

  • User-Defined Integrity − Menerapkan beberapa aturan bisnis tertentu yang tidak termasuk dalam entitas, domain, atau integritas referensial.

Normalisasi Basis Data

Normalisasi database adalah proses pengorganisasian data secara efisien dalam database. Ada dua alasan dari proses normalisasi ini -

  • Menghilangkan data yang berlebihan, misalnya menyimpan data yang sama di lebih dari satu tabel.

  • Memastikan ketergantungan data masuk akal.

Kedua alasan ini adalah tujuan yang berharga karena mengurangi jumlah ruang yang digunakan database dan memastikan bahwa data disimpan secara logis. Normalisasi terdiri dari serangkaian pedoman yang membantu memandu Anda dalam membuat struktur database yang baik.

Pedoman normalisasi dibagi menjadi bentuk normal; Pikirkan formulir sebagai format atau cara struktur database ditata. Tujuan dari bentuk normal adalah untuk mengatur struktur database, sehingga sesuai dengan aturan bentuk normal pertama, kemudian bentuk normal kedua dan terakhir bentuk normal ketiga.

Terserah Anda untuk melanjutkannya ke bentuk normal keempat, bentuk normal kelima dan seterusnya, tetapi secara umum, bentuk normal ketiga sudah lebih dari cukup.

  • Bentuk Normal Pertama (1NF)
  • Bentuk Normal Kedua (2NF)
  • Bentuk Normal Ketiga (3NF)

Ada banyak RDBMS populer yang tersedia untuk digunakan. Tutorial ini memberikan gambaran singkat tentang beberapa RDBMS yang paling populer. Ini akan membantu Anda membandingkan fitur dasar mereka.

MySQL

MySQL adalah database SQL open source, yang dikembangkan oleh perusahaan Swedia - MySQL AB. MySQL diucapkan sebagai "my ess-que-ell," berbeda dengan SQL, dilafalkan "sequel."

MySQL mendukung banyak platform berbeda termasuk Microsoft Windows, distribusi Linux utama, UNIX, dan Mac OS X.

MySQL memiliki versi gratis dan berbayar, tergantung penggunaan (non-komersial / komersial) dan fiturnya. MySQL hadir dengan server database SQL yang sangat cepat, multi-utas, multi-pengguna, dan kuat.

Sejarah

  • Pengembangan MySQL oleh Michael Widenius & David Axmark dimulai pada tahun 1994.

  • Rilis internal yang pertama pada 23 rd Mei 1995.

  • Versi Windows dirilis pada 8 th Januari 1998 untuk Windows 95 dan NT.

  • Versi 3.23: beta dari Juni 2000, produksi rilis Januari 2001.

  • Versi 4.0: beta dari Agustus 2002, produksi rilis Maret 2003 (serikat pekerja).

  • Versi 4.1: beta dari Juni 2004, produksi rilis Oktober 2004.

  • Versi 5.0: beta dari Maret 2005, produksi rilis Oktober 2005.

  • Sun Microsystems mengakuisisi MySQL AB pada 26 th Februari 2008.

  • Versi 5.1: rilis produksi 27 th November 2008.

fitur

  • Performa Tinggi.
  • Ketersediaan Tinggi.
  • Skalabilitas dan Fleksibilitas Jalankan apa saja.
  • Dukungan Transaksional yang Kuat.
  • Kekuatan Web dan Gudang Data.
  • Perlindungan Data yang Kuat.
  • Pengembangan Aplikasi yang Komprehensif.
  • Kemudahan Manajemen.
  • Kebebasan Sumber Terbuka dan Dukungan 24 x 7.
  • Total Biaya Kepemilikan Terendah.

MS SQL Server

MS SQL Server adalah Sistem Manajemen Basis Data Relasional yang dikembangkan oleh Microsoft Inc. Bahasa kueri utamanya adalah -

  • T-SQL
  • ANSI SQL

Sejarah

  • 1987 - Sybase merilis SQL Server untuk UNIX.

  • 1988 - Microsoft, Sybase, dan Aston-Tate mem-port SQL Server ke OS / 2.

  • 1989 - Microsoft, Sybase, dan Aston-Tate merilis SQL Server 1.0 untuk OS / 2.

  • 1990 - SQL Server 1.1 dirilis dengan dukungan untuk klien Windows 3.0.

  • Aston - Tate keluar dari pengembangan SQL Server.

  • 2000 - Microsoft merilis SQL Server 2000.

  • 2001 - Microsoft merilis XML untuk SQL Server Web Release 1 (unduh).

  • 2002 - Microsoft merilis SQLXML 2.0 (diganti namanya dari XML untuk SQL Server).

  • 2002 - Microsoft merilis SQLXML 3.0.

  • 2005 - Microsoft merilis SQL Server 2005 pada 7 November 2005.

fitur

  • Performa Tinggi
  • Ketersediaan Tinggi
  • Pencerminan database
  • Snapshot database
  • Integrasi CLR
  • Perantara Layanan
  • Pemicu DDL
  • Fungsi peringkat
  • Tingkat isolasi berbasis versi baris
  • Integrasi XML
  • TRY...CATCH
  • Mail Database

PERAMAL

Ini adalah sistem manajemen basis data berbasis multi-pengguna yang sangat besar. Oracle adalah sistem manajemen basis data relasional yang dikembangkan oleh 'Oracle Corporation'.

Oracle bekerja untuk mengelola sumber dayanya secara efisien, database informasi di antara banyak klien yang meminta dan mengirim data di jaringan.

Ini adalah pilihan server database yang sangat baik untuk komputasi klien / server. Oracle mendukung semua sistem operasi utama untuk klien dan server, termasuk MSDOS, NetWare, UnixWare, OS / 2 dan sebagian besar jenis UNIX.

Sejarah

Oracle mulai pada tahun 1977 dan merayakan 32 tahun yang luar biasa di industri (dari 1977 hingga 2009).

  • 1977 - Larry Ellison, Bob Miner dan Ed Oates mendirikan Laboratorium Pengembangan Perangkat Lunak untuk melakukan pekerjaan pengembangan.

  • 1979 - Oracle versi 2.0 dirilis dan menjadi database relasional komersial pertama dan database SQL pertama. Perusahaan mengubah namanya menjadi Relational Software Inc. (RSI).

  • 1981 - RSI mulai mengembangkan alat untuk Oracle.

  • 1982 - RSI diubah namanya menjadi Oracle Corporation.

  • 1983 - Oracle merilis versi 3.0, ditulis ulang dalam bahasa C dan berjalan di berbagai platform.

  • 1984 - Oracle versi 4.0 dirilis. Itu berisi fitur-fitur seperti kontrol konkurensi - konsistensi baca multi-versi, dll.

  • 1985 - Oracle versi 4.0 dirilis. Itu berisi fitur-fitur seperti kontrol konkurensi - konsistensi baca multi-versi, dll.

  • 2007 - Oracle merilis Oracle11g. Versi baru berfokus pada partisi yang lebih baik, migrasi mudah, dll.

fitur

  • Concurrency
  • Baca Konsistensi
  • Mekanisme Penguncian
  • Quiesce Database
  • Portability
  • Database yang mengelola sendiri
  • SQL*Plus
  • ASM
  • Scheduler
  • Manajer Sumber Daya
  • Data Warehousing
  • Pandangan terwujud
  • Indeks bitmap
  • Kompresi tabel
  • Eksekusi Paralel
  • SQL Analitik
  • Penambangan data
  • Partitioning

AKSES MS

Ini adalah salah satu produk Microsoft paling populer. Microsoft Access adalah perangkat lunak manajemen basis data tingkat awal. Database MS Access tidak hanya murah tetapi juga database yang kuat untuk proyek skala kecil.

MS Access menggunakan mesin database Jet, yang menggunakan dialek bahasa SQL tertentu (kadang-kadang disebut sebagai Jet SQL).

MS Access hadir dengan paket MS Office edisi profesional. MS Access memiliki antarmuka grafis intuitif yang mudah digunakan.

  • 1992 - Access versi 1.0 dirilis.

  • 1993 - Access 1.1 dirilis untuk meningkatkan kompatibilitas dengan penyertaan bahasa pemrograman Access Basic.

  • Transisi paling signifikan adalah dari Access 97 ke Access 2000.

  • 2007 - Access 2007, format database baru diperkenalkan ACCDB yang mendukung tipe data kompleks seperti bidang multi nilai dan lampiran.

fitur

  • Pengguna bisa membuat tabel, kueri, formulir dan laporan dan menghubungkannya bersama dengan makro.

  • Pilihan untuk mengimpor dan mengekspor data ke banyak format termasuk Excel, Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server, Oracle, ODBC, dll.

  • Ada juga format Jet Database (MDB atau ACCDB di Access 2007), yang dapat berisi aplikasi dan data dalam satu file. Ini membuatnya sangat mudah untuk mendistribusikan seluruh aplikasi ke pengguna lain, yang dapat menjalankannya di lingkungan yang tidak terhubung.

  • Microsoft Access menawarkan kueri berparameter. Kueri dan tabel Access ini dapat dirujuk dari program lain seperti VB6 dan .NET melalui DAO atau ADO.

  • Edisi desktop Microsoft SQL Server dapat digunakan dengan Access sebagai alternatif untuk Jet Database Engine.

  • Microsoft Access adalah database berbasis server file. Tidak seperti sistem manajemen database relasional klien-server (RDBMS), Microsoft Access tidak mengimplementasikan pemicu database, prosedur tersimpan atau pencatatan transaksi.

SQL - Sintaks

SQL diikuti oleh seperangkat aturan dan pedoman unik yang disebut Sintaks. Tutorial ini memberi Anda awal yang cepat dengan SQL dengan mendaftar semua Sintaks SQL dasar.

Semua pernyataan SQL dimulai dengan salah satu kata kunci seperti SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW dan semua pernyataan diakhiri dengan titik koma (;).

Hal terpenting yang perlu diperhatikan di sini adalah bahwa SQL bersifat case insensitive, yang berarti SELECT dan select memiliki arti yang sama dalam pernyataan SQL. Padahal, MySQL membuat perbedaan nama tabel. Jadi, jika Anda bekerja dengan MySQL, Anda perlu memberi nama tabel seperti yang ada di database.

Berbagai Sintaks dalam SQL

Semua contoh yang diberikan dalam tutorial ini telah diuji dengan server MySQL.

Pernyataan SQL SELECT

SELECT column1, column2....columnN
FROM   table_name;

Klausul DISTINCT SQL

SELECT DISTINCT column1, column2....columnN
FROM   table_name;

Klausul SQL WHERE

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION;

SQL DAN / ATAU Klausul

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION-1 {AND|OR} CONDITION-2;

Klausul SQL IN

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name IN (val-1, val-2,...val-N);

Klausul SQL ANTARA

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name BETWEEN val-1 AND val-2;

Klausa SEPERTI SQL

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name LIKE { PATTERN };

SQL ORDER BY Clause

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION
ORDER BY column_name {ASC|DESC};

SQL GROUP BY Klausul

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name;

SQL COUNT Clause

SELECT COUNT(column_name)
FROM   table_name
WHERE  CONDITION;

Klausul SQL HAVING

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name
HAVING (arithematic function condition);

Pernyataan SQL CREATE TABLE

CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);

Pernyataan SQL DROP TABLE

DROP TABLE table_name;

Pernyataan SQL CREATE INDEX

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

Pernyataan SQL DROP INDEX

ALTER TABLE table_name
DROP INDEX index_name;

Pernyataan SQL DESC

DESC table_name;

Pernyataan SQL TRUNCATE TABLE

TRUNCATE TABLE table_name;

Pernyataan SQL ALTER TABLE

ALTER TABLE table_name {ADD|DROP|MODIFY} column_name {data_ype};

Pernyataan SQL ALTER TABLE (Ganti Nama)

ALTER TABLE table_name RENAME TO new_table_name;

Pernyataan SQL INSERT INTO

INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);

Pernyataan SQL UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE  CONDITION ];

Pernyataan SQL DELETE

DELETE FROM table_name
WHERE  {CONDITION};

Pernyataan SQL CREATE DATABASE

CREATE DATABASE database_name;

Pernyataan SQL DROP DATABASE

DROP DATABASE database_name;

Pernyataan Penggunaan SQL

USE database_name;

Pernyataan SQL COMMIT

COMMIT;

Pernyataan SQL ROLLBACK

ROLLBACK;

SQL - Tipe Data

Tipe Data SQL adalah atribut yang menentukan tipe data dari objek apa pun. Setiap kolom, variabel, dan ekspresi memiliki tipe data terkait di SQL. Anda bisa menggunakan tipe data ini saat membuat tabel Anda. Anda dapat memilih tipe data untuk kolom tabel berdasarkan kebutuhan Anda.

SQL Server menawarkan enam kategori tipe data untuk Anda gunakan yang tercantum di bawah ini -

Tipe Data Numerik Tepat

TIPE DATA DARI UNTUK
bigint -9.223.372.036.854.775.808 9.223.372.036.854.775.807
int -2.147.483.648 2.147.483.647
smallint -32,768 32.767
tinyint 0 255
sedikit 0 1
desimal -10 ^ 38 +1 10 ^ 38 -1
numerik -10 ^ 38 +1 10 ^ 38 -1
uang -922,337,203,685,477.5808 +922,337,203,685,477.5807
uang kecil -214,748,3648 +214,748.3647

Perkiraan Jenis Data Numerik

TIPE DATA DARI UNTUK
mengapung -1,79E + 308 1,79E + 308
nyata -3,40E + 38 3.40E + 38

Tipe Data Tanggal dan Waktu

TIPE DATA DARI UNTUK
tanggal Waktu 1 Jan 1753 31 Desember 9999
smalldatetime 1 Jan 1900 6 Juni 2079
tanggal Menyimpan tanggal seperti 30 Juni 1991
waktu Menyimpan waktu hari seperti 12:30

Note - Di sini, datetime memiliki akurasi 3,33 milidetik sedangkan smalldatetime memiliki akurasi 1 menit.

Tipe Data String Karakter

Sr.No. JENIS & Deskripsi DATA
1

char

Panjang maksimum 8.000 karakter. (Panjang tetap karakter non-Unicode)

2

varchar

Maksimum 8.000 karakter. (Variabel-panjang data non-Unicode).

3

varchar(max)

Panjang maksimum 2E + 31 karakter, data non-Unicode dengan panjang variabel (hanya SQL Server 2005).

4

text

Data non-Unicode dengan panjang variabel dengan panjang maksimum 2.147.483.647 karakter.

Tipe Data String Karakter Unicode

Sr.No. JENIS & Deskripsi DATA
1

nchar

Panjang maksimum 4.000 karakter (Unicode panjang tetap)

2

nvarchar

Panjang maksimum 4.000 karakter. (Panjang variabel Unicode)

3

nvarchar(max)

Panjang maksimum 2E + 31 karakter (hanya SQL Server 2005). (Panjang variabel Unicode)

4

ntext

Panjang maksimum 1.073.741.823 karakter. (Variabel panjang Unicode)

Tipe Data Biner

Sr.No. JENIS & Deskripsi DATA
1

binary

Panjang maksimum 8.000 byte (Data biner panjang tetap)

2

varbinary

Panjang maksimum 8.000 byte (data biner panjang variabel)

3

varbinary(max)

Panjang maksimum 2E + 31 byte (hanya SQL Server 2005). (Data biner panjang variabel)

4

image

Panjang maksimum 2.147.483.647 byte. (Data Biner panjang variabel)

Jenis Data Lain-lain

Sr.No. JENIS & Deskripsi DATA
1

sql_variant

Menyimpan nilai dari berbagai tipe data yang didukung SQL Server, kecuali teks, ntext, dan timestamp.

2

timestamp

Menyimpan nomor unik seluruh database yang diperbarui setiap kali baris diperbarui

3

uniqueidentifier

Menyimpan pengenal unik global (GUID)

4

xml

Menyimpan data XML. Anda dapat menyimpan contoh xml dalam kolom atau variabel (hanya SQL Server 2005).

5

cursor

Referensi ke objek kursor

6

table

Menyimpan kumpulan hasil untuk pemrosesan nanti

SQL - Operator

Apa yang dimaksud dengan Operator di SQL?

Operator adalah kata atau karakter khusus yang digunakan terutama dalam klausa WHERE pernyataan SQL untuk melakukan operasi, seperti perbandingan dan operasi aritmatika. Operator ini digunakan untuk menentukan kondisi dalam pernyataan SQL dan berfungsi sebagai konjungsi untuk beberapa kondisi dalam sebuah pernyataan.

  • Operator aritmatika
  • Operator perbandingan
  • Operator logika
  • Operator biasanya meniadakan kondisi

Operator Aritmatika SQL

Menganggap 'variable a' memegang 10 dan 'variable b' memegang 20, lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
+ (Penambahan) Menambahkan nilai di kedua sisi operator. a + b akan menghasilkan 30
- (Pengurangan) Mengurangi operan tangan kanan dari operan tangan kiri. a - b akan memberikan -10
* (Perkalian) Mengalikan nilai di kedua sisi operator. a * b akan memberi 200
/ (Divisi) Membagi operan tangan kiri dengan operan tangan kanan. b / a akan memberi 2
% (Modulus) Membagi operan tangan kiri dengan operan tangan kanan dan mengembalikan sisanya. b% a akan memberi 0

Operator Perbandingan SQL

Menganggap 'variable a' memegang 10 dan 'variable b' memegang 20, lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
= Memeriksa apakah nilai dari dua operan sama atau tidak, jika ya maka kondisinya menjadi benar. (a = b) tidak benar.
! = Memeriksa apakah nilai dari dua operan sama atau tidak, jika nilai tidak sama maka kondisi menjadi benar. (a! = b) benar.
<> Memeriksa apakah nilai dari dua operan sama atau tidak, jika nilai tidak sama maka kondisi menjadi benar. (a <> b) benar.
> Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan, jika ya maka kondisi menjadi benar. (a> b) tidak benar.
< Memeriksa apakah nilai operan kiri kurang dari nilai operan kanan, jika ya maka kondisinya menjadi benar. (a <b) benar.
> = Memeriksa apakah nilai operan kiri lebih besar dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar. (a> = b) tidak benar.
<= Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan, jika ya maka kondisi menjadi benar. (a <= b) benar.
! < Memeriksa apakah nilai operan kiri tidak kurang dari nilai operan kanan, jika ya maka kondisinya menjadi benar. (a! <b) salah.
!> Memeriksa apakah nilai operan kiri tidak lebih besar dari nilai operan kanan, jika ya maka kondisi menjadi benar. (a!> b) benar.

Operator Logika SQL

Berikut adalah daftar semua operator logika yang tersedia di SQL.

Tunjukkan Contoh

Sr.No. Operator & Deskripsi
1

ALL

Operator ALL digunakan untuk membandingkan nilai dengan semua nilai dalam kumpulan nilai lain.

2

AND

Operator AND memungkinkan adanya beberapa kondisi dalam klausa WHERE pernyataan SQL.

3

ANY

Operator ANY digunakan untuk membandingkan nilai dengan nilai apa pun yang berlaku dalam daftar sesuai ketentuan.

4

BETWEEN

Operator BETWEEN digunakan untuk mencari nilai yang ada di dalam satu set nilai, dengan mempertimbangkan nilai minimum dan nilai maksimum.

5

EXISTS

Operator EXISTS digunakan untuk mencari keberadaan baris dalam tabel tertentu yang memenuhi kriteria tertentu.

6

IN

Operator IN digunakan untuk membandingkan nilai dengan daftar nilai literal yang telah ditentukan.

7

LIKE

Operator LIKE digunakan untuk membandingkan nilai dengan nilai serupa menggunakan operator wildcard.

8

NOT

Operator NOT membalikkan arti dari operator logika yang digunakannya. Misal: TIDAK ADA, TIDAK ANTARA, TIDAK DI, dll.This is a negate operator.

9

OR

Operator OR digunakan untuk menggabungkan beberapa kondisi dalam klausa WHERE pernyataan SQL.

10

IS NULL

Operator NULL digunakan untuk membandingkan nilai dengan nilai NULL.

11

UNIQUE

Operator UNIQUE mencari keunikan setiap baris dari tabel tertentu (tidak ada duplikat).

SQL - Ekspresi

Ekspresi adalah kombinasi dari satu atau beberapa nilai, operator dan fungsi SQL yang mengevaluasi sebuah nilai. EKSPRESI SQL ini seperti rumus dan ditulis dalam bahasa kueri. Anda juga bisa menggunakannya untuk membuat kueri database untuk kumpulan data tertentu.

Sintaksis

Pertimbangkan sintaks dasar dari pernyataan SELECT sebagai berikut -

SELECT column1, column2, columnN 
FROM table_name 
WHERE [CONDITION|EXPRESSION];

Ada berbagai jenis ekspresi SQL, yang disebutkan di bawah ini -

  • Boolean
  • Numeric
  • Date

Sekarang mari kita bahas masing-masing secara mendetail.

Ekspresi Boolean

Ekspresi SQL Boolean mengambil data berdasarkan pencocokan satu nilai. Berikut adalah sintaksnya -

SELECT column1, column2, columnN 
FROM table_name 
WHERE SINGLE VALUE MATCHING EXPRESSION;

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+
7 rows in set (0.00 sec)

Tabel berikut adalah contoh sederhana yang menunjukkan penggunaan berbagai Ekspresi SQL Boolean -

SQL> SELECT * FROM CUSTOMERS WHERE SALARY = 10000;
+----+-------+-----+---------+----------+
| ID | NAME  | AGE | ADDRESS | SALARY   |
+----+-------+-----+---------+----------+
|  7 | Muffy |  24 | Indore  | 10000.00 |
+----+-------+-----+---------+----------+
1 row in set (0.00 sec)

Ekspresi Numerik

Ekspresi ini digunakan untuk melakukan operasi matematika apa pun dalam kueri apa pun. Berikut adalah sintaksnya -

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name
WHERE CONDITION] ;

Di sini, ekspresi_numerik digunakan untuk ekspresi matematika atau rumus apa pun. Berikut adalah contoh sederhana yang menunjukkan penggunaan SQL Numeric Expressions -

SQL> SELECT (15 + 6) AS ADDITION
+----------+
| ADDITION |
+----------+
|       21 |
+----------+
1 row in set (0.00 sec)

Ada beberapa fungsi bawaan seperti avg (), sum (), count (), dll., Untuk melakukan apa yang dikenal sebagai penghitungan data agregat terhadap tabel atau kolom tabel tertentu.

SQL> SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS; 
+---------+
| RECORDS |
+---------+
|       7 |
+---------+
1 row in set (0.00 sec)

Ekspresi Tanggal

Ekspresi Tanggal mengembalikan nilai tanggal dan waktu sistem saat ini -

SQL>  SELECT CURRENT_TIMESTAMP;
+---------------------+
| Current_Timestamp   |
+---------------------+
| 2009-11-12 06:40:23 |
+---------------------+
1 row in set (0.00 sec)

Ekspresi tanggal lainnya seperti yang ditunjukkan di bawah ini -

SQL>  SELECT  GETDATE();;
+-------------------------+
| GETDATE                 |
+-------------------------+
| 2009-10-22 12:07:18.140 |
+-------------------------+
1 row in set (0.00 sec)

SQL - BUAT Database

SQL CREATE DATABASE pernyataan digunakan untuk membuat database SQL baru.

Sintaksis

Sintaks dasar dari pernyataan CREATE DATABASE ini adalah sebagai berikut -

CREATE DATABASE DatabaseName;

Selalu nama database harus unik dalam RDBMS.

Contoh

Jika Anda ingin membuat database baru <testDB>, maka pernyataan CREATE DATABASE akan seperti yang ditunjukkan di bawah ini -

SQL> CREATE DATABASE testDB;

Pastikan Anda memiliki hak istimewa admin sebelum membuat database apa pun. Setelah database dibuat, Anda dapat memeriksanya di daftar database sebagai berikut -

SQL> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| AMROOD             |
| TUTORIALSPOINT     |
| mysql              |
| orig               |
| test               |
| testDB             |
+--------------------+
7 rows in set (0.00 sec)

SQL - DROP atau HAPUS Database

SQL DROP DATABASE pernyataan digunakan untuk menjatuhkan database yang ada dalam skema SQL.

Sintaksis

Sintaks dasar dari pernyataan DROP DATABASE adalah sebagai berikut -

DROP DATABASE DatabaseName;

Selalu nama database harus unik dalam RDBMS.

Contoh

Jika Anda ingin menghapus database <testDB> yang sudah ada, maka pernyataan DROP DATABASE akan seperti yang ditunjukkan di bawah ini -

SQL> DROP DATABASE testDB;

NOTE - Hati-hati sebelum menggunakan operasi ini karena dengan menghapus database yang ada akan mengakibatkan hilangnya informasi lengkap yang tersimpan di database.

Pastikan Anda memiliki hak istimewa admin sebelum menjatuhkan database apa pun. Setelah database dihapus, Anda dapat memeriksanya di daftar database seperti yang ditunjukkan di bawah ini -

SQL> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| AMROOD             |
| TUTORIALSPOINT     |
| mysql              |
| orig               |
| test               |
+--------------------+
6 rows in set (0.00 sec)

SQL - PILIH Database, Pernyataan USE

Ketika Anda memiliki beberapa database di Skema SQL Anda, maka sebelum memulai operasi Anda, Anda perlu memilih database tempat semua operasi akan dilakukan.

SQL USE pernyataan digunakan untuk memilih database yang ada dalam skema SQL.

Sintaksis

Sintaks dasar dari pernyataan USE adalah seperti di bawah ini -

USE DatabaseName;

Selalu nama database harus unik dalam RDBMS.

Contoh

Anda dapat memeriksa database yang tersedia seperti yang ditunjukkan di bawah ini -

SQL> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| AMROOD             |
| TUTORIALSPOINT     |
| mysql              |
| orig               |
| test               |
+--------------------+
6 rows in set (0.00 sec)

Sekarang, jika Anda ingin bekerja dengan database AMROOD, Anda dapat menjalankan perintah SQL berikut dan mulai bekerja dengan database AMROOD.

SQL> USE AMROOD;

SQL - BUAT Tabel

Membuat tabel dasar melibatkan penamaan tabel dan menentukan kolomnya dan tipe data setiap kolom.

SQL CREATE TABLE pernyataan digunakan untuk membuat tabel baru.

Sintaksis

Sintaks dasar dari pernyataan CREATE TABLE adalah sebagai berikut -

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

CREATE TABLE adalah kata kunci yang memberi tahu sistem database apa yang ingin Anda lakukan. Dalam hal ini, Anda ingin membuat tabel baru. Nama unik atau pengenal untuk tabel mengikuti pernyataan CREATE TABLE.

Kemudian dalam tanda kurung muncul daftar yang mendefinisikan setiap kolom dalam tabel dan jenis tipe datanya. Sintaksnya menjadi lebih jelas dengan contoh berikut.

Salinan tabel yang ada dapat dibuat menggunakan kombinasi pernyataan CREATE TABLE dan pernyataan SELECT. Anda dapat memeriksa detail lengkapnya di Membuat Tabel Menggunakan Tabel Lain.

Contoh

Blok kode berikut adalah contoh, yang membuat tabel CUSTOMERS dengan ID sebagai kunci utama dan NOT NULL adalah batasan yang menunjukkan bahwa bidang ini tidak boleh NULL saat membuat catatan dalam tabel ini -

SQL> CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

Anda dapat memverifikasi apakah tabel Anda telah berhasil dibuat dengan melihat pesan yang ditampilkan oleh server SQL, jika tidak, Anda dapat menggunakan DESC perintah sebagai berikut -

SQL> DESC CUSTOMERS;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| ID      | int(11)       | NO   | PRI |         |       |
| NAME    | varchar(20)   | NO   |     |         |       |
| AGE     | int(11)       | NO   |     |         |       |
| ADDRESS | char(25)      | YES  |     | NULL    |       |
| SALARY  | decimal(18,2) | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Sekarang, Anda memiliki tabel CUSTOMERS yang tersedia di database Anda yang dapat Anda gunakan untuk menyimpan informasi yang diperlukan terkait dengan pelanggan.

SQL - DROP atau DELETE Table

SQL DROP TABLE pernyataan digunakan untuk menghapus definisi tabel dan semua data, indeks, pemicu, batasan, dan spesifikasi izin untuk tabel itu.

NOTE - Anda harus sangat berhati-hati saat menggunakan perintah ini karena sekali tabel dihapus maka semua informasi yang tersedia di tabel itu juga akan hilang selamanya.

Sintaksis

Sintaks dasar dari pernyataan DROP TABLE ini adalah sebagai berikut -

DROP TABLE table_name;

Contoh

Mari kita verifikasi tabel CUSTOMERS terlebih dahulu dan kemudian kita akan menghapusnya dari database seperti yang ditunjukkan di bawah ini -

SQL> DESC CUSTOMERS;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| ID      | int(11)       | NO   | PRI |         |       |
| NAME    | varchar(20)   | NO   |     |         |       |
| AGE     | int(11)       | NO   |     |         |       |
| ADDRESS | char(25)      | YES  |     | NULL    |       |
| SALARY  | decimal(18,2) | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Ini berarti tabel CUSTOMERS tersedia di database, jadi mari kita jatuhkan seperti yang ditunjukkan di bawah ini.

SQL> DROP TABLE CUSTOMERS;
Query OK, 0 rows affected (0.01 sec)

Sekarang, jika Anda mencoba perintah DESC, maka Anda akan mendapatkan kesalahan berikut -

SQL> DESC CUSTOMERS;
ERROR 1146 (42S02): Table 'TEST.CUSTOMERS' doesn't exist

Di sini, TEST adalah nama database yang kami gunakan untuk contoh kami.

SQL - INSERT Query

SQL INSERT INTO Pernyataan digunakan untuk menambahkan baris data baru ke tabel dalam database.

Sintaksis

Ada dua sintaks dasar dari pernyataan INSERT INTO yang ditunjukkan di bawah ini.

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  
VALUES (value1, value2, value3,...valueN);

Di sini, kolom1, kolom2, kolom3, ... kolomN adalah nama-nama kolom dalam tabel tempat Anda ingin memasukkan data.

Anda mungkin tidak perlu menentukan nama kolom dalam kueri SQL jika Anda menambahkan nilai untuk semua kolom pada tabel. Tetapi pastikan urutan nilainya dalam urutan yang sama dengan kolom di tabel.

Itu SQL INSERT INTO sintaksnya adalah sebagai berikut -

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

Contoh

Pernyataan berikut akan membuat enam record dalam tabel CUSTOMERS.

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );

Anda dapat membuat record di tabel CUSTOMERS dengan menggunakan sintaks kedua seperti yang ditunjukkan di bawah ini.

INSERT INTO CUSTOMERS 
VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

Semua pernyataan di atas akan menghasilkan record berikut di tabel CUSTOMERS seperti yang ditunjukkan di bawah ini.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Mengisi satu tabel menggunakan tabel lain

Anda dapat mengisi data ke dalam tabel melalui pernyataan pilih di atas tabel lain; asalkan tabel lain memiliki sekumpulan bidang, yang diperlukan untuk mengisi tabel pertama.

Ini sintaksnya -

INSERT INTO first_table_name [(column1, column2, ... columnN)] 
   SELECT column1, column2, ...columnN 
   FROM second_table_name
   [WHERE condition];

SQL - PILIH Kueri

SQL SELECTpernyataan digunakan untuk mengambil data dari tabel database yang mengembalikan data ini dalam bentuk tabel hasil. Tabel hasil ini disebut kumpulan hasil.

Sintaksis

Sintaks dasar dari pernyataan SELECT adalah sebagai berikut -

SELECT column1, column2, columnN FROM table_name;

Di sini, kolom1, kolom2 ... adalah bidang tabel yang nilainya ingin Anda ambil. Jika Anda ingin mengambil semua bidang yang tersedia di bidang tersebut, Anda dapat menggunakan sintaks berikut.

SELECT * FROM table_name;

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Kode berikut adalah sebuah contoh, yang akan mengambil field ID, Nama dan Gaji dari pelanggan yang tersedia di tabel PELANGGAN.

SQL> SELECT ID, NAME, SALARY FROM CUSTOMERS;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  1 | Ramesh   |  2000.00 |
|  2 | Khilan   |  1500.00 |
|  3 | kaushik  |  2000.00 |
|  4 | Chaitali |  6500.00 |
|  5 | Hardik   |  8500.00 |
|  6 | Komal    |  4500.00 |
|  7 | Muffy    | 10000.00 |
+----+----------+----------+

Jika Anda ingin mengambil semua field dari tabel CUSTOMERS, maka Anda harus menggunakan query berikut.

SQL> SELECT * FROM CUSTOMERS;

Ini akan menghasilkan hasil seperti yang ditunjukkan di bawah ini.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

SQL - Klausul WHERE

SQL WHEREklausa digunakan untuk menentukan kondisi saat mengambil data dari satu tabel atau dengan bergabung dengan beberapa tabel. Jika kondisi yang diberikan terpenuhi, maka hanya mengembalikan nilai tertentu dari tabel. Anda harus menggunakan klausa WHERE untuk memfilter catatan dan hanya mengambil catatan yang diperlukan.

Klausa WHERE tidak hanya digunakan dalam pernyataan SELECT, tetapi juga digunakan dalam pernyataan UPDATE, DELETE, dll., Yang akan kita periksa di bab-bab berikutnya.

Sintaksis

Sintaks dasar dari pernyataan SELECT dengan klausa WHERE adalah seperti yang ditunjukkan di bawah ini.

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

Anda dapat menentukan kondisi menggunakan perbandingan atau operator logika seperti>, <, =,LIKE, NOT, dll. Contoh berikut akan memperjelas konsep ini.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Kode berikut adalah contoh yang akan mengambil field ID, Name dan Gaji dari tabel CUSTOMERS, dimana gajinya lebih besar dari 2000 -

SQL> SELECT ID, NAME, SALARY 
FROM CUSTOMERS
WHERE SALARY > 2000;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  4 | Chaitali |  6500.00 |
|  5 | Hardik   |  8500.00 |
|  6 | Komal    |  4500.00 |
|  7 | Muffy    | 10000.00 |
+----+----------+----------+

Kueri berikut adalah contoh, yang akan mengambil bidang ID, Nama dan Gaji dari tabel PELANGGAN untuk pelanggan dengan nama tersebut Hardik.

Di sini, penting untuk dicatat bahwa semua string harus diberikan di dalam tanda kutip tunggal (''). Padahal, nilai numerik harus diberikan tanpa kutipan seperti pada contoh di atas.

SQL> SELECT ID, NAME, SALARY 
FROM CUSTOMERS
WHERE NAME = 'Hardik';

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  5 | Hardik   |  8500.00 |
+----+----------+----------+

SQL - AND dan OR Conjunctive Operator

SQL AND & ORoperator digunakan untuk menggabungkan beberapa kondisi untuk mempersempit data dalam pernyataan SQL. Kedua operator ini disebut sebagai operator konjungtif.

Operator ini menyediakan cara untuk membuat banyak perbandingan dengan operator yang berbeda dalam pernyataan SQL yang sama.

Operator AND

Itu AND operator memungkinkan adanya beberapa kondisi dalam klausa WHERE pernyataan SQL.

Sintaksis

Sintaks dasar operator AND dengan klausa WHERE adalah sebagai berikut -

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];

Anda dapat menggabungkan jumlah N kondisi menggunakan operator DAN. Untuk tindakan yang akan diambil oleh pernyataan SQL, apakah itu transaksi atau kueri, semua kondisi yang dipisahkan oleh DAN harus BENAR.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut adalah contoh, yang akan mengambil bidang ID, Nama dan Gaji dari tabel PELANGGAN, di mana gajinya lebih besar dari 2000 dan usia kurang dari 25 tahun -

SQL> SELECT ID, NAME, SALARY 
FROM CUSTOMERS
WHERE SALARY > 2000 AND age < 25;

Ini akan menghasilkan hasil sebagai berikut -

+----+-------+----------+
| ID | NAME  | SALARY   |
+----+-------+----------+
|  6 | Komal |  4500.00 |
|  7 | Muffy | 10000.00 |
+----+-------+----------+

Operator OR

Operator OR digunakan untuk menggabungkan beberapa kondisi dalam klausa WHERE pernyataan SQL.

Sintaksis

Sintaks dasar operator OR dengan klausa WHERE adalah sebagai berikut -

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]

Anda dapat menggabungkan jumlah N kondisi menggunakan operator OR. Untuk tindakan yang akan diambil oleh pernyataan SQL, apakah itu transaksi atau kueri, satu-satunya SALAH kondisi yang dipisahkan oleh ATAU harus BENAR.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Blok kode berikut memiliki kueri, yang akan mengambil bidang ID, Nama dan Gaji dari tabel PELANGGAN, di mana gajinya lebih besar dari 2000 ATAU usia kurang dari 25 tahun.

SQL> SELECT ID, NAME, SALARY 
FROM CUSTOMERS
WHERE SALARY > 2000 OR age < 25;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  3 | kaushik  |  2000.00 |
|  4 | Chaitali |  6500.00 |
|  5 | Hardik   |  8500.00 |
|  6 | Komal    |  4500.00 |
|  7 | Muffy    | 10000.00 |
+----+----------+----------+

SQL - UPDATE Query

SQL UPDATEQuery digunakan untuk mengubah record yang ada dalam sebuah tabel. Anda dapat menggunakan klausa WHERE dengan kueri UPDATE untuk memperbarui baris yang dipilih, jika tidak, semua baris akan terpengaruh.

Sintaksis

Sintaks dasar dari kueri UPDATE dengan klausa WHERE adalah sebagai berikut -

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

Anda dapat menggabungkan jumlah N kondisi menggunakan operator DAN atau ATAU.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Kueri berikut akan memperbarui ALAMAT untuk pelanggan yang nomor ID-nya adalah 6 dalam tabel.

SQL> UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;

Sekarang, tabel CUSTOMERS akan memiliki record berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | Pune      |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Jika Anda ingin mengubah semua ALAMAT dan nilai kolom GAJI di tabel CUSTOMERS, Anda tidak perlu menggunakan klausa WHERE karena kueri UPDATE sudah cukup seperti yang ditunjukkan pada blok kode berikut.

SQL> UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00;

Sekarang, tabel CUSTOMERS akan memiliki record berikut -

+----+----------+-----+---------+---------+
| ID | NAME     | AGE | ADDRESS | SALARY  |
+----+----------+-----+---------+---------+
|  1 | Ramesh   |  32 | Pune    | 1000.00 |
|  2 | Khilan   |  25 | Pune    | 1000.00 |
|  3 | kaushik  |  23 | Pune    | 1000.00 |
|  4 | Chaitali |  25 | Pune    | 1000.00 |
|  5 | Hardik   |  27 | Pune    | 1000.00 |
|  6 | Komal    |  22 | Pune    | 1000.00 |
|  7 | Muffy    |  24 | Pune    | 1000.00 |
+----+----------+-----+---------+---------+

SQL - HAPUS Kueri

SQL DELETE Query digunakan untuk menghapus rekaman yang sudah ada dari tabel.

Anda dapat menggunakan klausa WHERE dengan kueri DELETE untuk menghapus baris yang dipilih, jika tidak, semua rekaman akan dihapus.

Sintaksis

Sintaks dasar dari kueri DELETE dengan klausa WHERE adalah sebagai berikut -

DELETE FROM table_name
WHERE [condition];

Anda dapat menggabungkan jumlah N kondisi menggunakan operator DAN atau ATAU.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Kode berikut memiliki kueri, yang akan MENGHAPUS pelanggan, yang ID-nya adalah 6.

SQL> DELETE FROM CUSTOMERS
WHERE ID = 6;

Sekarang, tabel CUSTOMERS akan memiliki record berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Jika Anda ingin MENGHAPUS semua rekaman dari tabel PELANGGAN, Anda tidak perlu menggunakan klausa WHERE dan kueri DELETE akan seperti berikut -

SQL> DELETE FROM CUSTOMERS;

Sekarang, tabel CUSTOMERS tidak akan memiliki catatan apapun.

SQL - Klausa SEPERTI

SQL LIKEklausa digunakan untuk membandingkan nilai dengan nilai serupa menggunakan operator wildcard. Ada dua karakter pengganti yang digunakan terkait dengan operator LIKE.

  • Tanda persen (%)
  • Garis bawah (_)

Tanda persen mewakili nol, satu atau beberapa karakter. Garis bawah mewakili satu angka atau karakter. Simbol-simbol ini dapat digunakan dalam kombinasi.

Sintaksis

Sintaks dasar% dan _ adalah sebagai berikut -

SELECT FROM table_name
WHERE column LIKE 'XXXX%'

or 

SELECT FROM table_name
WHERE column LIKE '%XXXX%'

or

SELECT FROM table_name
WHERE column LIKE 'XXXX_'

or

SELECT FROM table_name
WHERE column LIKE '_XXXX'

or

SELECT FROM table_name
WHERE column LIKE '_XXXX_'

Anda dapat menggabungkan jumlah N kondisi menggunakan operator DAN atau ATAU. Di sini, XXXX bisa berupa nilai numerik atau string apa pun.

Contoh

Tabel berikut memiliki beberapa contoh yang menunjukkan bagian WHERE memiliki klausa LIKE yang berbeda dengan operator '%' dan '_' -

Sr.No. Pernyataan & Deskripsi
1

WHERE SALARY LIKE '200%'

Menemukan nilai apa pun yang dimulai dengan 200.

2

WHERE SALARY LIKE '%200%'

Menemukan nilai apa pun yang memiliki 200 di posisi mana pun.

3

WHERE SALARY LIKE '_00%'

Menemukan nilai apa pun yang memiliki 00 di posisi kedua dan ketiga.

4

WHERE SALARY LIKE '2_%_%'

Menemukan nilai apa pun yang dimulai dengan 2 dan setidaknya memiliki panjang 3 karakter.

5

WHERE SALARY LIKE '%2'

Menemukan nilai apa pun yang diakhiri dengan 2.

6

WHERE SALARY LIKE '_2%3'

Menemukan nilai apa pun yang memiliki 2 di posisi kedua dan diakhiri dengan 3.

7

WHERE SALARY LIKE '2___3'

Menemukan nilai apa pun dalam angka lima digit yang dimulai dengan 2 dan diakhiri dengan 3.

Mari kita ambil contoh nyata, pertimbangkan tabel PELANGGAN yang memiliki catatan seperti yang ditunjukkan di bawah ini.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut adalah contoh, yang akan menampilkan semua record dari tabel CUSTOMERS, dimana GAJI dimulai dengan 200.

SQL> SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '200%';

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
+----+----------+-----+-----------+----------+

SQL - Klausa TOP, LIMIT, atau ROWNUM

SQL TOP klausa digunakan untuk mengambil nomor TOP N atau X persen catatan dari tabel.

Note- Semua database tidak mendukung klausa TOP. Misalnya MySQL mendukung fileLIMIT klausa untuk mengambil sejumlah catatan sementara Oracle menggunakan ROWNUM perintah untuk mengambil data dalam jumlah terbatas.

Sintaksis

Sintaks dasar klausa TOP dengan pernyataan SELECT adalah sebagai berikut.

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE [condition]

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Kueri berikut adalah contoh di server SQL, yang akan mengambil 3 data teratas dari tabel CUSTOMERS.

SQL> SELECT TOP 3 * FROM CUSTOMERS;

Ini akan menghasilkan hasil sebagai berikut -

+----+---------+-----+-----------+---------+
| ID | NAME    | AGE | ADDRESS   | SALARY  |
+----+---------+-----+-----------+---------+
|  1 | Ramesh  |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan  |  25 | Delhi     | 1500.00 |
|  3 | kaushik |  23 | Kota      | 2000.00 |
+----+---------+-----+-----------+---------+

Jika Anda menggunakan server MySQL, berikut adalah contoh yang setara -

SQL> SELECT * FROM CUSTOMERS
LIMIT 3;

Ini akan menghasilkan hasil sebagai berikut -

+----+---------+-----+-----------+---------+
| ID | NAME    | AGE | ADDRESS   | SALARY  |
+----+---------+-----+-----------+---------+
|  1 | Ramesh  |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan  |  25 | Delhi     | 1500.00 |
|  3 | kaushik |  23 | Kota      | 2000.00 |
+----+---------+-----+-----------+---------+

Jika Anda menggunakan server Oracle, maka blok kode berikut memiliki contoh yang setara.

SQL> SELECT * FROM CUSTOMERS
WHERE ROWNUM <= 3;

Ini akan menghasilkan hasil sebagai berikut -

+----+---------+-----+-----------+---------+
| ID | NAME    | AGE | ADDRESS   | SALARY  |
+----+---------+-----+-----------+---------+
|  1 | Ramesh  |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan  |  25 | Delhi     | 1500.00 |
|  3 | kaushik |  23 | Kota      | 2000.00 |
+----+---------+-----+-----------+---------+

SQL - ORDER BY Klausul

SQL ORDER BYklausa digunakan untuk mengurutkan data dalam urutan naik atau turun, berdasarkan satu atau beberapa kolom. Beberapa database mengurutkan hasil kueri dalam urutan menaik secara default.

Sintaksis

Sintaks dasar klausa ORDER BY adalah sebagai berikut -

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

Anda dapat menggunakan lebih dari satu kolom di klausa ORDER BY. Pastikan kolom apa pun yang Anda gunakan untuk mengurutkan kolom itu harus ada di daftar kolom.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Blok kode berikut memiliki contoh, yang akan mengurutkan hasil dalam urutan menaik menurut NAMA dan GAJI -

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME, SALARY;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

Blok kode berikut memiliki contoh, yang akan mengurutkan hasil dalam urutan menurun menurut NAMA.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME DESC;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
+----+----------+-----+-----------+----------+

SQL - Kelompokkan Menurut

SQL GROUP BYklausa digunakan dalam kolaborasi dengan pernyataan SELECT untuk mengatur data identik ke dalam kelompok. Klausa GROUP BY ini mengikuti klausa WHERE dalam pernyataan SELECT dan mendahului klausa ORDER BY.

Sintaksis

Sintaks dasar dari klausa GROUP BY ditunjukkan di blok kode berikut. Klausa GROUP BY harus mengikuti kondisi di klausa WHERE dan harus mendahului klausa ORDER BY jika salah satu digunakan.

SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2

Contoh

Pertimbangkan tabel CUSTOMERS memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Jika Anda ingin mengetahui jumlah total gaji pada setiap pelanggan, maka kueri GROUP BY adalah sebagai berikut.

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;

Ini akan menghasilkan hasil sebagai berikut -

+----------+-------------+
| NAME     | SUM(SALARY) |
+----------+-------------+
| Chaitali |     6500.00 |
| Hardik   |     8500.00 |
| kaushik  |     2000.00 |
| Khilan   |     1500.00 |
| Komal    |     4500.00 |
| Muffy    |    10000.00 |
| Ramesh   |     2000.00 |
+----------+-------------+

Sekarang, mari kita lihat tabel di mana tabel PELANGGAN memiliki catatan berikut dengan nama duplikat -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Ramesh   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | kaushik  |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Sekarang lagi, jika Anda ingin mengetahui jumlah total gaji pada setiap pelanggan, maka kueri GROUP BY adalah sebagai berikut -

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;

Ini akan menghasilkan hasil sebagai berikut -

+---------+-------------+
| NAME    | SUM(SALARY) |
+---------+-------------+
| Hardik  |     8500.00 |
| kaushik |     8500.00 |
| Komal   |     4500.00 |
| Muffy   |    10000.00 |
| Ramesh  |     3500.00 |
+---------+-------------+

SQL - Kata Kunci Berbeda

SQL DISTINCT kata kunci digunakan dalam hubungannya dengan pernyataan SELECT untuk menghilangkan semua record duplikat dan hanya mengambil record unik.

Mungkin ada situasi ketika Anda memiliki beberapa rekaman duplikat dalam sebuah tabel. Saat mengambil catatan seperti itu, lebih masuk akal untuk mengambil hanya catatan unik itu daripada mengambil catatan duplikat.

Sintaksis

Sintaks dasar kata kunci DISTINCT untuk menghilangkan catatan duplikat adalah sebagai berikut -

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Pertama, mari kita lihat bagaimana kueri SELECT berikut mengembalikan catatan gaji duplikat.

SQL> SELECT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

Ini akan menghasilkan hasil sebagai berikut, di mana gaji (2000) datang dua kali yang merupakan catatan duplikat dari tabel asli.

+----------+
| SALARY   |
+----------+
|  1500.00 |
|  2000.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+

Sekarang, mari kita gunakan kata kunci DISTINCT dengan query SELECT di atas dan kemudian lihat hasilnya.

SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

Ini akan menghasilkan hasil sebagai berikut di mana kami tidak memiliki entri duplikat.

+----------+
| SALARY   |
+----------+
|  1500.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+

SQL - Hasil SORTING

SQL ORDER BYklausa digunakan untuk mengurutkan data dalam urutan naik atau turun, berdasarkan satu atau beberapa kolom. Beberapa database mengurutkan hasil kueri dalam urutan menaik secara default.

Sintaksis

Sintaks dasar klausa ORDER BY yang akan digunakan untuk mengurutkan hasil dalam urutan naik atau turun adalah sebagai berikut -

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

Anda dapat menggunakan lebih dari satu kolom di klausa ORDER BY. Pastikan kolom apa pun yang Anda gunakan untuk mengurutkan, kolom itu harus ada di daftar kolom.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut ini adalah contoh yang akan mengurutkan hasil dalam urutan menaik menurut NAMA dan GAJI.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME, SALARY;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

Blok kode berikut memiliki contoh, yang akan mengurutkan hasil dalam urutan menurun menurut NAME.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME DESC;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
+----+----------+-----+-----------+----------+

Untuk mengambil baris dengan urutan pilihan mereka sendiri, query SELECT yang digunakan adalah sebagai berikut -

SQL> SELECT * FROM CUSTOMERS
   ORDER BY (CASE ADDRESS
   WHEN 'DELHI' 	 THEN 1
   WHEN 'BHOPAL' 	 THEN 2
   WHEN 'KOTA' 	 THEN 3
   WHEN 'AHMEDABAD' THEN 4
   WHEN 'MP' 	THEN 5
   ELSE 100 END) ASC, ADDRESS DESC;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

Ini akan mengurutkan pelanggan berdasarkan ADDRESS di Anda ownoOrderpreferensi terlebih dahulu dan dalam urutan alami untuk alamat yang tersisa. Selain itu, Alamat yang tersisa akan diurutkan dalam urutan abjad terbalik.

SQL - Batasan

Batasan adalah aturan yang diberlakukan pada kolom data tabel. Ini digunakan untuk membatasi jenis data yang bisa masuk ke dalam tabel. Ini memastikan keakuratan dan keandalan data dalam database.

Batasan dapat berupa level kolom atau level tabel. Batasan tingkat kolom diterapkan hanya untuk satu kolom, sedangkan batasan tingkat tabel diterapkan ke seluruh tabel.

Berikut adalah beberapa kendala yang paling umum digunakan yang tersedia di SQL. Batasan ini telah dibahas dalam bab Konsep SQL - RDBMS , tetapi ada baiknya untuk merevisinya saat ini.

  • NOT NULL Constraint - Memastikan bahwa kolom tidak dapat memiliki nilai NULL.

  • Batasan DEFAULT - Memberikan nilai default untuk kolom saat tidak ada yang ditentukan.

  • Batasan UNIK - Memastikan bahwa semua nilai dalam kolom berbeda.

  • PRIMARY Key - Secara unik mengidentifikasi setiap baris / record dalam tabel database.

  • FOREIGN Key - Secara unik mengidentifikasi baris / record di salah satu tabel database yang diberikan.

  • PERIKSA Kendala - Batasan PERIKSA memastikan bahwa semua nilai dalam kolom memenuhi kondisi tertentu.

  • INDEX - Digunakan untuk membuat dan mengambil data dari database dengan sangat cepat.

Batasan dapat ditentukan saat tabel dibuat dengan pernyataan CREATE TABLE atau Anda dapat menggunakan pernyataan ALTER TABLE untuk membuat batasan bahkan setelah tabel dibuat.

Menghilangkan Kendala

Batasan apa pun yang telah Anda tentukan dapat dihilangkan dengan menggunakan perintah ALTER TABLE dengan opsi DROP CONSTRAINT.

Misalnya, untuk menghapus batasan kunci utama di tabel KARYAWAN, Anda dapat menggunakan perintah berikut.

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

Beberapa implementasi mungkin menyediakan jalan pintas untuk menghilangkan batasan tertentu. Misalnya, untuk menghapus batasan kunci utama untuk tabel di Oracle, Anda dapat menggunakan perintah berikut.

ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

Beberapa implementasi memungkinkan Anda menonaktifkan batasan. Alih-alih menghilangkan batasan dari database secara permanen, Anda mungkin ingin menonaktifkan batasan sementara dan mengaktifkannya nanti.

Batasan Integritas

Batasan integritas digunakan untuk memastikan akurasi dan konsistensi data dalam database relasional. Integritas data ditangani dalam database relasional melalui konsep integritas referensial.

Ada banyak jenis batasan integritas yang berperan Referential Integrity (RI). Batasan ini termasuk Kunci Utama, Kunci Asing, Kendala Unik dan kendala lain yang disebutkan di atas.

SQL - Menggunakan Gabungan

SQL Joinsklausa digunakan untuk menggabungkan rekaman dari dua atau lebih tabel dalam database. JOIN adalah cara untuk menggabungkan bidang dari dua tabel dengan menggunakan nilai yang sama untuk masing-masing.

Pertimbangkan dua tabel berikut -

Table 1 - Meja PELANGGAN

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - Tabel ORDERS

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini dalam pernyataan SELECT kita seperti yang ditunjukkan di bawah ini.

SQL> SELECT ID, NAME, AGE, AMOUNT
   FROM CUSTOMERS, ORDERS
   WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Ini akan menghasilkan hasil sebagai berikut.

+----+----------+-----+--------+
| ID | NAME     | AGE | AMOUNT |
+----+----------+-----+--------+
|  3 | kaushik  |  23 |   3000 |
|  3 | kaushik  |  23 |   1500 |
|  2 | Khilan   |  25 |   1560 |
|  4 | Chaitali |  25 |   2060 |
+----+----------+-----+--------+

Di sini, terlihat bahwa penggabungan dilakukan di klausa WHERE. Beberapa operator dapat digunakan untuk menggabungkan tabel, seperti =, <,>, <>, <=,> =,! =, ANTARA, SUKA, dan BUKAN; semuanya dapat digunakan untuk menggabungkan tabel. Namun, operator yang paling umum adalah simbol sama dengan.

Ada berbagai jenis gabungan yang tersedia di SQL -

  • INNER JOIN - mengembalikan baris jika ada kecocokan di kedua tabel.

  • LEFT JOIN - mengembalikan semua baris dari tabel kiri, meskipun tidak ada kecocokan di tabel kanan.

  • RIGHT JOIN - mengembalikan semua baris dari tabel kanan, meskipun tidak ada kecocokan di tabel kiri.

  • FULL JOIN - mengembalikan baris ketika ada kecocokan di salah satu tabel.

  • SELF JOIN - digunakan untuk menggabungkan tabel ke tabel itu sendiri seolah-olah tabel adalah dua tabel, untuk sementara mengganti nama setidaknya satu tabel dalam pernyataan SQL.

  • CARTESIAN JOIN - mengembalikan produk Cartesian dari kumpulan record dari dua atau lebih tabel yang digabungkan.

Sekarang mari kita bahas masing-masing gabungan ini secara rinci.

KLAUSUL SQL - UNIONS

Klausa / operator SQL UNION digunakan untuk menggabungkan hasil dari dua atau lebih pernyataan SELECT tanpa mengembalikan baris duplikat.

Untuk menggunakan klausa UNION ini, setiap pernyataan SELECT harus memiliki

  • Jumlah kolom yang sama dipilih
  • Jumlah ekspresi kolom yang sama
  • Tipe data yang sama dan
  • Miliki mereka dalam urutan yang sama

Namun panjangnya tidak harus sama.

Sintaksis

Sintaks dasar a UNION klausa adalah sebagai berikut -

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Di sini, kondisi yang diberikan dapat berupa ekspresi apa pun berdasarkan kebutuhan Anda.

Contoh

Perhatikan dua tabel berikut.

Table 1 - Tabel PELANGGAN adalah sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - Tabel ORDERS adalah sebagai berikut.

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini dalam pernyataan SELECT kita sebagai berikut -

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Ini akan menghasilkan hasil sebagai berikut -

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    1 | Ramesh   |   NULL | NULL                |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
|    5 | Hardik   |   NULL | NULL                |
|    6 | Komal    |   NULL | NULL                |
|    7 | Muffy    |   NULL | NULL                |
+------+----------+--------+---------------------+

Klausul UNION ALL

Operator UNION ALL digunakan untuk menggabungkan hasil dari dua pernyataan SELECT termasuk baris duplikat.

Aturan yang sama yang berlaku untuk klausul UNION akan berlaku untuk operator UNION ALL.

Sintaksis

Sintaks dasar file UNION ALL adalah sebagai berikut.

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Di sini, kondisi yang diberikan dapat berupa ekspresi apa pun berdasarkan kebutuhan Anda.

Contoh

Perhatikan dua tabel berikut,

Table 1 - Tabel PELANGGAN adalah sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - Tabel ORDERS adalah sebagai berikut.

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini dalam pernyataan SELECT kita sebagai berikut -

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION ALL
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Ini akan menghasilkan hasil sebagai berikut -

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    1 | Ramesh   |   NULL | NULL                |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
|    5 | Hardik   |   NULL | NULL                |
|    6 | Komal    |   NULL | NULL                |
|    7 | Muffy    |   NULL | NULL                |
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
+------+----------+--------+---------------------+

Ada dua klausa lainnya (yaitu, operator), yang seperti klausa UNION.

  • SQL INTERSECT Clause - Ini digunakan untuk menggabungkan dua pernyataan SELECT, tetapi hanya mengembalikan baris dari pernyataan SELECT pertama yang identik dengan baris dalam pernyataan SELECT kedua.

  • SQL EXCEPT Clause - Ini menggabungkan dua pernyataan SELECT dan mengembalikan baris dari pernyataan SELECT pertama yang tidak dikembalikan oleh pernyataan SELECT kedua.

SQL - Nilai NULL

SQL NULLadalah istilah yang digunakan untuk mewakili nilai yang hilang. Nilai NULL dalam tabel adalah nilai di bidang yang tampaknya kosong.

Bidang dengan nilai NULL adalah bidang tanpa nilai. Sangat penting untuk memahami bahwa nilai NULL berbeda dari nilai nol atau bidang yang berisi spasi.

Sintaksis

Sintaks dasar NULL sambil membuat tabel.

SQL> CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

Sini, NOT NULLmenandakan bahwa kolom harus selalu menerima nilai eksplisit dari tipe data yang diberikan. Ada dua kolom di mana kami tidak menggunakan NOT NULL, yang berarti kolom ini bisa menjadi NULL.

Bidang dengan nilai NULL adalah bidang yang dibiarkan kosong selama pembuatan catatan.

Contoh

Nilai NULL dapat menyebabkan masalah saat memilih data. Namun, karena saat membandingkan nilai yang tidak diketahui dengan nilai lain, hasilnya selalu tidak diketahui dan tidak disertakan dalam hasil. Anda harus menggunakanIS NULL atau IS NOT NULL operator untuk memeriksa nilai NULL.

Pertimbangkan tabel CUSTOMERS berikut yang memiliki record seperti yang ditunjukkan di bawah ini.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |          |
|  7 | Muffy    |  24 | Indore    |          |
+----+----------+-----+-----------+----------+

Sekarang, berikut adalah penggunaan file IS NOT NULLoperator.

SQL> SELECT  ID, NAME, AGE, ADDRESS, SALARY
   FROM CUSTOMERS
   WHERE SALARY IS NOT NULL;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
+----+----------+-----+-----------+----------+

Sekarang, berikut adalah penggunaan file IS NULL operator.

SQL> SELECT  ID, NAME, AGE, ADDRESS, SALARY
   FROM CUSTOMERS
   WHERE SALARY IS NULL;

Ini akan menghasilkan hasil sebagai berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  6 | Komal    |  22 | MP        |          |
|  7 | Muffy    |  24 | Indore    |          |
+----+----------+-----+-----------+----------+

SQL - Sintaks Alias

Anda dapat mengganti nama tabel atau kolom untuk sementara dengan memberikan nama lain yang disebut Alias. Penggunaan alias tabel adalah untuk mengganti nama tabel dalam pernyataan SQL tertentu. Penggantian nama adalah perubahan sementara dan nama tabel sebenarnya tidak berubah di database. Alias ​​kolom digunakan untuk mengganti nama kolom tabel untuk tujuan kueri SQL tertentu.

Sintaksis

Sintaks dasar a table alias adalah sebagai berikut.

SELECT column1, column2....
FROM table_name AS alias_name
WHERE [condition];

Sintaks dasar a column alias adalah sebagai berikut.

SELECT column_name AS alias_name
FROM table_name
WHERE [condition];

Contoh

Perhatikan dua tabel berikut.

Table 1 - Tabel PELANGGAN adalah sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - Tabel ORDERS adalah sebagai berikut.

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Sekarang, blok kode berikut menunjukkan penggunaan file table alias.

SQL> SELECT C.ID, C.NAME, C.AGE, O.AMOUNT 
   FROM CUSTOMERS AS C, ORDERS AS O
   WHERE  C.ID = O.CUSTOMER_ID;

Ini akan menghasilkan hasil sebagai berikut.

+----+----------+-----+--------+
| ID | NAME     | AGE | AMOUNT |
+----+----------+-----+--------+
|  3 | kaushik  |  23 |   3000 |
|  3 | kaushik  |  23 |   1500 |
|  2 | Khilan   |  25 |   1560 |
|  4 | Chaitali |  25 |   2060 |
+----+----------+-----+--------+

Berikut adalah penggunaan a column alias.

SQL> SELECT  ID AS CUSTOMER_ID, NAME AS CUSTOMER_NAME
   FROM CUSTOMERS
   WHERE SALARY IS NOT NULL;

Ini akan menghasilkan hasil sebagai berikut.

+-------------+---------------+
| CUSTOMER_ID | CUSTOMER_NAME |
+-------------+---------------+
|           1 | Ramesh        |
|           2 | Khilan        |
|           3 | kaushik       |
|           4 | Chaitali      |
|           5 | Hardik        |
|           6 | Komal         |
|           7 | Muffy         |
+-------------+---------------+

SQL - Indeks

Indeks adalah special lookup tablesyang dapat digunakan mesin telusur database untuk mempercepat pengambilan data. Sederhananya, indeks adalah penunjuk ke data dalam tabel. Indeks dalam database sangat mirip dengan indeks di bagian belakang buku.

Misalnya, jika Anda ingin mereferensikan semua halaman dalam buku yang membahas topik tertentu, pertama-tama Anda merujuk ke indeks, yang mencantumkan semua topik menurut abjad dan kemudian merujuk ke satu atau beberapa nomor halaman tertentu.

Indeks membantu mempercepat SELECT kueri dan WHERE klausa, tetapi memperlambat input data, dengan UPDATE dan INSERTpernyataan. Indeks dapat dibuat atau dihapus tanpa berpengaruh pada data.

Membuat indeks melibatkan CREATE INDEX pernyataan, yang memungkinkan Anda untuk memberi nama indeks, untuk menentukan tabel dan kolom atau kolom mana yang akan diindeks, dan untuk menunjukkan apakah indeks dalam urutan naik atau turun.

Indeks juga bisa unik, seperti UNIQUE kendala, dalam indeks mencegah entri duplikat di kolom atau kombinasi kolom yang ada indeks.

Perintah CREATE INDEX

Sintaks dasar a CREATE INDEX adalah sebagai berikut.

CREATE INDEX index_name ON table_name;

Indeks Kolom Tunggal

Indeks satu kolom dibuat hanya berdasarkan satu kolom tabel. Sintaks dasarnya adalah sebagai berikut.

CREATE INDEX index_name
ON table_name (column_name);

Indeks Unik

Indeks unik digunakan tidak hanya untuk kinerja, tetapi juga untuk integritas data. Indeks unik tidak mengizinkan nilai duplikat dimasukkan ke dalam tabel. Sintaks dasarnya adalah sebagai berikut.

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Indeks Komposit

Indeks komposit adalah indeks pada dua atau lebih kolom dari sebuah tabel. Sintaks dasarnya adalah sebagai berikut.

CREATE INDEX index_name
on table_name (column1, column2);

Apakah akan membuat indeks kolom tunggal atau indeks gabungan, pertimbangkan kolom yang mungkin sering Anda gunakan dalam klausa WHERE kueri sebagai kondisi filter.

Jika hanya ada satu kolom yang digunakan, indeks satu kolom harus menjadi pilihan. Jika ada dua atau lebih kolom yang sering digunakan di klausa WHERE sebagai filter, indeks komposit akan menjadi pilihan terbaik.

Indeks Implisit

Indeks implisit adalah indeks yang secara otomatis dibuat oleh server database saat objek dibuat. Indeks secara otomatis dibuat untuk batasan kunci utama dan batasan unik.

Perintah DROP INDEX

Indeks dapat dihapus menggunakan SQL DROPperintah. Perhatian harus diberikan saat menurunkan indeks karena kinerja dapat melambat atau meningkat.

Sintaks dasarnya adalah sebagai berikut -

DROP INDEX index_name;

Anda dapat memeriksa bab Batasan INDEX untuk melihat beberapa contoh aktual tentang Indeks.

Kapan indeks harus dihindari?

Meskipun indeks dimaksudkan untuk meningkatkan kinerja database, ada kalanya indeks harus dihindari.

Panduan berikut menunjukkan kapan penggunaan indeks harus dipertimbangkan kembali.

  • Indeks tidak boleh digunakan pada tabel kecil.

  • Tabel yang sering melakukan pembaruan batch besar atau operasi penyisipan.

  • Indeks tidak boleh digunakan pada kolom yang berisi nilai NULL dalam jumlah tinggi.

  • Kolom yang sering dimanipulasi tidak boleh diindeks.

SQL - Perintah ALTER TABLE

SQL ALTER TABLEperintah digunakan untuk menambah, menghapus atau mengubah kolom dalam tabel yang sudah ada. Anda juga harus menggunakan perintah ALTER TABLE untuk menambah dan melepaskan berbagai batasan pada tabel yang ada.

Sintaksis

Sintaks dasar dari perintah ALTER TABLE untuk menambahkan file New Column dalam tabel yang ada adalah sebagai berikut.

ALTER TABLE table_name ADD column_name datatype;

Sintaks dasar dari perintah ALTER TABLE menjadi DROP COLUMN dalam tabel yang ada adalah sebagai berikut.

ALTER TABLE table_name DROP COLUMN column_name;

Sintaks dasar dari perintah ALTER TABLE untuk mengubah file DATA TYPE kolom dalam tabel adalah sebagai berikut.

ALTER TABLE table_name MODIFY COLUMN column_name datatype;

Sintaks dasar dari perintah ALTER TABLE untuk menambahkan file NOT NULL kendala kolom dalam tabel adalah sebagai berikut.

ALTER TABLE table_name MODIFY column_name datatype NOT NULL;

Sintaks dasar ALTER TABLE to ADD UNIQUE CONSTRAINT ke tabel adalah sebagai berikut.

ALTER TABLE table_name 
ADD CONSTRAINT MyUniqueConstraint UNIQUE(column1, column2...);

Sintaks dasar dari perintah ALTER TABLE menjadi ADD CHECK CONSTRAINT ke tabel adalah sebagai berikut.

ALTER TABLE table_name 
ADD CONSTRAINT MyUniqueConstraint CHECK (CONDITION);

Sintaks dasar dari perintah ALTER TABLE menjadi ADD PRIMARY KEY batasan tabel adalah sebagai berikut.

ALTER TABLE table_name 
ADD CONSTRAINT MyPrimaryKey PRIMARY KEY (column1, column2...);

Sintaks dasar dari perintah ALTER TABLE menjadi DROP CONSTRAINT dari tabel adalah sebagai berikut.

ALTER TABLE table_name 
DROP CONSTRAINT MyUniqueConstraint;

Jika Anda menggunakan MySQL, kodenya adalah sebagai berikut -

ALTER TABLE table_name 
DROP INDEX MyUniqueConstraint;

Sintaks dasar dari perintah ALTER TABLE menjadi DROP PRIMARY KEY kendala dari tabel adalah sebagai berikut.

ALTER TABLE table_name 
DROP CONSTRAINT MyPrimaryKey;

Jika Anda menggunakan MySQL, kodenya adalah sebagai berikut -

ALTER TABLE table_name 
DROP PRIMARY KEY;

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut adalah contoh untuk MENAMBAHKAN a New Column ke tabel yang ada -

ALTER TABLE CUSTOMERS ADD SEX char(1);

Sekarang, tabel CUSTOMERS diubah dan berikut ini akan menjadi output dari pernyataan SELECT.

+----+---------+-----+-----------+----------+------+
| ID | NAME    | AGE | ADDRESS   | SALARY   | SEX  |
+----+---------+-----+-----------+----------+------+
|  1 | Ramesh  |  32 | Ahmedabad |  2000.00 | NULL |
|  2 | Ramesh  |  25 | Delhi     |  1500.00 | NULL |
|  3 | kaushik |  23 | Kota      |  2000.00 | NULL |
|  4 | kaushik |  25 | Mumbai    |  6500.00 | NULL |
|  5 | Hardik  |  27 | Bhopal    |  8500.00 | NULL |
|  6 | Komal   |  22 | MP        |  4500.00 | NULL |
|  7 | Muffy   |  24 | Indore    | 10000.00 | NULL |
+----+---------+-----+-----------+----------+------+

Berikut adalah contoh kolom jenis kelamin DROP dari tabel yang ada.

ALTER TABLE CUSTOMERS DROP SEX;

Sekarang, tabel CUSTOMERS diubah dan berikut akan menjadi output dari pernyataan SELECT.

+----+---------+-----+-----------+----------+
| ID | NAME    | AGE | ADDRESS   | SALARY   |
+----+---------+-----+-----------+----------+
|  1 | Ramesh  |  32 | Ahmedabad |  2000.00 |
|  2 | Ramesh  |  25 | Delhi     |  1500.00 |
|  3 | kaushik |  23 | Kota      |  2000.00 |
|  4 | kaushik |  25 | Mumbai    |  6500.00 |
|  5 | Hardik  |  27 | Bhopal    |  8500.00 |
|  6 | Komal   |  22 | MP        |  4500.00 |
|  7 | Muffy   |  24 | Indore    | 10000.00 |
+----+---------+-----+-----------+----------+

SQL - Perintah TRUNCATE TABLE

SQL TRUNCATE TABLE perintah digunakan untuk menghapus data lengkap dari tabel yang ada.

Anda juga dapat menggunakan perintah DROP TABLE untuk menghapus tabel lengkap tetapi itu akan menghapus struktur tabel lengkap dari database dan Anda perlu membuat ulang tabel ini sekali lagi jika ingin menyimpan beberapa data.

Sintaksis

Sintaks dasar a TRUNCATE TABLE perintahnya adalah sebagai berikut.

TRUNCATE TABLE  table_name;

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut adalah contoh perintah Truncate.

SQL > TRUNCATE TABLE CUSTOMERS;

Sekarang, tabel CUSTOMERS dipotong dan output dari pernyataan SELECT akan seperti yang ditunjukkan pada blok kode di bawah ini -

SQL> SELECT * FROM CUSTOMERS;
Empty set (0.00 sec)

SQL - Menggunakan Views

Tampilan tidak lebih dari pernyataan SQL yang disimpan dalam database dengan nama terkait. Tampilan sebenarnya adalah komposisi tabel dalam bentuk kueri SQL yang telah ditentukan sebelumnya.

Tampilan dapat berisi semua baris tabel atau memilih baris dari tabel. Tampilan dapat dibuat dari satu atau banyak tabel yang bergantung pada kueri SQL tertulis untuk membuat tampilan.

Views, yang merupakan jenis tabel virtual yang memungkinkan pengguna melakukan hal berikut -

  • Membuat struktur data dengan cara yang menurut pengguna atau kelas pengguna alami atau intuitif.

  • Batasi akses ke data sedemikian rupa sehingga pengguna dapat melihat dan (terkadang) mengubah apa yang mereka butuhkan dan tidak lebih.

  • Meringkas data dari berbagai tabel yang dapat digunakan untuk menghasilkan laporan.

Membuat Tampilan

Tampilan database dibuat menggunakan CREATE VIEWpernyataan. Tampilan dapat dibuat dari satu tabel, beberapa tabel atau tampilan lain.

Untuk membuat tampilan, pengguna harus memiliki hak istimewa sistem yang sesuai dengan penerapan tertentu.

Dasar CREATE VIEW sintaksnya adalah sebagai berikut -

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Anda dapat menyertakan beberapa tabel dalam pernyataan SELECT Anda dengan cara yang sama seperti Anda menggunakannya dalam kueri SQL SELECT normal.

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut contoh pembuatan view dari tabel CUSTOMERS. Tampilan ini akan digunakan untuk memiliki nama dan usia pelanggan dari tabel CUSTOMERS.

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

Sekarang, Anda dapat membuat kueri CUSTOMERS_VIEW dengan cara yang sama seperti Anda meminta tabel sebenarnya. Berikut adalah contoh yang sama.

SQL > SELECT * FROM CUSTOMERS_VIEW;

Ini akan menghasilkan hasil sebagai berikut.

+----------+-----+
| name     | age |
+----------+-----+
| Ramesh   |  32 |
| Khilan   |  25 |
| kaushik  |  23 |
| Chaitali |  25 |
| Hardik   |  27 |
| Komal    |  22 |
| Muffy    |  24 |
+----------+-----+

The WITH CHECK OPTION

The WITH CHECK OPTION adalah pilihan pernyataan CREATE VIEW. Tujuan dari WITH CHECK OPTION adalah untuk memastikan bahwa semua UPDATE dan INSERT memenuhi kondisi dalam definisi tampilan.

Jika mereka tidak memenuhi kondisi, UPDATE atau INSERT mengembalikan kesalahan.

Blok kode berikut memiliki contoh membuat CUSTOMERS_VIEW tampilan yang sama dengan WITH CHECK OPTION.

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

Dengan PILIHAN PERIKSA dalam hal ini harus menolak masuknya nilai NULL apa pun di kolom AGE tampilan, karena tampilan ditentukan oleh data yang tidak memiliki nilai NULL di kolom AGE.

Memperbarui Tampilan

Tampilan dapat diperbarui dalam kondisi tertentu yang diberikan di bawah ini -

  • Klausa SELECT tidak boleh berisi kata kunci DISTINCT.

  • Klausa SELECT mungkin tidak berisi fungsi ringkasan.

  • Klausa SELECT mungkin tidak berisi fungsi set.

  • Klausa SELECT mungkin tidak berisi operator set.

  • Klausa SELECT mungkin tidak berisi klausa ORDER BY.

  • Klausa FROM mungkin tidak berisi banyak tabel.

  • Klausa WHERE mungkin tidak berisi subkueri.

  • Kueri tidak boleh berisi GROUP BY atau HAVING.

  • Kolom kalkulasi mungkin tidak diperbarui.

  • Semua kolom NOT NULL dari tabel dasar harus disertakan dalam tampilan agar kueri INSERT berfungsi.

Jadi, jika tampilan memenuhi semua aturan yang disebutkan di atas, maka Anda dapat memperbarui tampilan tersebut. Blok kode berikut memiliki contoh untuk memperbarui usia Ramesh.

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 35
   WHERE name = 'Ramesh';

Ini pada akhirnya akan memperbarui CUSTOMERS tabel dasar dan hal yang sama akan tercermin dalam tampilan itu sendiri. Sekarang, coba untuk query tabel dasar dan pernyataan SELECT akan menghasilkan hasil sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Memasukkan Baris ke dalam Tampilan

Deretan data dapat disisipkan ke dalam tampilan. Aturan yang sama yang berlaku untuk perintah UPDATE juga berlaku untuk perintah INSERT.

Di sini, kami tidak dapat menyisipkan baris dalam CUSTOMERS_VIEW karena kami belum menyertakan semua kolom NOT NULL dalam tampilan ini, jika tidak, Anda dapat menyisipkan baris dalam tampilan dengan cara yang sama seperti Anda memasukkannya ke dalam tabel.

Menghapus Baris ke dalam Tampilan

Baris data dapat dihapus dari tampilan. Aturan yang sama yang berlaku untuk perintah UPDATE dan INSERT berlaku untuk perintah DELETE.

Berikut adalah contoh untuk menghapus record yang memiliki AGE = 22.

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 22;

Ini pada akhirnya akan menghapus satu baris dari tabel dasar CUSTOMERS dan hal yang sama akan terlihat dalam tampilan itu sendiri. Sekarang, coba untuk query tabel dasar dan pernyataan SELECT akan menghasilkan hasil sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Menjatuhkan Tampilan

Jelas, di mana Anda memiliki pandangan, Anda memerlukan cara untuk melepaskan tampilan jika tidak lagi diperlukan. Sintaksnya sangat sederhana dan diberikan di bawah ini -

DROP VIEW view_name;

Berikut adalah contoh untuk menghapus CUSTOMERS_VIEW dari tabel CUSTOMERS.

DROP VIEW CUSTOMERS_VIEW;

SQL - Memiliki Klausul

Itu HAVING Clause memungkinkan Anda untuk menentukan kondisi yang memfilter hasil grup mana yang muncul dalam hasil.

Klausa WHERE menempatkan kondisi pada kolom yang dipilih, sedangkan klausa HAVING menempatkan kondisi pada grup yang dibuat oleh klausa GROUP BY.

Sintaksis

Blok kode berikut menunjukkan posisi HAVING Clause dalam sebuah kueri.

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

Klausa HAVING harus mengikuti klausa GROUP BY dalam kueri dan juga harus mendahului klausa ORDER BY jika digunakan. Blok kode berikut memiliki sintaks dari pernyataan SELECT termasuk klausa HAVING -

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

Contoh

Pertimbangkan tabel PELANGGAN yang memiliki catatan berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut ini adalah contoh, yang akan menampilkan rekor untuk jumlah usia serupa yang akan lebih dari atau sama dengan 2.

SQL > SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
GROUP BY age
HAVING COUNT(age) >= 2;

Ini akan menghasilkan hasil sebagai berikut -

+----+--------+-----+---------+---------+
| ID | NAME   | AGE | ADDRESS | SALARY  |
+----+--------+-----+---------+---------+
|  2 | Khilan |  25 | Delhi   | 1500.00 |
+----+--------+-----+---------+---------+

SQL - Transaksi

Transaksi adalah unit kerja yang dilakukan terhadap database. Transaksi adalah unit atau urutan pekerjaan yang diselesaikan dalam urutan logis, baik secara manual oleh pengguna atau secara otomatis oleh beberapa jenis program database.

Transaksi adalah penyebaran satu atau lebih perubahan ke database. Misalnya, jika Anda membuat catatan atau memperbarui catatan atau menghapus catatan dari tabel, maka Anda sedang melakukan transaksi di tabel itu. Penting untuk mengontrol transaksi ini untuk memastikan integritas data dan untuk menangani kesalahan database.

Praktisnya, Anda akan menggabungkan banyak kueri SQL ke dalam grup dan Anda akan mengeksekusi semuanya bersama sebagai bagian dari transaksi.

Sifat Transaksi

Transaksi memiliki empat sifat standar berikut, biasanya disebut dengan akronim ACID.

  • Atomicity- memastikan bahwa semua operasi dalam unit kerja diselesaikan dengan sukses. Jika tidak, transaksi dibatalkan pada titik kegagalan dan semua operasi sebelumnya digulung kembali ke keadaan semula.

  • Consistency - memastikan bahwa database dengan benar mengubah status pada transaksi yang dilakukan dengan sukses.

  • Isolation - memungkinkan transaksi untuk beroperasi secara independen dan transparan satu sama lain.

  • Durability - memastikan bahwa hasil atau efek dari transaksi yang dilakukan tetap ada jika terjadi kegagalan sistem.

Kontrol Transaksi

Perintah berikut digunakan untuk mengontrol transaksi.

  • COMMIT - untuk menyimpan perubahan.

  • ROLLBACK - untuk mengembalikan perubahan.

  • SAVEPOINT - membuat poin dalam grup transaksi untuk ROLLBACK.

  • SET TRANSACTION - Menempatkan nama pada transaksi.

Perintah Kontrol Transaksional

Perintah kontrol transaksional hanya digunakan dengan DML Commandsseperti - INSERT, UPDATE dan DELETE saja. Mereka tidak dapat digunakan saat membuat tabel atau menjatuhkannya karena operasi ini secara otomatis dilakukan dalam database.

Perintah COMMIT

Perintah COMMIT adalah perintah transaksional yang digunakan untuk menyimpan perubahan yang dilakukan oleh transaksi ke database.

Perintah COMMIT adalah perintah transaksional yang digunakan untuk menyimpan perubahan yang dilakukan oleh transaksi ke database. Perintah COMMIT menyimpan semua transaksi ke database sejak perintah COMMIT atau ROLLBACK terakhir.

Sintaks untuk perintah COMMIT adalah sebagai berikut.

COMMIT;

Example

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut ini adalah contoh yang akan menghapus record tersebut dari tabel yang memiliki age = 25 dan kemudian COMMIT perubahan dalam database.

SQL> DELETE FROM CUSTOMERS
   WHERE AGE = 25;
SQL> COMMIT;

Jadi, dua baris dari tabel akan dihapus dan pernyataan SELECT akan menghasilkan hasil sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Perintah ROLLBACK

Perintah ROLLBACK adalah perintah transaksional yang digunakan untuk membatalkan transaksi yang belum disimpan ke database. Perintah ini hanya dapat digunakan untuk membatalkan transaksi sejak perintah COMMIT atau ROLLBACK terakhir dikeluarkan.

Sintaks untuk perintah ROLLBACK adalah sebagai berikut -

ROLLBACK;

Example

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Berikut ini adalah contoh, yang akan menghapus record tersebut dari tabel yang memiliki age = 25 dan kemudian ROLLBACK perubahan dalam database.

SQL> DELETE FROM CUSTOMERS
   WHERE AGE = 25;
SQL> ROLLBACK;

Dengan demikian, operasi penghapusan tidak akan mempengaruhi tabel dan pernyataan SELECT akan menghasilkan hasil sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Perintah SAVEPOINT

SAVEPOINT adalah titik dalam transaksi ketika Anda dapat mengembalikan transaksi ke titik tertentu tanpa memutar balik seluruh transaksi.

Sintaks untuk perintah SAVEPOINT seperti yang ditunjukkan di bawah ini.

SAVEPOINT SAVEPOINT_NAME;

Perintah ini hanya berfungsi dalam pembuatan SAVEPOINT di antara semua pernyataan transaksional. Perintah ROLLBACK digunakan untuk membatalkan sekelompok transaksi.

Sintaks untuk memutar kembali ke SAVEPOINT seperti yang ditunjukkan di bawah ini.

ROLLBACK TO SAVEPOINT_NAME;

Berikut adalah contoh di mana Anda berencana untuk menghapus tiga catatan berbeda dari tabel PELANGGAN. Anda ingin membuat SAVEPOINT sebelum setiap penghapusan, sehingga Anda dapat ROLLBACK ke SAVEPOINT mana pun kapan saja untuk mengembalikan data yang sesuai ke keadaan aslinya.

Example

Pertimbangkan tabel PELANGGAN yang memiliki catatan berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Blok kode berikut berisi rangkaian operasi.

SQL> SAVEPOINT SP1;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
1 row deleted.

Sekarang setelah tiga penghapusan dilakukan, mari kita asumsikan bahwa Anda telah berubah pikiran dan memutuskan untuk ROLLBACK ke SAVEPOINT yang Anda identifikasi sebagai SP2. Karena SP2 dibuat setelah penghapusan pertama, dua penghapusan terakhir dibatalkan -

SQL> ROLLBACK TO SP2;
Rollback complete.

Perhatikan bahwa hanya penghapusan pertama yang terjadi sejak Anda mengembalikan ke SP2.

SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+
6 rows selected.

Perintah RELEASE SAVEPOINT

Perintah RELEASE SAVEPOINT digunakan untuk menghapus SAVEPOINT yang telah Anda buat.

Sintaks untuk perintah RELEASE SAVEPOINT adalah sebagai berikut.

RELEASE SAVEPOINT SAVEPOINT_NAME;

Setelah SAVEPOINT dirilis, Anda tidak dapat lagi menggunakan perintah ROLLBACK untuk membatalkan transaksi yang dilakukan sejak SAVEPOINT terakhir.

Perintah SET TRANSACTION

Perintah SET TRANSACTION dapat digunakan untuk memulai transaksi database. Perintah ini digunakan untuk menentukan karakteristik transaksi yang mengikuti. Misalnya, Anda dapat menentukan transaksi menjadi hanya baca atau baca tulis.

Sintaks untuk perintah SET TRANSACTION adalah sebagai berikut.

SET TRANSACTION [ READ WRITE | READ ONLY ];

SQL - Operator Wildcard

Kita telah membahas tentang operator SQL LIKE, yang digunakan untuk membandingkan nilai dengan nilai serupa menggunakan operator wildcard.

SQL mendukung dua operator wildcard dalam hubungannya dengan operator LIKE yang dijelaskan secara rinci dalam tabel berikut.

Sr.No. Karakter Pengganti & Deskripsi
1

The percent sign (%)

Cocok dengan satu atau lebih karakter.

Note - MS Access menggunakan karakter wildcard asterisk (*) sebagai ganti karakter wildcard tanda persen (%).

2

The underscore (_)

Cocok dengan satu karakter.

Note - MS Access menggunakan tanda tanya (?) Dan bukan garis bawah (_) untuk mencocokkan salah satu karakter.

Tanda persen mewakili nol, satu atau beberapa karakter. Garis bawah mewakili satu angka atau karakter. Simbol-simbol ini dapat digunakan dalam kombinasi.

Sintaksis

Sintaks dasar dari operator '%' dan '_' adalah sebagai berikut.

SELECT * FROM table_name
WHERE column LIKE 'XXXX%'

or 

SELECT * FROM table_name
WHERE column LIKE '%XXXX%'

or

SELECT * FROM table_name
WHERE column LIKE 'XXXX_'

or

SELECT * FROM table_name
WHERE column LIKE '_XXXX'

or

SELECT * FROM table_name
WHERE column LIKE '_XXXX_'

Anda dapat menggabungkan jumlah N kondisi menggunakan operator DAN atau ATAU. Di sini, XXXX bisa berupa nilai numerik atau string apa pun.

Contoh

Tabel berikut memiliki sejumlah contoh yang menunjukkan bagian WHERE memiliki klausa LIKE yang berbeda dengan operator '%' dan '_'.

Sr.No. Pernyataan & Deskripsi
1

WHERE SALARY LIKE '200%'

Menemukan nilai apa pun yang dimulai dengan 200.

2

WHERE SALARY LIKE '%200%'

Menemukan nilai apa pun yang memiliki 200 di posisi mana pun.

3

WHERE SALARY LIKE '_00%'

Menemukan nilai apa pun yang memiliki 00 di posisi kedua dan ketiga.

4

WHERE SALARY LIKE '2_%_%'

Menemukan nilai apa pun yang dimulai dengan 2 dan setidaknya memiliki panjang 3 karakter.

5

WHERE SALARY LIKE '%2'

Menemukan nilai apa pun yang diakhiri dengan 2.

6

WHERE SALARY LIKE '_2%3'

Menemukan nilai apa pun yang memiliki 2 di posisi kedua dan diakhiri dengan 3.

7

WHERE SALARY LIKE '2___3'

Menemukan nilai apa pun dalam angka lima digit yang dimulai dengan 2 dan diakhiri dengan 3.

Mari kita ambil contoh nyata, pertimbangkan tabel CUSTOMERS yang memiliki record berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Blok kode berikut adalah contoh, yang akan menampilkan semua catatan dari tabel PELANGGAN di mana GAJI dimulai dengan 200.

SQL> SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '200%';

Ini akan menghasilkan hasil sebagai berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
+----+----------+-----+-----------+----------+

SQL - Fungsi Tanggal

Tabel berikut memiliki daftar semua fungsi penting terkait Tanggal dan Waktu yang tersedia melalui SQL. Ada berbagai fungsi lain yang didukung oleh RDBMS Anda. Daftar yang diberikan didasarkan pada MySQL RDBMS.

Sr.No. Deskripsi fungsi
1 TAMBAHKAN ()

Menambahkan tanggal

2 TAMBAHAN ()

Menambahkan waktu

3 CONVERT_TZ ()

Mengonversi dari satu zona waktu ke zona waktu lainnya

4 CURDATE ()

Mengembalikan tanggal sekarang

5 CURRENT_DATE (), CURRENT_DATE

Sinonim untuk CURDATE ()

6 CURRENT_TIME (), CURRENT_TIME

Sinonim untuk CURTIME ()

7 CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP

Sinonim untuk NOW ()

8 CURTIME ()

Mengembalikan waktu saat ini

9 DATE_ADD ()

Menambahkan dua tanggal

10 FORMAT TANGGAL()

Format tanggal seperti yang ditentukan

11 DATE_SUB ()

Mengurangi dua tanggal

12 TANGGAL()

Mengekstrak bagian tanggal dari ekspresi tanggal atau waktu

13 DATEDIFF ()

Mengurangi dua tanggal

14 HARI()

Sinonim dari DAYOFMONTH ()

15 DAYNAME ()

Mengembalikan nama hari kerja

16 DAYOFMONTH ()

Mengembalikan hari dalam sebulan (1-31)

17 HARI DALAM SEMINGGU()

Mengembalikan indeks hari kerja dari argumen

18 DAYOFYEAR ()

Mengembalikan hari dalam setahun (1-366)

19 EKSTRAK

Mengekstrak bagian dari tanggal

20 FROM_DAYS ()

Mengonversi nomor hari menjadi tanggal

21 FROM_UNIXTIME ()

Format tanggal sebagai stempel waktu UNIX

22 JAM()

Mengekstrak jam

23 HARI TERAKHIR

Mengembalikan hari terakhir bulan untuk argumen

24 LOCALTIME (), LOCALTIME

Sinonim dari SEKARANG ()

25 LOCALTIMESTAMP, LOCALTIMESTAMP ()

Sinonim dari SEKARANG ()

26 MAKEDATE ()

Membuat tanggal dari tahun dan hari dalam setahun

27 MAKETIME

MAKETIME ()

28 MIKRODETIK()

Mengembalikan mikrodetik dari argumen

29 MENIT()

Mengembalikan menit dari argumen

30 BULAN()

Kembalikan bulan sejak tanggal berlalu

31 MONTHNAME ()

Mengembalikan nama bulan

32 SEKARANG()

Mengembalikan tanggal dan waktu saat ini

33 PERIOD_ADD ()

Menambahkan periode ke tahun-bulan

34 PERIOD_DIFF ()

Mengembalikan jumlah bulan antar periode

35 PEREMPAT()

Mengembalikan kuartal dari argumen tanggal

36 SEC_TO_TIME ()

Mengonversi detik ke format 'HH: MM: SS'

37 KEDUA()

Mengembalikan detik (0-59)

38 STR_TO_DATE ()

Mengubah string menjadi tanggal

39 SUBDATE ()

Ketika dipanggil dengan tiga argumen, sinonim untuk DATE_SUB ()

40 SUBTIME ()

Mengurangi waktu

41 SYSDATE ()

Mengembalikan waktu saat fungsi dijalankan

42 FORMAT WAKTU()

Format sebagai waktu

43 TIME_TO_SEC ()

Mengembalikan argumen yang diubah menjadi detik

44 WAKTU()

Mengekstrak bagian waktu dari ekspresi yang diteruskan

45 TIMEDIFF ()

Mengurangi waktu

46 TIMESTAMP ()

Dengan satu argumen, fungsi ini mengembalikan ekspresi tanggal atau waktu. Dengan dua argumen, jumlah argumen

47 TIMESTAMPADD ()

Menambahkan interval ke ekspresi datetime

48 TIMESTAMPDIFF ()

Mengurangi interval dari ekspresi datetime

49 TO_DAYS ()

Mengembalikan argumen tanggal yang diubah menjadi hari

50 UNIX_TIMESTAMP ()

Mengembalikan stempel waktu UNIX

51 UTC_DATE ()

Mengembalikan tanggal UTC saat ini

52 UTC_TIME ()

Mengembalikan waktu UTC saat ini

53 UTC_TIMESTAMP ()

Mengembalikan tanggal dan waktu UTC saat ini

54 MINGGU()

Mengembalikan angka minggu

55 HARI KERJA()

Mengembalikan indeks hari kerja

56 WEEKOFYEAR ()

Mengembalikan minggu kalender dari tanggal tersebut (1-53)

57 TAHUN()

Mengembalikan tahun

58 TAHUNAN ()

Mengembalikan tahun dan minggu

ADDDATE (tanggal, INTERVAL unit expr), ADDDATE (expr, hari)

Saat dipanggil dengan bentuk INTERVAL dari argumen kedua, ADDDATE () adalah sinonim untuk DATE_ADD (). Fungsi terkait SUBDATE () adalah sinonim untuk DATE_SUB (). Untuk informasi tentang argumen unit INTERVAL, lihat diskusi untuk DATE_ADD ().

mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Ketika dipanggil dengan bentuk hari dari argumen kedua, MySQL memperlakukannya sebagai bilangan bulat jumlah hari yang akan ditambahkan ke expr.

mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ADDTIME (expr1, expr2)

ADDTIME () menambahkan expr2 ke expr1 dan mengembalikan hasilnya. Ekspresi expr1 adalah ekspresi waktu atau waktu, sedangkan ekspresi 2 adalah ekspresi waktu.

mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CONVERT_TZ (dt, from_tz, to_tz)

Ini mengonversi nilai datetime dt dari zona waktu yang diberikan oleh from_tz ke zona waktu yang diberikan oleh to_tz dan mengembalikan nilai yang dihasilkan. Fungsi ini mengembalikan NULL jika argumen tidak valid.

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')           |
+---------------------------------------------------------+
| 2004-01-01 13:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00')     |
+---------------------------------------------------------+
| 2004-01-01 22:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURDATE ()

Mengembalikan tanggal saat ini sebagai nilai dalam format 'YYYY-MM-DD' atau YYYYMMDD, bergantung pada apakah fungsi tersebut digunakan dalam string atau dalam konteks numerik.

mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE()                                               |
+---------------------------------------------------------+
| 1997-12-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0                                           |
+---------------------------------------------------------+
| 19971215                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_DATE dan CURRENT_DATE ()

CURRENT_DATE dan CURRENT_DATE () adalah sinonim untuk CURDATE ()

CURTIME ()

Mengembalikan waktu saat ini sebagai nilai dalam format 'HH: MM: SS' atau HHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam string atau dalam konteks numerik. Nilainya dinyatakan dalam zona waktu saat ini.

mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME()                                               |
+---------------------------------------------------------+
| 23:50:26                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0                                           |
+---------------------------------------------------------+
| 235026                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_TIME dan CURRENT_TIME ()

CURRENT_TIME dan CURRENT_TIME () adalah sinonim untuk CURTIME ().

CURRENT_TIMESTAMP dan CURRENT_TIMESTAMP ()

CURRENT_TIMESTAMP dan CURRENT_TIMESTAMP () adalah sinonim untuk NOW ().

DATE (expr)

Mengekstrak bagian tanggal dari tanggal atau ekspresi ekspresi datetime.

mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
|  2003-12-31                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATEDIFF (expr1, expr2)

DATEDIFF () mengembalikan expr1. expr2 dinyatakan sebagai nilai dalam hari dari satu tanggal ke tanggal lainnya. Baik expr1 dan expr2 adalah ekspresi tanggal atau tanggal dan waktu. Hanya bagian tanggal dari nilai yang digunakan dalam penghitungan.

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30')            |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_ADD (tanggal, INTERVAL unit expr), DATE_SUB (tanggal, INTERVAL unit expr)

Fungsi-fungsi ini melakukan aritmatika tanggal. Itudateadalah nilai DATETIME atau DATE yang menentukan tanggal mulai. Ituexpradalah ekspresi yang menentukan nilai interval yang akan ditambahkan atau dikurangi dari tanggal mulai. Ekspr adalah string; ini mungkin dimulai dengan '-' untuk interval negatif.

SEBUAH unit adalah kata kunci yang menunjukkan unit di mana ekspresi harus diinterpretasikan.

Itu INTERVAL kata kunci dan penentu unit tidak peka huruf besar / kecil.

Tabel berikut menunjukkan bentuk yang diharapkan dari argumen expr untuk setiap nilai unit.

Nilai unit ExprFormat yang diharapkan
MIKRODETIK MICROSECONDS
KEDUA DETIK
MENIT MENIT
JAM JAM
HARI HARI
MINGGU MINGGU
BULAN BULAN
PEREMPAT QUARTERS
TAHUN TAHUN
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'
MINUTE_SECOND 'MINUTES: SECONDS'
HOUR_MICROSECOND 'HOURS.MICROSECONDS'
HOUR_SECOND 'HOURS: MINUTES: SECONDS'
HOUR_MINUTE 'HOURS: MINUTES'
DAY_MICROSECOND 'DAYS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS: MINUTES: SECONDS'
DAY_MINUTE 'DAYS HOURS: MINUTES'
DAY_HOUR 'DAYS HOURS'
TAHUN BULAN 'YEARS-MONTHS'

Nilai QUARTER dan WEEKtersedia dari MySQL 5.0.0. Versi: kapan.

mysql> SELECT DATE_ADD('1997-12-31 23:59:59', 
   -> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 1998-01-01 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR)                 |
+---------------------------------------------------------+
| 1999-01-01 01:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_FORMAT (tanggal, format)

Perintah ini memformat nilai tanggal sesuai dengan format string.

Penentu berikut dapat digunakan dalam format string. Karakter '%' diperlukan sebelum karakter penentu format.

Sr.No. Penentu & Deskripsi
1

%a

Nama hari kerja yang disingkat (Sun..Sat)

2

%b

Nama bulan singkat (Jan..Dec)

3

%c

Bulan, numerik (0..12)

4

%D

Hari dalam sebulan dengan akhiran bahasa Inggris (0, 1, 2, 3,.)

5

%d

Hari dalam sebulan, numerik (00..31)

6

%e

Hari dalam sebulan, numerik (0..31)

7

%f

Mikrodetik (000000..999999)

8

%H

Jam (00..23)

9

%h

Jam (01..12)

10

%I

Jam (01..12)

11

%i

Menit, numerik (00..59)

12

%j

Hari dalam setahun (001..366)

13

%k

Jam (0..23)

14

%l

Jam (1..12)

15

%M

Nama bulan (Januari..Desember)

16

%m

Bulan, numerik (00..12)

17

%p

AM atau PM

18

%r

Waktu, 12 jam (jj: mm: dd diikuti oleh AM atau PM)

19

%S

Detik (00..59)

20

%s

Detik (00..59)

21

%T

Waktu, 24-jam (hh: mm: ss)

22

%U

Minggu (00..53), dimana hari Minggu adalah hari pertama dalam seminggu

23

%u

Minggu (00..53), dimana Senin adalah hari pertama dalam seminggu

24

%V

Minggu (01..53), dimana Minggu adalah hari pertama dalam seminggu; digunakan dengan% X

25

%v

Minggu (01..53), dimana Senin adalah hari pertama dalam seminggu; digunakan dengan% x

26

%W

Nama hari kerja (Minggu..Sabtu)

27

%w

Hari dalam seminggu (0 = Minggu..6 = Sabtu)

28

%X

Tahun untuk minggu dimana hari Minggu adalah hari pertama dalam seminggu, numerik, empat digit; digunakan dengan% V

29

%x

Tahun untuk minggu ini, di mana Senin adalah hari pertama dalam seminggu, numerik, empat digit; digunakan dengan% v

30

%Y

Tahun, numerik, empat digit

31

%y

Tahun, numerik (dua digit)

32

%%

A literal.%. karakter

33

%x

x, untuk any.x. tidak tercantum di atas

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y')          |
+---------------------------------------------------------+
| Saturday October 1997                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
   -> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 6                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_SUB (tanggal, INTERVAL unit expr)

Ini mirip dengan fungsi DATE_ADD ().

Hari tanggal)

DAY () adalah sinonim dari fungsi DAYOFMONTH ().

DAYNAME (tanggal)

Mengembalikan nama hari kerja untuk tanggal.

mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05')                                   |
+---------------------------------------------------------+
| Thursday                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFMONTH (tanggal)

Mengembalikan hari dalam sebulan untuk tanggal, dalam rentang 0 sampai 31.

mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03')                                |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFWEEK (tanggal)

Mengembalikan indeks hari kerja untuk tanggal (1 = Minggu, 2 = Senin,., 7 = Sabtu). Nilai indeks ini sesuai dengan standar ODBC.

mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03')                                  |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFYEAR (tanggal)

Mengembalikan hari dalam setahun untuk tanggal, dalam rentang 1 sampai 366.

mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03')                                 |
+---------------------------------------------------------+
| 34                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

EKSTRAK (satuan DARI tanggal)

Fungsi EXTRACT () menggunakan jenis penentu unit yang sama seperti DATE_ADD () atau DATE_SUB (), tetapi mengekstrak bagian dari tanggal daripada menjalankan aritmatika tanggal.

mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02')                         |
+---------------------------------------------------------+
| 1999                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03')          |
+---------------------------------------------------------+
| 199907                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

FROM_DAYS (N)

Diberikan nomor hari N, mengembalikan nilai DATE.

mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669)                                       |
+---------------------------------------------------------+
| 1997-10-07                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note- Gunakan FROM_DAYS () dengan hati-hati pada tanggal lama. Ini tidak dimaksudkan untuk digunakan dengan nilai-nilai yang mendahului munculnya kalender Gregorian (1582).

FROM_UNIXTIME (unix_timestamp)

FROM_UNIXTIME (unix_timestamp, format)

Mengembalikan representasi dari unix_timestampargumen sebagai nilai dalam format 'YYYY-MM-DD HH: MM: SS atau YYYYMMDDHHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam string atau dalam konteks numerik. Nilainya dinyatakan dalam zona waktu saat ini. Argumen unix_timestamp adalah nilai stempel waktu internal, yang dihasilkan olehUNIX_TIMESTAMP() fungsi.

Jika format diberikan, hasilnya diformat sesuai dengan format string, yang digunakan dengan cara yang sama seperti yang tercantum dalam entri untuk DATE_FORMAT() fungsi.

mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580)                                |
+---------------------------------------------------------+
| 1997-10-04 22:23:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

HOUR (waktu)

Mengembalikan jam untuk waktu. Rentang nilai hasil adalah 0 hingga 23 untuk nilai waktu-hari. Namun, kisaran nilai TIME sebenarnya jauh lebih besar, sehingga HOUR dapat mengembalikan nilai yang lebih besar dari 23.

mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03')                                        |
+---------------------------------------------------------+
| 10                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LAST_DAY (tanggal)

Mengambil nilai tanggal atau waktu dan mengembalikan nilai yang sesuai untuk hari terakhir bulan itu. Mengembalikan NULL jika argumen tidak valid.

mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05')                                  |
+---------------------------------------------------------+
| 2003-02-28                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LOCALTIME dan LOCALTIME ()

LOCALTIME dan LOCALTIME () adalah sinonim untuk NOW ().

LOCALTIMESTAMP dan LOCALTIMESTAMP ()

LOCALTIMESTAMP dan LOCALTIMESTAMP () adalah sinonim untuk NOW ().

MAKEDATE (year, dayofyear)

Mengembalikan tanggal, nilai tahun dan hari tertentu. Nilai dayofyear harus lebih besar dari 0 atau hasilnya adalah NULL.

mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32)                    |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01'                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MAKETIME (jam, menit, detik)

Mengembalikan nilai waktu yang dihitung dari argumen jam, menit, dan detik.

mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30)                                      |
+---------------------------------------------------------+
| '12:15:30'                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MICROSECOND (expr)

Mengembalikan mikrodetik dari ekspresi waktu atau tanggal waktu (expr) sebagai angka dalam rentang dari 0 hingga 999999.

mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456')                          |
+---------------------------------------------------------+
| 123456                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MINUTE (waktu)

Mengembalikan menit untuk waktu, dalam rentang 0 hingga 59.

mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03')                             |
+---------------------------------------------------------+
| 5                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MONTH (tanggal)

Mengembalikan bulan untuk tanggal, dalam rentang 0 sampai 12.

mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MONTHNAME (tanggal)

Menampilkan nama lengkap bulan untuk tanggal.

mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05')                                 |
+---------------------------------------------------------+
| February                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEKARANG()

Mengembalikan tanggal dan waktu saat ini sebagai nilai dalam format 'YYYY-MM-DD HH: MM: SS' atau YYYYMMDDHHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam konteks string atau numerik. Nilai ini dinyatakan dalam zona waktu saat ini.

mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW()                                                   |
+---------------------------------------------------------+
| 1997-12-15 23:50:26                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_ADD (P, N)

Menambahkan N bulan ke periode P (dalam format YYMM atau YYYYMM). Mengembalikan nilai dalam format YYYYMM. Perhatikan bahwa argumen periode P bukanlah nilai tanggal.

mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2)                                      |
+---------------------------------------------------------+
| 199803                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_DIFF (P1, P2)

Mengembalikan jumlah bulan antara periode P1 dan P2. Periode P1 dan P2 ini harus dalam format YYMM atau YYYYMM. Perhatikan bahwa argumen titik P1 dan P2 bukanlah nilai tanggal.

mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703)                                |
+---------------------------------------------------------+
| 11                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

QUARTER (tanggal)

Mengembalikan kuartal tahun ini untuk tanggal, dalam rentang 1 sampai 4.

mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Kedua kalinya)

Mengembalikan detik untuk waktu, dalam rentang 0 hingga 59.

mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03')                                      |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEC_TO_TIME (detik)

Mengembalikan argumen detik, dikonversi ke jam, menit dan detik, sebagai nilai dalam format 'HH: MM: SS' atau HHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam string atau konteks numerik.

mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378)                                       |
+---------------------------------------------------------+
| 00:39:38                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

STR_TO_DATE (str, format)

Ini adalah kebalikan dari fungsi DATE_FORMAT (). Dibutuhkan string str dan format string format. Fungsi STR_TO_DATE () mengembalikan nilai DATETIME jika format string berisi bagian tanggal dan waktu. Jika tidak, ini mengembalikan nilai DATE atau TIME jika string hanya berisi bagian tanggal atau waktu.

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y')                   |
+---------------------------------------------------------+
| 2004-04-31                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBDATE (tanggal, INTERVAL unit expr) dan SUBDATE (expr, hari)

Saat dipanggil dengan bentuk INTERVAL dari argumen kedua, SUBDATE () adalah sinonim untuk DATE_SUB (). Untuk informasi tentang argumen unit INTERVAL, lihat diskusi untuk DATE_ADD ().

mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBTIME (expr1, expr2)

Fungsi SUBTIME () mengembalikan expr1. expr2 dinyatakan sebagai nilai dalam format yang sama seperti expr1. Nilai expr1 adalah ekspresi waktu atau datetime, sedangkan nilai expr2 adalah ekspresi waktu.

mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
   -> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'...                 |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SYSDATE ()

Mengembalikan tanggal dan waktu saat ini sebagai nilai dalam format 'YYYY-MM-DD HH: MM: SS' atau YYYYMMDDHHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam string atau dalam konteks numerik.

mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE()                                               |
+---------------------------------------------------------+
| 2006-04-12 13:47:44                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME (expr)

Mengekstrak bagian waktu dari ekspresi waktu atau datetime expr dan mengembalikannya sebagai string.

mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
| 01:02:03                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMEDIFF (expr1, expr2)

Fungsi TIMEDIFF () mengembalikan expr1. expr2 dinyatakan sebagai nilai waktu. Nilai expr1 dan expr2 ini adalah ekspresi waktu atau tanggal dan waktu, tetapi keduanya harus berjenis sama.

mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
   -> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'.....              |
+---------------------------------------------------------+
|  46:58:57.999999                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMP (expr), TIMESTAMP (expr1, expr2)

Dengan satu argumen, fungsi ini mengembalikan ekspresi tanggal atau datetime sebagai nilai datetime. Dengan dua argumen, ini menambahkan ekspresi waktu expr2 ke ekspresi tanggal atau waktuexpr1 dan mengembalikan hasilnya sebagai nilai datetime.

mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31')                                 |
+---------------------------------------------------------+
| 2003-12-31 00:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPADD (unit, interval, datetime_expr)

Fungsi ini menambahkan interval ekspresi integer ke ekspresi tanggal atau waktu datetime_expr. Satuan untuk interval diberikan oleh argumen satuan, yang seharusnya salah satu dari nilai berikut -

  • FRAC_SECOND
  • KEDUA, MENIT
  • JAM, HARI
  • WEEK
  • MONTH
  • QUARTER atau
  • YEAR

Nilai unit dapat ditentukan menggunakan salah satu kata kunci seperti yang ditunjukkan atau dengan awalan SQL_TSI_.

Misalnya, DAY dan SQL_TSI_DAY keduanya legal.

mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02')                     |
+---------------------------------------------------------+
| 2003-01-02 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPDIFF (unit, datetime_expr1, datetime_expr2)

Mengembalikan perbedaan bilangan bulat antara ekspresi tanggal atau datetime datetime_expr1 dan datetime_expr2. Satuan hasil diberikan oleh argumen satuan. Nilai hukum untuk unit ini sama dengan yang tercantum dalam deskripsi fungsi TIMESTAMPADD ().

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01')          |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_FORMAT (waktu, format)

Fungsi ini digunakan seperti fungsi DATE_FORMAT (), tetapi string format mungkin berisi penentu format hanya untuk jam, menit dan detik.

Jika nilai waktu berisi bagian jam yang lebih besar dari 23,%H dan%k penentu format jam menghasilkan nilai yang lebih besar dari rentang biasanya 0 hingga 23. Penentu format jam lainnya menghasilkan nilai jam modulo 12.

mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l')              |
+---------------------------------------------------------+
| 100 100 04 04 4                                         |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_TO_SEC (waktu)

Mengembalikan argumen waktu yang diubah menjadi detik.

mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00')                                 |
+---------------------------------------------------------+
| 80580                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Tanggal hari ini)

Diberikan tanggal, mengembalikan nomor hari (jumlah hari sejak tahun 0).

mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501)                                         |
+---------------------------------------------------------+
| 728779                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UNIX_TIMESTAMP (), UNIX_TIMESTAMP (tanggal)

Jika dipanggil tanpa argumen, fungsi ini mengembalikan stempel waktu Unix (detik sejak '1970-01-01 00:00:00' UTC) sebagai integer tak bertanda. Jika UNIX_TIMESTAMP () dipanggil dengan argumen tanggal, ini mengembalikan nilai argumen sebagai detik sejak '1970-01-01 00:00:00' UTC. tanggal bisa berupa string DATE, string DATETIME, TIMESTAMP, atau angka dalam format YYMMDD atau YYYYMMDD.

mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP()                                        |
+---------------------------------------------------------+
| 882226357                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00')                   |
+---------------------------------------------------------+
| 875996580                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_DATE, UTC_DATE ()

Mengembalikan tanggal UTC saat ini sebagai nilai dalam format 'YYYY-MM-DD' atau YYYYMMDD, bergantung pada apakah fungsi tersebut digunakan dalam konteks string atau numerik.

mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0                              |
+---------------------------------------------------------+
| 2003-08-14, 20030814                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIME, UTC_TIME ()

Mengembalikan waktu UTC saat ini sebagai nilai dalam format 'HH: MM: SS' atau HHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam konteks string atau numerik.

mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0                              |
+---------------------------------------------------------+
| 18:07:53, 180753                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIMESTAMP, UTC_TIMESTAMP ()

Mengembalikan tanggal dan waktu UTC saat ini sebagai nilai dalam 'YYYY-MM-DD HH: MM: SS' atau dalam format YYYYMMDDHHMMSS, bergantung pada apakah fungsi tersebut digunakan dalam string atau dalam konteks numerik.

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0                    |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEK (tanggal [, mode])

Fungsi ini mengembalikan nomor minggu untuk tanggal. Bentuk dua argumen WEEK () memungkinkan Anda untuk menentukan apakah minggu dimulai pada hari Minggu atau hari Senin dan apakah nilai yang dikembalikan harus dalam kisaran dari 0 hingga 53 atau dari 1 hingga 53. Jika argumen mode dihilangkan, nilai variabel sistem default_week_format digunakan

Mode Hari Pertama dalam seminggu Jarak Minggu 1 adalah minggu pertama.
0 Minggu 0-53 dengan hari Minggu di tahun ini
1 Senin 0-53 dengan lebih dari 3 hari tahun ini
2 Minggu 1-53 dengan hari Minggu di tahun ini
3 Senin 1-53 dengan lebih dari 3 hari tahun ini
4 Minggu 0-53 dengan lebih dari 3 hari tahun ini
5 Senin 0-53 dengan hari Senin di tahun ini
6 Minggu 1-53 dengan lebih dari 3 hari tahun ini
7 Senin 1-53 dengan hari Senin di tahun ini
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20')                                      |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKDAY (tanggal)

Mengembalikan indeks hari kerja untuk tanggal (0 = Senin, 1 = Selasa,. 6 = Minggu).

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00')                          |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKOFYEAR (tanggal)

Mengembalikan minggu kalender dari tanggal sebagai angka dalam rentang dari 1 sampai 53. WEEKOFYEAR () adalah fungsi kompatibilitas yang setara dengan WEEK (tanggal, 3).

mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20')                                |
+---------------------------------------------------------+
| 8                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEAR (tanggal)

Mengembalikan tahun untuk tanggal, dalam rentang 1000 sampai 9999, atau 0 untuk .zero. tanggal.

mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03')                                        |
+---------------------------------------------------------+
| 1998                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEARWEEK (tanggal), YEARWEEK (tanggal, mode)

Mengembalikan tahun dan minggu untuk tanggal. Argumen mode bekerja persis seperti argumen mode ke fungsi WEEK (). Tahun dalam hasil mungkin berbeda dari tahun dalam argumen tanggal untuk minggu pertama dan minggu terakhir dalam setahun.

mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01')                  |
+---------------------------------------------------------+
| 198653                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note - Nomor minggu berbeda dari yang akan dikembalikan oleh fungsi WEEK () (0) untuk argumen opsional 0 atau 1, karena WEEK () lalu mengembalikan minggu dalam konteks tahun tertentu.

SQL - Tabel Sementara

Apa itu Tabel Sementara?

Ada RDBMS, yang mendukung tabel sementara. Tabel Sementara adalah fitur hebat yang memungkinkan Andastore and process intermediate results dengan menggunakan kapabilitas pemilihan, perbarui, dan gabung yang sama yang bisa Anda gunakan dengan tabel SQL Server pada umumnya.

Tabel sementara bisa sangat berguna dalam beberapa kasus untuk menyimpan data sementara. Hal terpenting yang harus diketahui untuk tabel sementara adalah tabel tersebut akan dihapus ketika sesi klien saat ini berakhir.

Tabel sementara tersedia di MySQL versi 3.23 dan seterusnya. Jika Anda menggunakan versi MySQL yang lebih lama dari 3.23, Anda tidak dapat menggunakan tabel sementara, tetapi Anda dapat menggunakanheap tables.

Seperti yang dinyatakan sebelumnya, tabel sementara hanya akan bertahan selama sesi tersebut hidup. Jika Anda menjalankan kode dalam skrip PHP, tabel sementara akan dihancurkan secara otomatis ketika skrip selesai dijalankan. Jika Anda terhubung ke server database MySQL melalui program klien MySQL, tabel sementara akan ada sampai Anda menutup klien atau menghancurkan tabel secara manual.

Contoh

Berikut adalah contoh yang menunjukkan penggunaan tabel sementara.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Ketika Anda mengeluarkan perintah SHOW TABLES, maka tabel sementara Anda tidak akan dicantumkan dalam daftar. Sekarang, jika Anda keluar dari sesi MySQL dan kemudian mengeluarkan perintah SELECT, Anda tidak akan menemukan data yang tersedia di database. Bahkan tabel sementara Anda tidak akan ada.

Menjatuhkan Tabel Sementara

Secara default, semua tabel sementara dihapus oleh MySQL ketika koneksi database Anda diakhiri. Masih jika Anda ingin menghapusnya di antaranya, Anda dapat melakukannya dengan menerbitkan fileDROP TABLE perintah.

Berikut ini adalah contoh tentang menghapus tabel sementara.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SALESSUMMARY;
mysql>  SELECT * FROM SALESSUMMARY;
ERROR 1146: Table 'TUTORIALS.SALESSUMMARY' doesn't exist

SQL - Tabel Klon

Mungkin ada situasi ketika Anda membutuhkan salinan tabel yang tepat dan perintah CREATE TABLE ... atau SELECT ... tidak sesuai dengan tujuan Anda karena salinan harus menyertakan indeks yang sama, nilai default, dan sebagainya.

Jika Anda menggunakan MySQL RDBMS, Anda dapat menangani situasi ini dengan mengikuti langkah-langkah yang diberikan di bawah ini -

  • Gunakan perintah SHOW CREATE TABLE untuk mendapatkan pernyataan CREATE TABLE yang menentukan struktur tabel sumber, indeks, dan semuanya.

  • Ubah pernyataan untuk mengubah nama tabel menjadi tabel klon dan jalankan pernyataan. Dengan cara ini Anda akan memiliki tabel klon yang tepat.

  • Secara opsional, jika Anda ingin isi tabel disalin juga, keluarkan pernyataan INSERT INTO atau SELECT juga.

Contoh

Coba contoh berikut untuk membuat tabel klon untuk TUTORIALS_TBL yang strukturnya adalah sebagai berikut -

Step 1 - Dapatkan struktur lengkap tentang tabel.

SQL> SHOW CREATE TABLE TUTORIALS_TBL \G; 
*************************** 1. row *************************** 
      Table: TUTORIALS_TBL 
Create Table: CREATE TABLE 'TUTORIALS_TBL' ( 
  'tutorial_id' int(11) NOT NULL auto_increment, 
  'tutorial_title' varchar(100) NOT NULL default '', 
  'tutorial_author' varchar(40) NOT NULL default '', 
  'submission_date' date default NULL, 
  PRIMARY KEY  ('tutorial_id'), 
  UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author') 
) TYPE = MyISAM 
1 row in set (0.00 sec)

Step 2 - Ubah nama tabel ini dan buat tabel lain.

SQL> CREATE TABLE `CLONE_TBL` ( 
  -> 'tutorial_id' int(11) NOT NULL auto_increment, 
  -> 'tutorial_title' varchar(100) NOT NULL default '', 
  -> 'tutorial_author' varchar(40) NOT NULL default '', 
  -> 'submission_date' date default NULL, 
  -> PRIMARY KEY  (`tutorial_id'), 
  -> UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author') 
-> ) TYPE = MyISAM; 
Query OK, 0 rows affected (1.80 sec)

Step 3- Setelah menjalankan langkah 2, Anda akan mengkloning tabel di database Anda. Jika Anda ingin menyalin data dari tabel lama, Anda dapat melakukannya dengan menggunakan pernyataan INSERT INTO ... SELECT.

SQL> INSERT INTO CLONE_TBL (tutorial_id, 
   ->                        tutorial_title, 
   ->                        tutorial_author, 
   ->                        submission_date) 
   -> SELECT tutorial_id,tutorial_title, 
   ->        tutorial_author,submission_date, 
   -> FROM TUTORIALS_TBL; 
Query OK, 3 rows affected (0.07 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Akhirnya, Anda akan memiliki tabel klon yang tepat seperti yang Anda inginkan.

SQL - Sub Queries

Kueri Subkueri atau Batin atau Kueri bersarang adalah kueri dalam kueri SQL lain dan disematkan di dalam klausa WHERE.

Sebuah subquery digunakan untuk mengembalikan data yang akan digunakan dalam query utama sebagai syarat untuk lebih membatasi data yang akan diambil.

Subkueri dapat digunakan dengan pernyataan SELECT, INSERT, UPDATE, dan DELETE bersama dengan operator seperti =, <,>,> =, <=, IN, BETWEEN, dll.

Ada beberapa aturan yang harus diikuti subkueri -

  • Subkueri harus diapit dalam tanda kurung.

  • Subkueri hanya dapat memiliki satu kolom di klausa SELECT, kecuali beberapa kolom berada di kueri utama untuk subkueri untuk membandingkan kolom yang dipilihnya.

  • Perintah ORDER BY tidak dapat digunakan dalam subkueri, meskipun kueri utama dapat menggunakan ORDER BY. Perintah GROUP BY dapat digunakan untuk melakukan fungsi yang sama seperti ORDER BY di subkueri.

  • Subkueri yang mengembalikan lebih dari satu baris hanya dapat digunakan dengan beberapa operator nilai seperti operator IN.

  • Daftar PILIH tidak dapat menyertakan referensi apa pun ke nilai yang mengevaluasi ke BLOB, ARRAY, CLOB, atau NCLOB.

  • Sebuah subkueri tidak bisa langsung diapit dalam fungsi set.

  • Operator BETWEEN tidak dapat digunakan dengan subkueri. Namun, operator ANTARA dapat digunakan di dalam subkueri.

Subkueri dengan Pernyataan SELECT

Subkueri paling sering digunakan dengan pernyataan SELECT. Sintaks dasarnya adalah sebagai berikut -

SELECT column_name [, column_name ]
FROM   table1 [, table2 ]
WHERE  column_name OPERATOR
   (SELECT column_name [, column_name ]
   FROM table1 [, table2 ]
   [WHERE])

Contoh

Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Sekarang, mari kita periksa subkueri berikut dengan pernyataan SELECT.

SQL> SELECT * 
   FROM CUSTOMERS 
   WHERE ID IN (SELECT ID 
         FROM CUSTOMERS 
         WHERE SALARY > 4500) ;

Ini akan menghasilkan hasil sebagai berikut.

+----+----------+-----+---------+----------+
| ID | NAME     | AGE | ADDRESS | SALARY   |
+----+----------+-----+---------+----------+
|  4 | Chaitali |  25 | Mumbai  |  6500.00 |
|  5 | Hardik   |  27 | Bhopal  |  8500.00 |
|  7 | Muffy    |  24 | Indore  | 10000.00 |
+----+----------+-----+---------+----------+

Subkueri dengan Pernyataan INSERT

Subkueri juga bisa digunakan dengan pernyataan INSERT. Pernyataan INSERT menggunakan data yang dikembalikan dari subkueri untuk dimasukkan ke dalam tabel lain. Data yang dipilih di subkueri dapat dimodifikasi dengan salah satu fungsi karakter, tanggal atau angka.

Sintaks dasarnya adalah sebagai berikut.

INSERT INTO table_name [ (column1 [, column2 ]) ]
   SELECT [ *|column1 [, column2 ]
   FROM table1 [, table2 ]
   [ WHERE VALUE OPERATOR ]

Contoh

Pertimbangkan tabel CUSTOMERS_BKP dengan struktur yang mirip dengan tabel CUSTOMERS. Sekarang untuk menyalin tabel CUSTOMERS lengkap ke dalam tabel CUSTOMERS_BKP, Anda dapat menggunakan sintaks berikut.

SQL> INSERT INTO CUSTOMERS_BKP
   SELECT * FROM CUSTOMERS 
   WHERE ID IN (SELECT ID 
   FROM CUSTOMERS) ;

Subkueri dengan Pernyataan UPDATE

Subkueri dapat digunakan bersama dengan pernyataan UPDATE. Salah satu atau beberapa kolom dalam tabel dapat diperbarui saat menggunakan subkueri dengan pernyataan UPDATE.

Sintaks dasarnya adalah sebagai berikut.

UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

Contoh

Dengan asumsi, kami memiliki tabel CUSTOMERS_BKP yang merupakan cadangan dari tabel CUSTOMERS. Contoh berikut memperbarui GAJI sebesar 0,25 kali dalam tabel PELANGGAN untuk semua pelanggan yang UMURnya lebih dari atau sama dengan 27.

SQL> UPDATE CUSTOMERS
   SET SALARY = SALARY * 0.25
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP
      WHERE AGE >= 27 );

Ini akan mempengaruhi dua baris dan akhirnya tabel CUSTOMERS akan memiliki record berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |   125.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  2125.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Subkueri dengan Pernyataan DELETE

Subkueri dapat digunakan bersama dengan pernyataan DELETE seperti pernyataan lain yang disebutkan di atas.

Sintaks dasarnya adalah sebagai berikut.

DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

Contoh

Dengan asumsi, kami memiliki tabel CUSTOMERS_BKP yang merupakan cadangan dari tabel CUSTOMERS. Contoh berikut menghapus catatan dari tabel PELANGGAN untuk semua pelanggan yang AGE-nya lebih dari atau sama dengan 27.

SQL> DELETE FROM CUSTOMERS
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP
      WHERE AGE >= 27 );

Ini akan mempengaruhi dua baris dan akhirnya tabel CUSTOMERS akan memiliki record berikut.

+----+----------+-----+---------+----------+
| ID | NAME     | AGE | ADDRESS | SALARY   |
+----+----------+-----+---------+----------+
|  2 | Khilan   |  25 | Delhi   |  1500.00 |
|  3 | kaushik  |  23 | Kota    |  2000.00 |
|  4 | Chaitali |  25 | Mumbai  |  6500.00 |
|  6 | Komal    |  22 | MP      |  4500.00 |
|  7 | Muffy    |  24 | Indore  | 10000.00 |
+----+----------+-----+---------+----------+

SQL - Menggunakan Urutan

Urutan adalah himpunan bilangan bulat 1, 2, 3, ... yang dibuat sesuai permintaan. Urutan sering digunakan dalam database karena banyak aplikasi mengharuskan setiap baris dalam tabel berisi nilai unik dan urutan menyediakan cara mudah untuk membuatnya.

Bab ini menjelaskan cara menggunakan urutan di MySQL.

Menggunakan kolom AUTO_INCREMENT

Cara termudah di MySQL untuk menggunakan urutan adalah dengan menentukan kolom sebagai AUTO_INCREMENT dan menyerahkan sisanya ke MySQL untuk mengurusnya.

Contoh

Coba contoh berikut. Ini akan membuat tabel dan setelah itu akan memasukkan beberapa baris ke dalam tabel ini di mana tidak perlu memberikan ID catatan karena ini bertambah otomatis oleh MySQL.

mysql> CREATE TABLE INSECT
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, # type of insect
   -> date DATE NOT NULL, # date collected
   -> origin VARCHAR(30) NOT NULL # where collected
);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO INSECT (id,name,date,origin) VALUES
   -> (NULL,'housefly','2001-09-10','kitchen'),
   -> (NULL,'millipede','2001-09-10','driveway'),
   -> (NULL,'grasshopper','2001-09-10','front yard');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM INSECT ORDER BY id;
+----+-------------+------------+------------+
| id | name        | date       | origin     |
+----+-------------+------------+------------+
|  1 | housefly    | 2001-09-10 | kitchen    |
|  2 | millipede   | 2001-09-10 | driveway   |
|  3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)

Dapatkan Nilai AUTO_INCREMENT

LAST_INSERT_ID () adalah fungsi SQL, sehingga Anda dapat menggunakannya dari dalam klien mana pun yang memahami cara mengeluarkan pernyataan SQL. Jika tidak, skrip PERL dan PHP menyediakan fungsi eksklusif untuk mengambil nilai yang bertambah otomatis dari rekaman terakhir.

Contoh PERL

Menggunakan mysql_insertidatribut untuk mendapatkan nilai AUTO_INCREMENT yang dihasilkan oleh kueri. Atribut ini diakses melalui pegangan database atau pegangan pernyataan, tergantung pada bagaimana Anda mengeluarkan kueri. Contoh berikut mereferensikannya melalui pegangan database.

$dbh->do ("INSERT INTO INSECT (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};

Contoh PHP

Setelah mengeluarkan kueri yang menghasilkan nilai AUTO_INCREMENT, ambil nilai dengan memanggil mysql_insert_id( ) fungsi.

mysql_query ("INSERT INTO INSECT (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);

Penomoran Ulang Urutan yang Ada

Mungkin ada kasus ketika Anda telah menghapus banyak rekaman dari tabel dan Anda ingin mengurutkan ulang semua rekaman. Ini dapat dilakukan dengan menggunakan trik sederhana, tetapi Anda harus sangat berhati-hati dalam melakukannya dan memeriksa apakah tabel Anda telah digabungkan dengan tabel lain atau tidak.

Jika Anda menentukan bahwa urutan ulang kolom AUTO_INCREMENT tidak dapat dihindari, cara untuk melakukannya adalah dengan melepaskan kolom dari tabel, lalu menambahkannya lagi.

Contoh berikut menunjukkan bagaimana menomori ulang nilai id dalam tabel serangga menggunakan teknik ini.

mysql> ALTER TABLE INSECT DROP id;
mysql> ALTER TABLE insect
   -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
   -> ADD PRIMARY KEY (id);

Memulai Urutan pada Nilai Tertentu

Secara default, MySQL akan memulai urutan dari 1, tetapi Anda juga dapat menentukan nomor lain pada saat pembuatan tabel.

Blok kode berikut memiliki contoh di mana MySQL akan memulai urutan dari 100.

mysql> CREATE TABLE INSECT
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, # type of insect
   -> date DATE NOT NULL, # date collected
   -> origin VARCHAR(30) NOT NULL # where collected
);

Alternatifnya, Anda dapat membuat tabel dan kemudian mengatur nilai urutan awal dengan ALTER TABLE.

mysql> ALTER TABLE t AUTO_INCREMENT = 100;

SQL - Menangani Duplikat

Mungkin ada situasi ketika Anda memiliki beberapa rekaman duplikat dalam sebuah tabel. Saat mengambil catatan seperti itu, lebih masuk akal untuk hanya mengambil catatan unik daripada mengambil catatan duplikat.

SQL DISTINCT Kata kunci, yang telah kita diskusikan digunakan dalam hubungannya dengan pernyataan SELECT untuk menghilangkan semua record duplikat dan dengan hanya mengambil record unik.

Sintaksis

Sintaks dasar dari kata kunci DISTINCT untuk menghilangkan rekaman duplikat adalah sebagai berikut.

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]

Contoh

Pertimbangkan tabel PELANGGAN yang memiliki catatan berikut.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Pertama, mari kita lihat bagaimana kueri SELECT berikut mengembalikan catatan gaji duplikat.

SQL> SELECT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

Ini akan menghasilkan hasil sebagai berikut di mana gaji tahun 2000 datang dua kali yang merupakan catatan duplikat dari tabel asli.

+----------+
| SALARY   |
+----------+
|  1500.00 |
|  2000.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+

Sekarang, mari kita gunakan kata kunci DISTINCT dengan query SELECT di atas dan lihat hasilnya.

SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

Ini akan menghasilkan hasil sebagai berikut di mana kami tidak memiliki entri duplikat.

+----------+
| SALARY   |
+----------+
|  1500.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+

SQL - Injeksi

Jika Anda mengambil input pengguna melalui halaman web dan memasukkannya ke dalam database SQL, ada kemungkinan Anda telah membiarkan diri Anda terbuka lebar untuk masalah keamanan yang dikenal sebagai SQL Injection. Bab ini akan mengajari Anda cara membantu mencegah hal ini terjadi dan membantu Anda mengamankan skrip dan pernyataan SQL di skrip sisi server Anda seperti PERL Script.

Injeksi biasanya terjadi saat Anda meminta masukan kepada pengguna, seperti nama mereka dan alih-alih nama, mereka memberi Anda pernyataan SQL yang tanpa sadar akan Anda jalankan di database. Jangan pernah mempercayai data yang diberikan pengguna, proses data ini hanya setelah validasi; sebagai aturan, ini dilakukan olehPattern Matching.

Pada contoh di bawah ini, name dibatasi untuk karakter alfanumerik ditambah garis bawah dan dengan panjang antara 8 dan 20 karakter (ubah aturan ini sesuai kebutuhan).

if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)) { $result = mysql_query("SELECT * FROM CUSTOMERS 
      WHERE name = $matches[0]");
} else {
   echo "user name not accepted";
}

Untuk mendemonstrasikan masalahnya, pertimbangkan kutipan ini -

// supposed input
$name = "Qadir'; DELETE FROM CUSTOMERS;";
mysql_query("SELECT * FROM CUSTOMSRS WHERE name='{$name}'");

Panggilan fungsi seharusnya mengambil record dari tabel CUSTOMERS dimana kolom nama cocok dengan nama yang ditentukan oleh pengguna. Dalam keadaan normal,$namehanya akan berisi karakter alfanumerik dan mungkin spasi, seperti string ilia. Tapi di sini, dengan menambahkan kueri yang sama sekali baru ke $ name, panggilan ke database berubah menjadi bencana; kueri DELETE yang disuntikkan menghapus semua rekaman dari tabel CUSTOMERS.

Untungnya, jika Anda menggunakan MySQL, file mysql_query()function tidak mengizinkan query stacking atau mengeksekusi beberapa query SQL dalam satu panggilan fungsi. Jika Anda mencoba untuk menumpuk kueri, panggilan gagal.

Namun, ekstensi database PHP lainnya, seperti SQLite dan PostgreSQL dengan senang hati melakukan kueri bertumpuk, menjalankan semua kueri yang disediakan dalam satu string dan menciptakan masalah keamanan yang serius.

Mencegah Injeksi SQL

Anda dapat menangani semua karakter escape dengan cerdas dalam bahasa skrip seperti PERL dan PHP. Ekstensi MySQL untuk PHP menyediakan fungsi tersebutmysql_real_escape_string() untuk menghindari karakter input yang khusus untuk MySQL.

if (get_magic_quotes_gpc()) {
   $name = stripslashes($name); } $name = mysql_real_escape_string($name); mysql_query("SELECT * FROM CUSTOMERS WHERE name='{$name}'");

The LIKE Quandary

Untuk mengatasi masalah LIKE, mekanisme pelolosan khusus harus mengubah karakter '%' dan '_' yang disediakan pengguna menjadi literal. Menggunakanaddcslashes(), fungsi yang memungkinkan Anda menentukan rentang karakter yang akan diloloskan.

$sub = addcslashes(mysql_real_escape_string("%str"), "%_"); // $sub == \%str\_
mysql_query("SELECT * FROM messages 
   WHERE subject LIKE '{$sub}%'");

SQL - Penyetelan Database

Butuh waktu untuk menjadi Ahli Database atau Administrator Database ahli. Ini semua datang dengan banyak pengalaman dalam berbagai desain database dan pelatihan yang bagus.

Tetapi daftar berikut mungkin berguna bagi para pemula untuk memiliki kinerja database yang bagus -

  • Gunakan desain database 3BNF yang dijelaskan dalam tutorial ini di bab Konsep RDBMS.

  • Hindari konversi angka-ke-karakter karena perbandingan angka dan karakter secara berbeda dan menyebabkan penurunan kinerja.

  • Saat menggunakan pernyataan SELECT, hanya ambil informasi apa pun yang diperlukan dan hindari penggunaan * dalam kueri SELECT Anda karena akan memuat sistem secara tidak perlu.

  • Buat indeks Anda dengan hati-hati di semua tabel tempat Anda sering melakukan operasi pencarian. Hindari indeks pada tabel di mana Anda memiliki lebih sedikit jumlah operasi pencarian dan lebih banyak jumlah operasi penyisipan dan pembaruan.

  • Pemindaian tabel lengkap terjadi ketika kolom di klausa WHERE tidak memiliki indeks yang terkait dengannya. Anda dapat menghindari pemindaian tabel lengkap dengan membuat indeks pada kolom yang digunakan sebagai kondisi di klausa WHERE dari pernyataan SQL.

  • Berhati-hatilah dengan operator kesetaraan dengan bilangan real dan nilai tanggal / waktu. Keduanya dapat memiliki perbedaan kecil yang tidak terlihat jelas tetapi membuat pencocokan persis tidak mungkin dilakukan, sehingga mencegah kueri Anda mengembalikan baris.

  • Gunakan pencocokan pola dengan bijaksana. LIKE COL% adalah kondisi WHERE yang valid, mengurangi set yang dikembalikan hanya ke record tersebut dengan data yang dimulai dengan string COL. Namun, COL% Y tidak mengurangi hasil yang dikembalikan yang ditetapkan karena% Y tidak dapat dievaluasi secara efektif. Upaya untuk melakukan evaluasi terlalu besar untuk dipertimbangkan. Dalam kasus ini, COL% digunakan, tetapi% Y dibuang. Untuk alasan yang sama, karakter pengganti terkemuka% COL secara efektif mencegah penggunaan seluruh filter.

  • Sempurnakan kueri SQL Anda dengan memeriksa struktur kueri (dan subkueri), sintaks SQL, untuk mengetahui apakah Anda telah merancang tabel untuk mendukung manipulasi data cepat dan menulis kueri secara optimal, memungkinkan DBMS Anda untuk memanipulasi data secara efisien .

  • Untuk kueri yang dieksekusi secara teratur, coba gunakan prosedur. Prosedur adalah sekelompok besar pernyataan SQL yang berpotensi. Prosedur dikompilasi oleh mesin database dan kemudian dijalankan. Tidak seperti pernyataan SQL, mesin database tidak perlu mengoptimalkan prosedur sebelum dijalankan.

  • Hindari menggunakan operator logika ATAU dalam kueri jika memungkinkan. ATAU pasti memperlambat hampir semua kueri terhadap tabel berukuran substansial.

  • Anda dapat mengoptimalkan pemuatan data massal dengan menghapus indeks. Bayangkan tabel sejarah dengan ribuan baris. Tabel riwayat tersebut juga cenderung memiliki satu atau lebih indeks. Saat memikirkan indeks, biasanya Anda memikirkan akses tabel yang lebih cepat, tetapi dalam kasus pemuatan batch, Anda bisa mendapatkan keuntungan dengan menghapus indeks.

  • Saat melakukan transaksi batch, lakukan COMMIT setelah pembuatan record dalam jumlah yang wajar sebagai ganti membuatnya setelah setiap pembuatan record.

  • Rencanakan untuk mendefrag database secara teratur, meskipun melakukannya berarti mengembangkan rutinitas mingguan.

Alat Tuning Bawaan

Oracle memiliki banyak alat untuk mengelola kinerja pernyataan SQL tetapi di antara mereka ada dua yang sangat populer. Kedua alat ini adalah -

  • Explain plan - alat mengidentifikasi jalur akses yang akan diambil ketika pernyataan SQL dijalankan.

  • tkprof - mengukur kinerja dengan waktu yang berlalu selama setiap fase pemrosesan pernyataan SQL.

Jika Anda hanya ingin mengukur waktu yang telah berlalu dari kueri di Oracle, Anda dapat menggunakan perintah SQL * Plus SET TIMING ON.

Periksa dokumentasi RDBMS Anda untuk detail lebih lanjut tentang alat yang disebutkan di atas dan defragmentasi database.