Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pertanyaan MySQL

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');

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Migrasi Laravel:kunci unik terlalu panjang, bahkan jika ditentukan

  2. Hitung perbedaan antara dua datetime di MySQL

  3. MySQL - Operand harus berisi 1 kolom

  4. Menggunakan aplikasi klien MySQL

  5. ALTER TABLE di MySQL:Teman atau Musuh?