Sejauh ini kita telah membuat database, menambahkan dua tabel, dan memasukkan data ke dalam kedua tabel. Sekarang kita akan melihat bagaimana mengambil data itu. Tapi bukan hanya mengambil data, tetapi untuk meminta database untuk itu.
SQL adalah singkatan dari Bahasa Kueri Terstruktur . Ini adalah Permintaan bit yang membuat SQL begitu kuat. SQL adalah bahasa yang memungkinkan Anda menjalankan query terhadap database Anda. Ini memungkinkan Anda untuk meminta database untuk data yang Anda inginkan.
SQL SELECT
Pernyataan
Saat menanyakan database MySQL Anda, SQL SELECT
pernyataan membuat semuanya mungkin. Ini mungkin pernyataan SQL yang paling sering Anda gunakan saat bekerja dengan MySQL. SELECT
pernyataan memungkinkan Anda untuk menjelaskan ke MySQL dengan tepat data apa yang Anda inginkan untuk diambil.
Perhatikan pernyataan SQL berikut:
SELECT * FROM Fruit;
Ini hasilnya:
Ini adalah SELECT
pernyataan yang paling sederhana. Pernyataan SQL di atas mengambil semua record dari
Buah
tabel.
Tanda bintang (*
) memberitahu MySQL untuk mengembalikan semua kolom. Ini menghemat waktu dan tenaga kami. Tanpa ini kita perlu menulis nama semua kolom yang ingin kita kembalikan.
Karena itu, Anda juga dapat memberi tahu MySQL untuk mengembalikan hanya kolom yang ingin Anda kembalikan. Ini dilakukan dengan menamai hanya kolom-kolom yang ingin Anda kembalikan. Seperti ini:
SELECT FruitId, FruitName FROM Fruit;
Ini hasilnya:
Pernyataan SQL di atas memilih FruitId dan FruitName kolom dari Buah tabel.
Melakukan hal ini dapat mengurangi kekacauan sehingga Anda hanya melihat kolom yang Anda minati. Ini juga dapat meningkatkan kinerja, karena MySQL (dan aplikasi apa pun yang Anda gunakan) tidak perlu menggunakan sumber daya berharga untuk mengembalikan data yang tidak perlu.
Sekali lagi, kueri ini mengambil semua record dari tabel — MySQL akan mengembalikan semua record kecuali ditentukan lain.
The WHERE
Klausa
Anda dapat menambahkan WHERE
klausa untuk mempersempit hasil yang ditetapkan hanya untuk catatan yang Anda minati. Seperti ini:
SELECT * FROM Fruit WHERE UnitId = 1;
Hasil:
Kueri di atas mengembalikan semua catatan dari
Buah
tabel tempat
UnitId
kolom memiliki nilai 1
.
Subkueri — SELECT
. bersarang Pernyataan
Bagaimana jika kita tidak mengetahui
UnitId
? Bagaimana jika kita hanya tahu untuk mencari catatan itu dengan nama unit Piece
?
Mudah! Kita dapat menulis ulang contoh di atas untuk menggunakan SELECT
. bersarang pernyataan (atau dikenal sebagai subquery ) yang mengkueri tabel lain (
Unit
meja). Melakukan hal ini akan memungkinkan kita untuk menggunakan unit sebenarnya nama (bukan ID-nya) karena tabel kedua berisi ini di UnitName
bidang:
SELECT * FROM Fruit WHERE UnitId = (SELECT UnitId FROM Units WHERE UnitName = 'Piece');
Hasil:
Di sini kita menggunakan SELECT
. bersarang pernyataan (yaitu SELECT
pernyataan dalam SELECT
pernyataan) untuk menanyakan
Unit
tabel untuk
UnitId
dari catatan yang berisi Piece
sebagai
UnitName
nilai. Kita bisa melakukan ini karena
Fruit.UnitId
kolom adalah kunci asing untuk
Units.UnitId
kolom.
Berikut adalah lebih banyak contoh subkueri jika Anda tertarik.
Menggunakan SQL JOIN
Selangkah lebih maju, kita bisa menulis ulang SELECT
. kita yang bersarang pernyataan menjadi INNER JOIN
.
Dalam SQL, sebuah JOIN
memungkinkan Anda untuk menanyakan beberapa tabel yang berbagi data. Dalam kasus kami, kedua tabel berbagi UnitId
jadi bisa dibilang mereka "bergabung" dengan bidang ini.
Ada berbagai jenis gabungan dalam SQL, namun, kami terutama tertarik pada INNER JOIN
untuk saat ini.
INNER JOIN
sintaksnya seperti ini:
SELECT * FROM table_name_1 INNER JOIN table_name_2 ON table_name_1.column_name = table_name_2.column_name
Jadi kita bisa menulis ulang subquery kita dari contoh sebelumnya menjadi berikut:
SELECT Fruit.* FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId WHERE Units.UnitName = 'Piece';
Hasil:
Kami menentukan Fruit.*
bukan hanya *
karena kami hanya ingin mengembalikan semua kolom dari
Buah
meja. Jika kita menggunakan *
, kueri akan mengembalikan semua kolom dari kedua tabel.
Lihat juga LEFT JOIN
dan RIGHT JOIN
untuk melihat bagaimana Anda bisa mendapatkan data yang berbeda tergantung pada jenis gabungan.
Subquery vs JOIN
?
Sekarang setelah Anda melihat dua metode untuk mencapai hasil yang sama, Anda mungkin bertanya-tanya mana yang lebih baik?
Subquery cenderung lebih mudah dibaca (dan mungkin lebih mudah dipahami), yang dapat memudahkan pemula untuk memahami.
Namun, banyak programmer SQL menemukan JOIN
lebih efisien dan berkinerja lebih baik. Jika Anda mengalami masalah kinerja dengan kueri atau aplikasi Anda, coba ubah subkueri apa pun menjadi JOIN
s atau sebaliknya (dalam beberapa kasus, sub-kueri dapat berkinerja lebih baik).
Juga, mungkin ada kasus di mana subquery adalah satu-satunya pilihan Anda, jadi ini juga merupakan pertimbangan.
Lebih Banyak Operator
Kueri kami sejauh ini semuanya berisi tanda sama dengan (=
). Ini disebut operator . Lebih khusus lagi ini adalah operator perbandingan karena membandingkan satu ekspresi dengan ekspresi lainnya.
Ada banyak lagi operator yang dapat Anda gunakan dalam kueri Anda. Ini dapat sangat membantu dalam mempersempit hasil yang ditetapkan hanya untuk catatan yang Anda butuhkan. Bukan hal yang aneh jika database berisi jutaan catatan. Bahkan jika Anda hanya memiliki ribuan catatan, mencoba menemukan satu catatan (atau bahkan hanya segelintir) di antara ribuan akan menjadi tugas yang sangat berat jika Anda tidak memiliki operator ini.
Berikut adalah beberapa operator SQL yang lebih umum digunakan.
>
Operator
Anda dapat menggunakan >
operator untuk memilih data yang lebih besar dari nilai yang diberikan.
SELECT * FROM Fruit WHERE Inventory > 10;
<
Operator
Anda dapat menggunakan <
operator untuk memilih data yang kurang dari nilai yang diberikan.
SELECT * FROM Fruit WHERE Inventory < 10;
<
Operator
Anda dapat menggunakan <
operator untuk memilih data yang keduanya kurang dari dan lebih besar dari nilai yang diberikan.
SELECT * FROM Fruit WHERE Inventory <> 10;
>=
Operator
Anda dapat menggunakan >=
operator untuk memilih data yang lebih besar atau sama dengan nilai yang diberikan.
SELECT * FROM Fruit WHERE Inventory >= 10;
<=
Operator
Anda dapat menggunakan <=
operator untuk memilih data yang kurang dari atau sama dengan nilai yang diberikan.
SELECT * FROM Fruit WHERE Inventory <= 10;
The AND
Operator
Anda dapat menambahkan AND
operator ke WHERE
klausa untuk membatasi pilihan Anda hanya pada catatan yang memenuhi dua kondisi (atau lebih jika Anda menyertakan lebih banyak AND
operator).
Ini contohnya:
SELECT * FROM Fruit WHERE Inventory > 10 AND DateEntered > '2015-01-15';
OR
Operator
Anda dapat menggunakan OR
operator untuk memperluas pilihan Anda ke lebih dari satu kriteria. Seperti namanya, OR
klausa memungkinkan Anda memilih data di mana kriterianya adalah ATAU . ini itu. Jadi AND
operator batas pilihan Anda dan OR
operator memperluas itu.
Ini contohnya:
SELECT * FROM Fruit WHERE UnitId = 1 OR UnitId = 2;
BETWEEN
Operator
Gunakan BETWEEN
operator untuk memilih data yang berada di antara dua nilai yang diberikan.
SELECT * FROM Fruit WHERE DateEntered BETWEEN '2015-01-25' AND '2015-02-25';
Yang NOT
Operator
Gunakan NOT
operator untuk memilih data yang tidak setara dengan kondisi tertentu.
SELECT * FROM Fruit WHERE NOT (FruitName = 'Apple');