Artikel ini bertujuan untuk menguasai pernyataan SELECT di database MySQL dengan cepat dan akurat.
Sintaks dasar dari pernyataan SELECT di MySQL adalah:
Berikut ini adalah kutipan kutipan:
PILIH [STRAIGHT_JOIN] [SQL_SMALL_RESULT]
[SQL_BIG_RESULT] [HIGH_PRIORITY]
[BERBEDA|BERBEDA|SEMUA]
pilih_daftar
[KELUAR FILE|DUMPFILE} 'nama_file' opsi_ekspor]
[DARI tabel_referensi [DI MANA di mana_definisi]
[GROUP BY col_name,...] [MEMILIKI definisi_di mana]
[PESAN OLEH {unsighed_integer|col_name|formura} [ASC|DESC],...]
[BATAS [offset,] baris] [PROSEDUR nama_prosedur]]
Seperti yang dapat dilihat dari sintaks dasar ini, pernyataan SELECT yang paling sederhana adalah SELECT select_list. Faktanya, dengan menggunakan pernyataan SELECT yang paling sederhana ini, Anda juga dapat menyelesaikan banyak fungsi yang Anda harapkan. Pertama, Anda dapat menggunakannya untuk melakukan operasi apa pun yang didukung oleh MySQL For contoh: SELECT 1+1, ini akan mengembalikan 2; Anda juga dapat menggunakannya untuk menetapkan nilai ke variabel. Dalam PHP, menggunakan fungsi pernyataan SELECT ini, Anda dapat dengan bebas menggunakan fungsi MySQL untuk melakukan berbagai tugas untuk Operasi program PHP dan menetapkan nilai ke variabel. Dalam banyak kasus, Anda akan menemukan bahwa MySQL memiliki fungsi yang jauh lebih kuat daripada PHP.
STRAIGHT_JOIN, SQL_SMALL_RESULT, SQL_BIG_RESULT, dan HIGH_PRIORITY adalah ekstensi MySQL untuk ANSI SQL92. Jika pengoptimal menggabungkan tabel dalam urutan yang tidak optimal, penggunaan STRAIGHT_JOIN dapat mempercepat kueri.
SQL_SMALL_RESULT dan SQL_BIG_RESULT adalah sekumpulan kata kunci relatif. Mereka harus digunakan dengan GROUP BY, DISTINCT atau DISTINCTROW. SQL_SMALL_RESULT memberi tahu pengoptimal bahwa hasilnya akan sangat kecil, mengharuskan MySQL menggunakan tabel sementara untuk menyimpan tabel akhir alih-alih menggunakan pengurutan, sebaliknya, SQL_BIG_RESULT memberi tahu pengoptimal bahwa hasilnya akan sangat kecil, sehingga mengharuskan MySQL menggunakan pengurutan alih-alih pengurutan; membuat tabel sementara.
HIGH_PRIORITY akan memberikan SELECT prioritas lebih tinggi daripada pernyataan yang memperbarui tabel, memungkinkannya melakukan kueri yang diprioritaskan dan cepat.
Penggunaan keempat kata kunci di atas memang agak kabur. Untungnya, dalam banyak kasus, kita dapat memilih untuk tidak menggunakan keempat kata kunci ini di MySQL.
DISTINCT dan DISTINCTROW menyediakan pemfilteran paling dasar namun berguna untuk kumpulan hasil yang dikembalikan oleh kueri. Artinya, kumpulan hasil hanya berisi baris berbeda. Yang perlu diperhatikan disini adalah untuk kata kunci DISTINCT dan DISTINCTROW, nilai null tetaplah sama. Penggunaan ALL tidak berguna. Ini tidak berpengaruh pada pembuatan kumpulan hasil.
INTO {OUTFILE|DUMPFILE} 'file_name' ekspor_options, tulis hasil yang disetel ke file. File dibuat di host server dan belum ada. Sintaks bagian ekspor_options dari pernyataan ini sama dengan yang digunakan dalam klausa FIELDS dan LINES dari pernyataan LOAD DATAINFILE. Kita akan membahasnya secara rinci di artikel MySQL Advanced_LOAD DATA. Perbedaan antara kata kunci OUTFILE dan DUMPFILE adalah hanya satu baris yang ditulis ke file, tanpa ada kolom atau akhir baris.
pilih daftar: Dapat berisi satu atau lebih konten berikut:
1. "*" berarti semua kolom disusun sesuai urutan pembuatan tabel.
2. Daftar nama kolom yang disusun sesuai urutan yang dibutuhkan pengguna.
3. Anda dapat menggunakan alias untuk mengganti nama kolom, berupa: nama kolom sebagai judul_kolom.
4. Ekspresi (nama kolom, konstanta, fungsi, atau kombinasi nama kolom, konstanta, dan fungsi apa pun yang dihubungkan dengan operator aritmatika atau bitwise).
5. Fungsi internal atau fungsi agregat.
6. Kombinasi apa pun dari item di atas.
FROM: Menentukan tabel mana yang digunakan dalam perintah SELECT. Item ini umumnya diperlukan kecuali select_list tidak berisi nama kolom (misalnya, hanya konstanta, ekspresi aritmatika, dll.). Jika ada beberapa tabel dalam entri tabel, pisahkan dengan koma. Urutan tabel yang mengikuti kata kunci FROM tidak mempengaruhi hasil.
Nama tabel dapat diberi alias terkait untuk memperjelas ekspresi. Sintaksnya di sini adalah tbl_name [AS] alias_name. Misal:
pilih t1.nama,t2.gaji dari karyawan sebagai t1,info sebagai t2 dimana t1.nama=t2.nama sama dengan pilih t1.nama,t2.gaji dari karyawan t1,info t2 dimana t1.nama= t2.name Sepenuhnya setara.
Semua referensi lain ke tabel, seperti klausa di mana dan klausa yang memiliki, harus menggunakan alias, dan alias tidak boleh dimulai dengan angka.
Klausa Where mengatur kondisi pencarian, dan metode penerapannya dalam pernyataan penyisipan, pembaruan, dan penghapusan sama persis dengan metode penerapannya dalam pernyataan pemilihan. Istilah pencarian mengikuti kata kunci dimana. Jika pengguna ingin menggunakan beberapa kondisi pencarian dalam sebuah pernyataan, mereka dapat dihubungkan dengan dan atau atau. Sintaks dasar dari kondisi pencarian adalah [bukan] ekspresi perbandingan_operator ekspresi; [bukan] ekspresi [bukan] seperti “string_cocok”; [bukan] ekspresi adalah [bukan] nol; ] nama_kolom gabung_operator nama_kolom; [bukan] ekspresi_boolean.
dan: Digunakan untuk menghubungkan dua kondisi dan mengembalikan hasil ketika kedua kondisi tersebut BENAR. Ketika beberapa operator logika digunakan dalam pernyataan yang sama, operator and selalu diutamakan, kecuali pengguna menggunakan tanda kurung untuk mengubah urutan operasi.
atau: Digunakan untuk menghubungkan dua kondisi dan mengembalikan hasilnya ketika salah satu kondisi tersebut BENAR. Ketika beberapa operator logika digunakan dalam pernyataan yang sama, operator atau biasanya beroperasi setelah operator dan. Tentu saja pengguna dapat menggunakan tanda kurung untuk mengubah urutan operasi.
antara : Kata kunci yang digunakan untuk mengidentifikasi batas bawah rentang, dan diikuti dengan nilai batas atas rentang. Rentang @val antara x dan y mencakup nilai pertama dan terakhir. Jika nilai pertama yang ditentukan setelah antara lebih besar dari nilai kedua, kueri tidak mengembalikan baris apa pun.
nama_kolom: Nama kolom yang digunakan dalam perbandingan. Jika terjadi ambiguitas, pastikan untuk menentukan nama tabel di mana kolom tersebut berada.
perbandingan_operator: operator perbandingan. Lihat tabel di bawah ini:
Berikut penggalan kutipannya:
makna simbol
= sama dengan
> lebih besar dari
< kurang dari
>= lebih besar atau sama dengan
<= kurang dari atau sama dengan
!= tidak sama dengan
<> tidak sama dengan
Saat membandingkan data tipe char dan varchar, "<" berarti lebih dekat ke kepala alfabet, dan ">" berarti lebih dekat ke akhir alfabet. Secara umum, huruf kecil lebih besar dari huruf besar, dan huruf besar lebih besar dari angka, tetapi hal ini mungkin bergantung pada urutan perbandingan sistem operasi di server.
Spasi tambahan diabaikan saat membandingkan. Misalnya, "Dirk" sama dengan "Dirk".
Saat membandingkan tanggal, "<" berarti lebih awal dari dan ">" berarti lebih lambat.
Saat menggunakan operator perbandingan untuk membandingkan data karakter dan data waktu, semua data harus diapit tanda kutip.
ekspresi: dapat berupa nama kolom, konstanta, fungsi, atau kombinasi nama kolom atau konstanta, dan fungsi yang dihubungkan dengan operator aritmatika atau operator bitwise. Operator aritmatika ditunjukkan pada tabel berikut:
Berikut cuplikan yang dikutip:
makna simbol
+ tanda tambah
- tanda minus
* tanda perkalian
/ Tanda pembagian
adalah null: digunakan saat mencari nilai NULL.
like: kata kunci, Anda dapat menggunakan like untuk char, varchar, dan datetime (tidak termasuk detik dan milidetik).
Saat pengguna mencari data datetime, yang terbaik adalah menggunakan kata kunci like, karena catatan datetime yang lengkap berisi berbagai komponen tanggal. Misalnya, pengguna menambahkan nilai "9:20" ke kolom waktu_kedatangan, tetapi tidak menemukannya di klausa di mana waktu_kedatangan = "9:20" karena MySQL mengubah data yang dimasukkan menjadi "1 Januari 1900 09:20" . Namun klausa di mana waktu_kedatangan seperti "%9:20%" dapat menemukannya.
boolean_expression: Ekspresi yang mengembalikan nilai "benar" atau "salah".
match_string: String yang terdiri dari karakter dan wildcard, diapit tanda kutip tunggal atau tanda kutip ganda, merupakan pola yang cocok. Wildcard ditampilkan dalam tabel berikut:
Berikut ini adalah kutipan kutipan:
makna simbol
% String yang terdiri dari 0 karakter atau lebih
_ karakter tunggal apa pun
tidak: meniadakan ekspresi logis atau kata kunci apa pun,
Seperti seperti, null, antara, dll.
Klausa grup berdasarkan dan memiliki digunakan dalam pernyataan pilih,
Dimungkinkan untuk membagi tabel menjadi beberapa kelompok dan mengembalikan kelompok yang cocok dengan kondisi klausa yang dimiliki.
Sintaks: Awal pernyataan pilih
kelompokkan menurut [semua] ekspresi_bebas_agregat [,ekspresi_bebas_agregat]*
[memiliki kondisi_penelusuran]
di akhir pernyataan pilih
: menentukan grup di mana tabel akan dibagi. Jika fungsi agregat disertakan dalam item tabel pilih, nilai total dihitung untuk setiap grup. Hasil total ini ditampilkan di kolom baru, bukan di baris baru. Pengguna dapat mereferensikan kolom total baru ini di klausa holding. Fungsi agregasi seperti avg, count, max, min dan sum dapat digunakan di select_list sebelum dikelompokkan berdasarkan. Tabel dapat dikelompokkan berdasarkan kombinasi kolom apa pun.
all: Ekstensi Transact-SQL yang menyertakan semua grup dalam hasil, bahkan grup yang dikecualikan oleh klausa Where. Jika klausa yang dimiliki digunakan secara bersamaan, maka makna semua akan dinegasikan.
agregat_free_expression: Ekspresi yang tidak berisi fungsi agregat. Ekstensi Transact-SQL memungkinkan pengelompokan berdasarkan ekspresi tanpa fungsi agregat sambil mengelompokkan berdasarkan nama kolom.
memiliki: Menetapkan kondisi untuk klausa grup menurut, serupa dengan di mana menetapkan kondisi untuk pernyataan pilih. Kondisi pencarian untuk memiliki dapat mencakup ekspresi fungsi agregat. Selain itu, kriteria pencariannya sama dengan kriteria pencarian dimana.
pesan berdasarkan: Susun hasilnya berdasarkan kolom. Output kolom berdasarkan pilihan dapat direferensikan berdasarkan nama kolom, alias kolom, atau posisi kolom. Misal: pilih id sebagai myid, beri nama sebagai nama saya dari grup tabel saya berdasarkan id, pilih id sebagai myid, beri nama sebagai nama saya dari grup tabel saya berdasarkan myid, pilih id sebagai myid, beri nama sebagai nama saya dari grup tabel saya sebanyak 1. Ketiga kalimat ini lengkap setara. dari. Tentu saja kami tidak setuju dengan penggunaan ketiga ini, yang akan berdampak buruk pada keterbacaan program. Untuk mengurutkan dalam urutan menurun, tambahkan kata kunci DESC ke klausa urutan demi sebelum nama kolom yang ingin Anda urutkan. Standarnya adalah urutan menaik, tetapi Anda dapat menentukannya secara eksplisit menggunakan kata kunci ASC.
klausa batas: digunakan untuk membatasi jumlah baris yang dikembalikan oleh pernyataan pilih. limit membutuhkan 1 atau 2 parameter numerik. Jika 2 parameter diberikan, parameter pertama menentukan offset baris pertama yang akan dikembalikan, dan parameter kedua menentukan jumlah maksimum baris yang akan dikembalikan. Offset baris awal adalah 0 (bukan 1). Jika argumen diberikan, ini menunjukkan jumlah maksimum baris yang dikembalikan pada offset 0. Dengan kata lain, limit 5 dan limit 0,5 sepenuhnya setara.
Adapun arti dari kata kunci procedure, saya kurang begitu paham, sepertinya mendukung prosedur tersimpan, dan MySQL sendiri tidak mendukung prosedur tersimpan, sepertinya dicadangkan untuk kebutuhan ekspansi di masa mendatang.