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

SQL SELECT untuk Pemula

SELECT pernyataan hampir tanpa keraguan, pernyataan yang paling umum digunakan dalam SQL.

SELECT statement digunakan untuk mengambil data dari database. Anda dapat menentukan baris mana yang ingin dikembalikan, dan kolom mana.

Contoh

Berikut adalah contoh untuk mendemonstrasikan SELECT pernyataan.

SELECT * 
FROM Pets;

Hasil:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Dalam contoh ini kami menggunakan tanda bintang (* ) wildcard untuk mengembalikan semua kolom. Kami juga menggunakan FROM klausa untuk menentukan tabel mana yang akan diambil datanya.

Jadi kueri ini mengembalikan semua baris dan semua kolom dari Pets tabel.

Tentukan Kolom

Anda dapat menentukan kolom yang ingin dikembalikan.

Untuk melakukannya, ganti karakter pengganti asterisk dengan nama kolom, masing-masing dipisahkan dengan koma, dalam urutan yang Anda inginkan untuk mengembalikannya.

SELECT PetId, PetName, DOB 
FROM Pets;

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 4       | Wag       | 2020-03-15 |
| 5       | Tweet     | 2020-11-28 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
| 8       | Meow      | NULL       |
+---------+-----------+------------+

Secara umum dianggap praktik yang baik untuk melakukannya dengan cara ini, dan hanya mengembalikan kolom yang benar-benar Anda butuhkan. Menggunakan wildcard asterisk untuk mengembalikan semua kolom dapat berdampak buruk pada kinerja, terutama di database yang lebih besar.

Tentukan Baris

Ada banyak cara untuk memfilter hasil hanya ke baris yang Anda minati. Cara paling umum adalah menggunakan WHERE ayat. Klausa ini memungkinkan Anda untuk menentukan kondisi yang harus dipenuhi oleh sebuah baris agar memenuhi syarat.

Berikut ini contoh untuk didemonstrasikan.

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy';

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

Dalam kasus kami, ada dua baris yang memenuhi kondisi pencarian kami.

Kondisi pencarian kami menggunakan operator yang sama (= ) untuk menentukan bahwa nilai PetName kolom harus sesuai dengan nilai yang ditentukan (Fluffy ) persis.

Ada banyak operator lain yang dapat Anda gunakan dalam kondisi pencarian Anda. Misalnya, Anda dapat menggunakan LIKE operator untuk mengembalikan hewan peliharaan yang namanya dimulai dengan F atau Fluff atau terserah.

Anda dapat menambahkan lebih banyak ketentuan ke WHERE klausa dengan menggunakan operator seperti AND dan OR operator.

Ini contohnya.

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy'
OR DOB < '2020-01-01';

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

Dalam contoh ini kami mengembalikan semua baris di mana nama hewan peliharaannya adalah Fluffy atau di mana tanggal lahir hewan peliharaan (ditentukan dalam DOB kolom) kurang dari tanggal tertentu. Kami menggunakan kurang dari operator (< ) untuk menentukannya.

Mengembalikan Data Non-Tabel

SELECT pernyataan juga dapat digunakan untuk mengembalikan data yang tidak disimpan dalam tabel. Misalnya, sangat sah untuk melakukan ini:

SELECT 'Hey there!';

Hasil:

+--------------------+
| (No column name)   |
|--------------------|
| Hey there!         |
+--------------------+

Perhatikan bahwa ketika kita melakukannya, kolom tidak memiliki nama. Kita bisa menggunakan alias untuk memberi nama pada bidang yang dihasilkan.

Berikut adalah beberapa contoh lagi untuk memilih data non-tabel, dan memberikan alias untuk setiap bidang yang ditampilkan:

SELECT 
    2 + 3 AS "2 + 3",
    'Fluffy' + ' ' + 'Smith' AS FullName,
    SYSDATETIME() AS "Date/time";

Hasil:

+---------+--------------+-----------------------------+
| 2 + 3   | FullName     | Date/time                   |
|---------+--------------+-----------------------------|
| 5       | Fluffy Smith | 2020-12-04 23:58:55.8483734 |
+---------+--------------+-----------------------------+

Berikut ikhtisar singkatnya:

  • Kolom pertama hanya menambahkan dua angka.
  • Kolom kedua menggabungkan tiga string (termasuk karakter spasi). Anda juga dapat menggabungkan string dengan angka jika diperlukan.
  • Kolom ketiga menggunakan SYSDATETIME() berfungsi untuk mengembalikan tanggal dan waktu saat ini. Fungsi ini tersedia di SQL Server. DBMS lain memiliki fungsi tanggal dan waktu sendiri. Lihat Fungsi Tanggal/Waktu SQLite, Fungsi Tanggal/Waktu SQL Server, dan Fungsi Tanggal/Waktu PostgreSQL untuk daftar fungsi tanggal &waktu yang tersedia di DBMS tersebut.

Subkueri

Dimungkinkan untuk memiliki beberapa SELECT pernyataan dalam satu kueri. Kita bisa melakukan ini dengan menggunakan subquery.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

Dalam contoh ini, kami menggunakan IN operator untuk menentukan subquery. Subquery itu memilih data dari tabel lain, dan IN operator menghubungkannya kembali ke kueri luar.

Mengurutkan Hasil

Anda dapat menggunakan ORDER BY klausa untuk mengurutkan hasil.

Misalnya, kita dapat mengurutkan hasil sebelumnya berdasarkan PetTypeId kolom dalam urutan menurun:

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets )
ORDER BY PetTypeId DESC;

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 3           | Dog       |
| 2           | Cat       |
| 1           | Bird      |
+-------------+-----------+

Lihat SQL ORDER BY Klausa untuk Pemula untuk lebih banyak contoh dan penjelasan mendetail.

Lebih Lanjut SELECT Pernyataan

SELECT pernyataan adalah pernyataan yang sangat sederhana, tetapi dapat digunakan untuk membuat kueri yang sangat kompleks.

Berikut adalah kueri yang sedikit lebih kompleks daripada kueri sebelumnya.

SELECT 
    PetTypes.PetType,
    COUNT(Pets.PetTypeId) AS Count
FROM Pets 
LEFT JOIN PetTypes 
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC;

Hasil:

+-----------+---------+
| PetType   | Count   |
|-----------+---------|
| Dog       | 4       |
| Cat       | 3       |
| Bird      | 1       |
+-----------+---------+

Dalam dunia kueri SQL, ini masih cukup sederhana, namun mengandung banyak elemen yang sering terlihat dalam kueri yang lebih kompleks.

Misalnya, kueri ini menggunakan gabungan untuk mengambil data dari beberapa tabel. Itu juga menggunakan GROUP BY klausa untuk membagi baris menjadi beberapa kelompok.

Lihat SQL GROUP BY Klausul untuk Pemula untuk lebih banyak contoh GROUP BY klausa.

Lihat Tutorial Bergabung SQL untuk melihat cara mengambil data dari beberapa tabel dan mengembalikannya sebagai satu kumpulan hasil.

The SELECT INTO Pernyataan

Beberapa DBMS mendukung SELECT INTO penyataan. Ini sedikit berbeda dengan contoh sebelumnya, karena mempengaruhi data dalam database.

SELECT INTO pernyataan membuat tabel baru dan memasukkan data ke dalamnya dari tabel lain.

Pada dasarnya, ini seperti ini:

SELECT * INTO Table2
FROM Table1;

Dalam contoh ini, kami membuat tabel baru bernama Table2 , dan masukkan semua data dari Table1 ke dalamnya. Table2 akan memiliki definisi yang sama dengan Table1 .

Lihat SQL SELECT INTO Pernyataan untuk contoh lainnya.

Seperti yang saya singgung, tidak semua DBMS mendukung pernyataan ini. Jika DBMS Anda tidak mendukung SELECT INTO pernyataan, coba gunakan CREATE TABLE ... AS SELECT pernyataan sebagai gantinya.

Pernyataan tersebut membuat tabel baru sebagai bagian dari operasinya. Untuk menyisipkan data ke dalam tabel yang sudah ada, coba gunakan INSERT INTO ... SELECT pernyataan sebagai gantinya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 50 Shades of NULL – Arti Berbeda dari NULL dalam SQL

  2. Cara Membuat Indeks di Django Tanpa Waktu Henti

  3. Ubah Tabel Besar di Solusi RDS ke tabel penuh Kesalahan

  4. Membandingkan metode pemisahan string/penggabungan

  5. Dasar-dasar ekspresi tabel, Bagian 4 – Tabel turunan, pertimbangan pengoptimalan, lanjutan