Pertanyaan dalam mysql daripada pertanyaan mysqli php. Menghantar pertanyaan pangkalan data dalam PHP. Pelan pertanyaan SQL dalam fungsi Pertanyaan

Kami belajar cara menyambung ke pelayan MySQL, memilih pangkalan data untuk digunakan, mempelajari fungsi PHP menghantar pertanyaan ke pelayan MySQL, mempelajari dua pertanyaan mudah (membuat dan memadam jadual), dan belajar cara menutup sambungan.

Sekarang kita akan menyelam lebih dalam ke dalam pertanyaan MySQL. Jadi mari kita mulakan!

Mencipta jadual - CREATE TABLE

Sekarang kami mempunyai pangkalan data kosong, tiada jadual di dalamnya. Jadi mula-mula kita akan buat jadual. Kami sudah tahu bagaimana untuk melakukan ini dari bahagian pertama.

Berikut ialah kod skrip yang akan mencipta plat yang kami perlukan:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Ralat"); $query = "BUAT pengguna JADUAL(log masuk VARCHAR(20), kata laluan VARCHAR(20))"; if (mysqli_query($link, $query)) echo "Jadual telah dibuat."; else echo "Jadual tidak dibuat: ".mysqli_error(); mysqli_close($pautan);

Jadual kami hanya mempunyai dua medan: log masuk dan kata laluan. Buat masa ini kita tidak perlu lagi, jangan kita rumitkan prosesnya.

Jadi, jadual telah dibuat.

Menambah baris (rekod) pada jadual - INSERT

Anda boleh menambah baris baharu pada jadual menggunakan perintah sisipan SQL. Berikut ialah contoh:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Ralat"); $query = "MASUKKAN KE DALAM pengguna (log masuk, kata laluan) NILAI ("zeus", "pass123""; if (mysqli_query($link, $query)) echo "Pengguna ditambah."; else echo "Pengguna tidak ditambahkan: " . mysqli_error(); mysqli_close($pautan);

Pertanyaan SQL terdiri daripada perintah INSERT INTO, nama pengguna pangkalan data, kemudian nama medan dalam kurungan, kemudian perkataan VALUE, diikuti dengan nilai yang akan ditambah dalam kurungan. Nilai disertakan dalam tanda petikan.

Sintaks permintaan kelihatan seperti ini:

INSERT IN TO table_name (column1, column2) VALUE ("x1", "x2")

Petikan dalam kurungan kedua diperlukan.

Di tempat nilai boleh ada pembolehubah. Berikut ialah contoh:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Ralat"); $login = "zeus"; $password = "pass123"; $query = "MASUKKAN KE DALAM pengguna (log masuk, kata laluan) NILAI ("$log masuk", "$kata laluan""; if (mysqli_query($link, $query)) echo "Pengguna ditambah."; else echo "Pengguna tidak ditambahkan: " . mysqli_error(); mysqli_close($pautan);

Sudah tentu, contoh ini tidak masuk akal. Mungkin berguna untuk pemula untuk mendengar bahawa ini adalah cara log masuk dan kata laluan yang pengguna sediakan semasa pendaftaran direkodkan dalam pangkalan data. Data ini disimpan dalam pembolehubah dan kemudian, selepas pengesahan, ditulis ke pangkalan data.

Terdapat cara cepat untuk memasukkan berbilang baris dengan satu pernyataan INSERT:

MASUKKAN KE DALAM pengguna (log masuk, kata laluan) NILAI ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Seperti yang anda lihat, data yang disenaraikan hanya dipisahkan dengan koma.

Jadi, menggunakan arahan INSERT, kami belajar cara menambah rekod pada jadual. Teruskan.

Lihat Jadual: Perintah PILIH

Kini kami mempunyai jadual pengguna yang mempunyai baris. Skrip sebelumnya boleh dijalankan beberapa kali, dan setiap kali ia akan menambah baris pada jadual. Sekarang kita mungkin tidak tahu berapa banyak baris yang kita ada dalam jadual. Dan saya ingin tahu apa yang telah kami tulis di dalamnya.

Untuk mendapatkan semula data daripada jadual, gunakan arahan SELECT SQL. Tanda * bermaksud bahawa kami meminta semua data, kemudian selepas perkataan FROM kami menulis nama jadual dari mana kami ingin mendapatkan data.

Mari kita tanya semua data daripada jadual pengguna:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Ralat"); $query = "PILIH * DARI pengguna"; $result = mysqli_query($link, $query); if (!$result) echo "Ralat berlaku: " . mysqli_error(); else echo "Data diterima"; mysqli_close($pautan);

Fungsi mysqli_query() mengembalikan pengecam hasil pertanyaan kepada kami - kami meletakkannya dalam pembolehubah dan kemudian akan bekerja dengannya menggunakan fungsi PHP yang lain.

Bilangan rekod dalam permintaan

Mari tentukan berapa banyak baris dalam pertanyaan kami? Saya menjalankan skrip untuk menambah rekod pada jadual, saya tidak ingat berapa kali dan sekarang saya tidak tahu berapa banyak baris dalam jadual saya.

Untuk menentukan bilangan baris dalam hasil pertanyaan, gunakan fungsi mysqli_num_rows(). Fungsi ini diluluskan pengecam hasil pertanyaan, dan ia mengembalikan bilangan rekod.

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Ralat"); $query = "PILIH * DARI pengguna"; $result = mysqli_query($link, $query); if (!$result) echo "Ralat berlaku: " . mysqli_error(); else echo "Data diterima"; $count = mysqli_num_rows($result); echo "Jumlah baris dalam jadual: $count."; mysqli_close($pautan);

Sekiranya kita perlu mengetahui bilangan rekod dalam jadual, maka kaedah di atas bukanlah yang paling sesuai. Di sini kami mendapati bilangan rekod yang ditemui dalam pertanyaan, tetapi bilangan rekod dalam jadual dicari secara berbeza.

Bilangan rekod dalam jadual SELECT COUNT(*)

Untuk mengetahui bilangan rekod dalam jadual, anda boleh menggunakan arahan SELECT COUNT(*) FROM table_name.

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); $query = "PILIH * DARI pengguna"; $result = mysqli_query($link, $query); if (!$result) echo "Ralat berlaku: " . mysqli_error(); else echo "Data diterima."; $count = mysqli_fetch_row($result); echo "Jumlah baris dalam jadual: $count."; mysqli_close($pautan);

Sila ambil perhatian bahawa di sini kami menggunakan fungsi PHP baharu mysqli_fetch_row() untuk mengambil data. Fungsi ini mengembalikan deretan hasil pertanyaan dalam bentuk tatasusunan mudah; dalam kes kami, terdapat satu medan dalam baris dan ia mempunyai indeks 0.

Melihat hasil pertanyaan dalam gelung

Selepas melaksanakan pertanyaan SQL dengan arahan SELECT dan mendapatkan ID hasil pertanyaan, PHP mencipta penunjuk dalaman dalam set rekod hasil. Penunjuk ini secara automatik bergerak ke rekod seterusnya selepas mengakses rekod semasa. Mekanisme ini menjadikannya sangat mudah untuk mengulangi set hasil pertanyaan SELECT.

PHP mempunyai beberapa fungsi yang mana anda boleh mendapatkan tatasusunan yang terdiri daripada medannya untuk setiap baris pertanyaan yang terhasil. Sebagai contoh, mari kita ambil fungsi mysqli_fetch_row(). Fungsi ini diluluskan pengecam permintaan dan mengembalikan tatasusunan. Jadi, dalam satu gelung, keseluruhan hasil pertanyaan dilihat dan apabila penghujung hasil pertanyaan dicapai, fungsi itu akan mengembalikan false .

Jadi, kami menanyakan semua data daripada jadual pengguna (PILIH * DARI pengguna).


"; manakala ($row = mysqli_fetch_row($result)) ( echo "Log masuk: $row. Kata laluan: $row.
"; ) mysqli_close($link);

Fungsi mysqli_fetch_row() mengembalikan tatasusunan mudah. Dalam setiap lelaran gelung, kami akan menerima tatasusunan dengan baris daripada jadual, medan yang boleh kami akses dengan menentukan indeks berangka.

Perkara yang sama boleh dilakukan menggunakan fungsi mysql_fetch_assoc(), ia mengembalikan tatasusunan bersekutu.

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); $result = mysqli_query($link, "PILIH * DARI pengguna"); if (!$result) echo "Ralat berlaku: " . mysqli_error(); else echo "Data diterima.
"; manakala ($row = mysqli_fetch_assoc($result)) ( echo "Log masuk: $row. Kata laluan: $row.
"; ) mysqli_close($link);

Terdapat juga fungsi mysqli_fetch_array() - mengembalikan sebarang jenis tatasusunan, dan mysqli_fetch_object() - mengembalikan objek.

SELECT DISTINCT query - nilai medan unik

Mari buat jadual baharu:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); // padam jadual yang sedia ada mysqli_query($link, "DROP TABLE users"); // create a new table $query = "CREATE TABLE users(nama VARCHAR(20), nama keluarga VARCHAR(20), umur TINYINT UNSIGNED)"; if (mysqli_query($link, $query)) echo "Jadual telah dibuat.
"; else echo "Jadual tidak dibuat: " . mysqli_error(); // berfungsi untuk menambah rekod pada fungsi jadual add_new_line($link, $query) ( if (!mysqli_query($link, $query)) echo "User not ditambah : " . mysqli_error(); ) // tambah rekod add_new_line($link, "INSERT INTO users (nama, nama keluarga, umur) NILAI ("Max", "Jayson", "33")"); add_new_line($link , "MASUKKAN KE DALAM pengguna (nama, nama keluarga, umur) NILAI ("Bob", "Freeman", "26")"); add_new_line($link, "INSERT INTO user (nama, nama keluarga, umur) VALUE ("Sara" , "Lopes", "65")"); add_new_line($link, "INSERT INTO user (nama, nama keluarga, umur) VALUE ("Serg", "Pupin", "29")"); add_new_line($link, " MASUKKAN KE DALAM pengguna (nama, nama keluarga, umur) NILAI ("Serg", "Borman", "43")"); add_new_line($link, "INSERT INTO pengguna (nama, nama keluarga, umur) VALUE ("Maks", " Lopes", "21")"); // paparkan kandungan jadual dalam pelayar $result = mysqli_query($link, "SELECT * FROM users"); if (!$result) echo "Ralat berlaku: " . mysqli_error(); else echo "Data diterima.
"; manakala ($row = mysqli_fetch_assoc($result)) ( echo "Nama pertama: $row. Nama keluarga: $row. Umur: $row.
"; ) mysqli_close($link);

Jadi, kami mempunyai jadual baharu yang lebih kompleks dengan rekod unik. Sekarang mari kita lihat berapa banyak nama yang kita ada dalam pangkalan data.

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); $result = mysqli_query($link, "PILIH nama beza DARI pengguna"); echo "Jumlah nama: " . mysqli_num_rows($result)."
"; echo "Senarai nama:
"; manakala ($name = mysqli_fetch_row($result)) ( echo "$name
"; ) mysqli_close($link);

Pertanyaan SQL "SELECT DISTINCT name FROM users" mengembalikan hasil dengan semua nama unik dalam jadual kami. Setiap nama unik dalam baris baharu hasil pertanyaan.

Mengisih hasil - PESANAN OLEH

Dengan menambahkan perintah ORDER BY pada pertanyaan SQL, kami mengisih hasil pertanyaan dalam tertib menaik (nombor dan huruf dalam susunan abjad). Berikut ialah contoh di mana anda boleh membandingkan pertanyaan biasa dan pertanyaan yang diisih mengikut umur (medan umur).



"; ) echo "Isih mengikut umur:
"; $result = mysqli_query($link, "SELECT * FROM users ORDER BY age"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama keluarga: $line. Umur: $ barisan.
"; ) mysqli_close($link);

Anda boleh menggantikan medan umur dalam perintah ORDER BY dengan medan nama dan lihat hasilnya.

Untuk mengisih hasil pertanyaan dalam susunan terbalik, gunakan perintah ORDER BY age DESC.

Keadaan yang sepadan - DI MANA

Dengan menambahkan perintah WHERE pada pertanyaan SQL, kami hanya akan menanyakan rekod yang memenuhi syarat tersebut. Sebagai contoh, mari kita membuat permintaan untuk orang yang berumur di bawah 30 tahun.

Untuk melakukan ini, kami menggunakan pertanyaan SQL "SELECT * FROM users WHERE age

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); echo "Orang bawah 30:
"; $result = mysqli_query($link, "PILIH * DARI pengguna DI MANA umur<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
"; ) mysqli_close($link);

Kami juga boleh mengisih keputusan dengan serta-merta dalam susunan umur menaik:
" PILIH * DARI pengguna DI MANA umur<30 ORDER BY age ".

Jika kita membuat pertanyaan " PILIH nama DARI pengguna DI MANA umur<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Kita boleh menanyakan nilai dua medan: " PILIH nama, umur DARI pengguna WHERE umur

Sekarang mari kita minta semua pengguna dengan nama "Max".

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); echo "Semua Maks:
"; $result = mysqli_query($link, "SELECT * FROM users WHERE name="Max""); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama akhir: $line. Umur: $line.
"; ) mysqli_close($link);

Dan satu lagi contoh pertanyaan - ia akan memilih hanya nama daripada jadual pengguna, semuanya kecuali Maks.

PILIH nama DARI pengguna WHERE nama!="Maks"

Itu sahaja untuk pertanyaan WHERE.

Mengehadkan penyertaan - LIMIT

Dengan menambahkan perintah LIMIT pada pertanyaan SQL, kami akan mengehadkan saiz hasil.

Pertanyaan yang mengembalikan tiga entri pertama ialah: " PILIH * DARI pengguna LIMIT 3 ". Mari lihat bagaimana ia berfungsi:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); echo "Kandungan jadual:
"; $result = mysqli_query($link, "SELECT * FROM users"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama akhir: $line. Umur: $line.
"; ) gema "

Tiga penyertaan pertama:
"; $result = mysqli_query($link, "SELECT * FROM users LIMIT 3"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama keluarga: $line. Umur: $line .
"; ) gema "

Tiga penyertaan kedua:
"; $result = mysqli_query($link, "SELECT * FROM users LIMIT 3, 3"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama keluarga: $line. Umur: $line .
"; ) mysqli_close($link);

Juga di sini kami menggunakan pertanyaan: "PILIH * DARI pengguna LIMIT 3, 3". Rangkap tiga kedua menunjukkan offset dalam hasil pertanyaan.

Corak padan - SUKA

Bahasa SQL menyokong templat mudah. Untuk melakukan ini, gunakan arahan LIKE dan tentukan corak menggunakan simbol %.

Berikut ialah contoh pertanyaan yang akan mengembalikan semua rekod dengan nama bermula dengan huruf S.

PILIH * DARI pengguna DI MANA nama SEPERTI "S%"

Saya sedang menguji permintaan:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); echo "Kandungan jadual:
"; $result = mysqli_query($link, "SELECT * FROM users"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama akhir: $line. Umur: $line.
"; ) gema "

Nama bermula dengan S:
"; $result = mysqli_query($link, "SELECT * FROM users WHERE name LIKE "S%""); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama akhir: $line Umur : $line.
"; ) mysqli_close($link);

Berikut ialah contoh pertanyaan yang akan mengembalikan semua rekod dengan nama akhir yang berakhir dengan huruf s.

PILIH * DARI pengguna DI MANA nama SEPERTI "%s"

Syarat dipenuhi - IN

Pertanyaan ini menggunakan arahan IN akan mengembalikan hanya baris yang sepadan dengan syarat.

Sebagai contoh, kami berminat dengan orang yang berumur 21, 26 dan 33 tahun.

PILIH * DARI pengguna DI MANA umur DI (21,26,33)

Saya sedang menguji permintaan:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Ralat"); mysqli_select_db("penguji"); echo "Kandungan jadual:
"; $result = mysqli_query($link, "SELECT * FROM users"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama akhir: $line. Umur: $line.
"; ) gema "

Orang yang mempunyai umur yang diperlukan (21, 26, 33):
"; $result = mysqli_query($link, "SELECT * FROM users WHERE age IN (21, 26, 33)"); manakala ($line = mysqli_fetch_row($result)) ( echo "Nama pertama: $line. Nama keluarga : $ line.Umur: $line.
"; ) mysqli_close($link);

Nilai maksimum dan minimum dalam lajur

Memilih nilai umur maksimum dalam jadual pengguna.

PILIH maks(umur) DARIPADA pengguna

Pertanyaan berikut memilih data daripada jadual pengguna menggunakan medan nama dan umur, di mana umur mengambil nilai minimum.

PILIH nama, min(umur) DARIPADA pengguna

Mengemas kini rekod - KEMASKINI

Jom tetapkan umur Max Lopes kepada 15 tahun. Ini dilakukan dengan pertanyaan MySQL:

KEMASKINI pengguna SET umur="15" WHERE nama="Maks" DAN nama keluarga="Lopes"

Sila ambil perhatian perintah AND baharu (dan bermaksud “dan” dalam bahasa Inggeris) dalam pertanyaan. Jika kami tidak menyatakan nama akhir, maka umur 15 tahun akan ditetapkan untuk semua Max dalam jadual.

Anda boleh mengemas kini dua atau lebih medan dalam satu baris dengan satu pertanyaan. Ini dilakukan seperti berikut:

KEMASKINI pengguna SET umur = "18", nama keluarga = "Coocker" WHERE id = "3"

Jadual kami tidak mempunyai medan id, jadi pertanyaan ini tidak akan berfungsi padanya. Tetapi kami pasti akan mempelajari medan ini yang mengandungi nombor baris unik.

Padamkan entri - PADAM

Pertanyaan pangkalan data MySQL untuk memadam rekod:

PADAM DARI pengguna WHERE id = "10"

Sekali lagi, jadual kami tidak mempunyai medan id. Tetapi kita boleh mengeluarkan daripadanya semua orang yang berumur di bawah 18 tahun.

PADAM DARI pengguna DI MANA umur< "18"

Padamkan jadual - DROP TABLE

Pertanyaan pangkalan data MySQL yang memadamkan keseluruhan jadual pengguna:

pengguna DROP TABLE

Padam lajur - ALTER JADUAL ... GUGUR ...

Kadangkala anda mungkin perlu mengalih keluar lajur daripada jadual, mari sebagai contoh, alih keluar lajur umur daripada pengguna:

Pengguna ALTER TABLE MENURUNKAN umur

Pertanyaan MySQL ini memadamkan lajur secara kekal dan kekal.

Tambah lajur - ALTER JADUAL ... TAMBAH ...

Kadangkala anda mungkin perlu menambah lajur pada jadual sedia ada, contohnya, mari tambah lajur umur kembali ke jadual pengguna:

ALTER TABLE pengguna TAMBAH umur TINYINT UNTANDA

Menamakan semula lajur - ALTER JADUAL ... TUKAR ...

Kadangkala anda mungkin perlu menamakan semula lajur, contohnya, menamakan semula lajur umur kepada vozrast. Kami melakukannya seperti ini:

ALTER TABLE pengguna TUKAR umur TINYINT UNSIGNED

Pertanyaan MySQL ini menamakan semula umur lajur kepada vozrast dengan jenis data TINYINT UNSIGNED.

Menamakan semula jadual - NAMA SEMULA JADUAL ... KE ...

Kadangkala anda mungkin perlu menamakan semula jadual:

NAMA SEMULA pengguna JADUAL KEPADA orang

Mengalih keluar pangkalan data - DROP DATABASE

Pertanyaan ini boleh memadam pangkalan data bernama penguji:

DROP DATABASE penguji

Mencipta pangkalan data - CIPTA PANGKALAN DATA

Pertanyaan ini mencipta pangkalan data bernama penguji:

BUAT penguji PANGKALAN DATA

Permintaan ini berfungsi untuk saya di Denver, tetapi pada pengehosan ia mungkin tidak berfungsi jika pengguna pangkalan data tidak mempunyai hak untuk melakukan pemadaman.

Keputusan

Jadi, dalam bahagian ini kami berkenalan dengan pertanyaan kepada MySQL. Banyak pertanyaan yang kami periksa selalunya tidak berguna kepada kami dalam proses kerja, tetapi kami perlu mengetahuinya, kerana ia pasti berguna dalam proses membangunkan skrip.

Sesetengah permintaan biasanya dibuat hanya daripada phpMyAdmin (mencipta dan memadam pangkalan data sebagai contoh).

Apabila bekerja di tapak web, anda biasanya perlu menambah rekod pada jadual, mengedit rekod atau memadam rekod daripada jadual.

Langkah seterusnya ialah mempelajari tentang jenis data MySQL.

Dalam artikel ini kita akan belajar hantar pertanyaan pangkalan data melalui PHP. Artikel ini sangat penting, dan anda mesti memahaminya. Walau bagaimanapun, saya akan meyakinkan anda - bahannya sangat mudah, jadi tidak perlu ada kesulitan.

Sebelum beralih ke topik artikel, saya memberi amaran kepada anda terlebih dahulu bahawa saya tidak akan menganalisis secara terperinci bahasa SQL. Semua maklumat yang diperlukan disusun dalam kategori yang dikhaskan, tetapi di sini kami hanya bekerja dengan MySQL melalui PHP.

Sekarang mari kita beralih kepada menghantar pertanyaan pangkalan data dalam PHP:


}
$mysqli->query("MASUKKAN KE DALAM jadual saya (nama, e-mel) NILAI ("Nama Saya", " [e-mel dilindungi]")");
$mysqli->close();
?>

Dalam contoh ini, kami menyambung ke pangkalan data, menyemak kejayaan sambungan dan menghantar permintaan menggunakan kaedah tersebut pertanyaan(), dan kemudian menutup sambungan. Seperti yang anda lihat, semuanya sangat mudah. Untuk menghantar apa-apa pertanyaan SQL Cukup satu kaedah sahaja - pertanyaan(), jadi dalam kes ini semuanya adalah sangat mudah.

Sekarang mari kita rumitkan tugas sedikit. Mari lihat pertanyaan yang kembali set_hasil- hasil. Permintaan paling popular dikembalikan set_hasil ialah pilihan data daripada jadual. Dalam contoh berikut, kami akan sampel data dan kemudian memaparkan hasilnya:

$mysqli = @new mysqli("localhost", "Admin", "pass", "mybase");
jika (mysqli_connect_errno()) (
echo "Sambungan gagal: ".mysqli_connect_error();
}
$result_set = $mysqli->
manakala ($row = $result_set->fetch_assoc()) (
print_r($baris);
bergema"
";
}
$result_set->close();
$mysqli->close();
?>

Pertama, izinkan saya menerangkan sedikit tentang apa itu. set_hasil. Keputusan_set- ini ialah jadual dengan hasilnya. Jadual ini mempunyai satu set rekod (baris jadual). Dan untuk memaparkan semua rekod, anda perlu mengulangi setiap baris jadual dan memaparkannya. Dan sekarang saya akan menerangkan dengan contoh: selepas menghantar permintaan, kami menjana set_hasil. Kemudian kami menetapkan kepada pembolehubah dalam gelung barisan nilai baris seterusnya, iaitu tatasusunan satu dimensi yang kaedah itu kembalikan fetch_assoc(). Apabila semua baris telah tamat, kaedah fetch_assoc() akan kembali salah, dan gelung akan terkeluar. Di dalam gelung sementara kami hanya mengeluarkan tatasusunan menggunakan fungsi nyahpepijat print_r(), walaupun ia pasti boleh disimpulkan menggunakan untuk setiap, tetapi sekarang ini tidak perlu.

Mari kita ringkaskan secara ringkas cara bekerja dengannya set_hasil:

  1. Dapatkan set_hasil dengan menghantar permintaan yang sepadan kepada pangkalan data.
  2. Dalam gelung, pada setiap lelaran, tetapkan baris seterusnya (rekod) daripada set_hasil menggunakan kaedah fetch_assoc() beberapa pembolehubah barisan. Kemudian anda boleh bekerja dengan pembolehubah ini sebagai tatasusunan bersekutu satu dimensi, di mana kuncinya ialah nama medan jadual, dan nilainya sepadan dengan rekod semasa.
  3. Pastikan tutup set_hasil kaedah tutup() untuk mengalirkan sumber.

Seperti yang anda perhatikan, kaedahnya fetch_assoc() sentiasa mengembalikan rekod seterusnya. Iaitu, pertama yang pertama, kemudian yang ke-2, kemudian yang ke-3 dan seterusnya. Jika anda mempunyai pengalaman pengaturcaraan yang baik, maka anda akan segera meneka bahawa ini berlaku terima kasih kepada penunjuk dalaman, yang anda, tentu saja, boleh bergerak. Di mana ia digunakan? Sebagai contoh, ini boleh digunakan apabila anda perlu bekerja dengannya set_hasil Tidak 1 , A 2 dan lebih banyak kali. Untuk mengelak daripada menjana permintaan yang sama sekali lagi, anda hanya boleh mengalihkan penunjuk ke permulaan. Dan kemudian anda boleh memulakan kekerasan semula set_hasil menggunakan kaedah fetch_assoc().

Terdapat kaedah untuk menukar kedudukan penunjuk data_seek(), yang mengambil integer daripada 0 sebelum" bilangan rekod - 1", oleh itu, penunjuk diletakkan pada entri yang sepadan dengan parameter:

$mysqli = @new mysqli("localhost", "Admin", "pass", "mybase");
jika (mysqli_connect_errno()) (
echo "Sambungan gagal: ".mysqli_connect_error();
}
$result_set = $mysqli->query("SELECT * FROM mytable");
$result_set->num_rows;
manakala ($row = $result_set->fetch_assoc()) (
print_r($baris);
bergema"
";
}
$result_set->data_seek(0);
manakala ($row = $result_set->fetch_assoc()) (
print_r($baris);
bergema"
";
}
$result_set->close();
$mysqli->close();
?>

Dalam contoh ini kita mempunyai output bilangan rekod dalam set_hasil menggunakan harta num_rows. Kami juga berkenalan dengan kaedahnya data_seek(). Iaitu, kami mengulangi keseluruhan hasil, kemudian mengembalikan penunjuk ke 0 rekod dan melalui keputusan sekali lagi.

Dalam artikel ini, kami mengulangi menyambung ke pangkalan data dan menutup sambungan. Dan juga didapati bagaimana untuk menanyakan pangkalan data melalui PHP. Belajar, bagaimana untuk mendapatkan result_set dan bagaimana untuk bekerja dengannya. Ini adalah semua yang anda perlu tahu untuk berjaya bekerja dengan MySQL dalam PHP.

Catatan: Superstruktur Power Query ditawarkan dalam Excel 2016 sebagai sekumpulan arahan Muat turun dan tukar. Maklumat dalam artikel ini digunakan pada Power Query dan kumpulan baharu. Untuk mendapatkan maklumat lanjut, lihat ciri Muat Turun dan Tukar dalam Excel 2016.

Dalam operasi Power Query Tambah mencipta pertanyaan baharu yang mengandungi semua baris daripada pertanyaan pertama, dan kemudian semua baris daripada pertanyaan kedua.

Nota Keselamatan: Tahap privasi menghalang penggabungan data secara tidak sengaja daripada pelbagai sumber, yang mungkin persendirian atau organisasi. Apabila menggunakan beberapa pertanyaan, pengguna mungkin secara tidak sengaja menghantar data daripada sumber data peribadi ke sumber data lain. Penyerang boleh memanfaatkan peluang ini. Power Query menganalisis setiap sumber data dan menentukan tahap sensitivitinya: awam, organisasi dan peribadi. Untuk mendapatkan maklumat lanjut tentang tahap privasi, lihat Tahap Privasi.

Melakukan Tambah

Anda boleh melakukan operasi penambahan dua jenis: penambahan pertengahan atau tambah sebaris. menggunakan penambahan pertengahan Untuk setiap operasi tambah, pertanyaan baharu dibuat. Pada tambah sebaris anda menambahkan data pada pertanyaan sedia ada sehingga anda mencapai hasil akhir. Hasilnya ialah langkah baharu pada penghujung permintaan semasa.

Penambahan Sebaris

Penambahan pertengahan


Lihat juga:

Catatan: Editor pertanyaan hanya kelihatan apabila memuatkan, mengedit atau membuat permintaan baharu menggunakan Power Query. Video menunjukkan tingkap editor pertanyaan yang muncul selepas anda mengedit pertanyaan dalam buku kerja Excel. Untuk melihat editor pertanyaan tanpa memuatkan atau mengubah suai pertanyaan sedia ada dalam buku kerja, dalam bahagian Menerima data luaran pada tab reben Power Query pilih Daripada sumber lain > Permintaan kosong. Video menunjukkan salah satu kaedah paparan editor pertanyaan.

Saya rasa semua orang pernah mendengar tentang peraturan Pareto. Dalam apa jua bidang, 20% usaha menghasilkan 80% hasil. Sebagai contoh, anda memakai 20% daripada almari pakaian anda 80% daripada masa, 20% daripada pelanggan anda membawa masuk 80% daripada pendapatan anda. Perkara yang sama dalam Helaian Google: mengetahui 20% daripada fungsi sedia ada, anda boleh menyelesaikan 80% daripada semua masalah yang mungkin.

Saya dapati Query adalah salah satu ciri yang paling berguna bagi Helaian Google. Tetapi Bantuan Google menerangkannya dengan sangat dangkal, dan kuasa penuh fungsi ini tidak didedahkan. Apabila diteliti lebih dekat, ia menjadi jelas bahawa ia mampu menggantikan kebanyakan fungsi sedia ada.

Untuk bekerja dengan QUERY, anda memerlukan pengetahuan asas tentang SQL. Bagi yang tidak tahu, jangan risau, fungsi QUERY sebenarnya menyokong ciri SQL yang sangat asas.

sintaks QUERY

QUERY(data; permintaan; [header])
  • data— ini ialah julat sel yang akan berfungsi sebagai pangkalan data untuk pertanyaan SQL;
  • permintaan— Teks pertanyaan SQL;
  • tajuk ialah hujah pilihan di mana anda boleh menentukan bilangan baris pertama tatasusunan yang mengandungi pengepala.

Untuk memaksimumkan persepsi maklumat lanjut, saya cadangkan membuka dan menyalin Helaian Google berikut

Terdapat berbilang helaian dalam dox yang baru anda buat salinannya. Helaian DB ialah pangkalan data yang akan kami akses menggunakan fungsi QUERY. Helaian Tahap mengandungi contoh yang akan kita lihat dalam artikel ini. Dengan setiap peringkat baru contoh akan menjadi lebih rumit.

Pelan pertanyaan SQL dalam fungsi Pertanyaan

Sebarang pertanyaan SQL terdiri daripada blok berasingan, yang sering dipanggil fitnah. SQL untuk fungsi Pertanyaan menggunakan sintaks bahasa pertanyaan API Visualisasi Google, yang menyokong klausa berikut:

  • pilih— menyenaraikan medan yang akan dikembalikan oleh permintaan;
  • di mana— mengandungi senarai syarat yang mana tatasusunan data yang diproses oleh permintaan akan ditapis;
  • kumpulan oleh— mengandungi senarai medan yang anda ingin kumpulkan hasil;
  • pivot— membantu membina tab silang menggunakan nilai satu lajur sebagai nama lajur jadual akhir;
  • perintah oleh— bertanggungjawab untuk menyusun keputusan;
  • had- dengan bahagian pertanyaan ini anda boleh menetapkan had pada bilangan baris yang dikembalikan oleh pertanyaan;
  • mengimbangi— menggunakan fitnah ini, anda boleh menetapkan bilangan baris pertama yang tidak perlu diproses oleh pertanyaan;
  • label— fitnah ini bertanggungjawab untuk nama medan yang dikembalikan oleh permintaan;
  • format— bertanggungjawab untuk format data output;
  • pilihan - memungkinkan untuk menetapkan parameter output data tambahan.

Hello World untuk fungsi Pertanyaan (Pilih).

Mari pergi ke helaian Level_1 dan lihat formula dalam sel A1.

Pertanyaan(DB!A1:L1143;"pilih * had 100")

Sebahagian daripada formula " DB!A1:L1143" bertanggungjawab untuk pangkalan data dari mana kami akan melakukan pensampelan. Bahagian kedua " pilih * had 100"mengandungi teks permintaan itu sendiri. Simbol "*" dalam kes ini bermaksud mengembalikan semua medan yang terkandung dalam pangkalan data. Dengan menggunakan " had 100» Kami mengehadkan output kepada 100 baris maksimum. Ini adalah contoh permintaan yang paling mudah. Kami memilih 100 baris pertama daripada pangkalan data. Ini adalah sejenis "Hello world" untuk fungsi Pertanyaan.

Kami menggunakan penapis dan pengisihan (Di mana, Susun mengikut)

Pergi ke helaian Level_2. Mari kita pilih hanya beberapa medan yang kita perlukan dan tetapkan syarat penapisan dan pengisihan. Sebagai contoh, kami menggunakan data hanya untuk kempen Campaign_1 dan Campaign_2 untuk tempoh 22-25 Oktober 2015. Mari kita isikannya dalam tertib menurun mengikut jumlah sesi. Untuk menapis dan mengisih, anda perlu menambah penerangan tentang fitnah pada teks permintaan di mana Dan Pesanan. Untuk memaparkan contoh yang diterangkan di atas dalam jadual yang terhasil, kami memerlukan medan Kempen, Tarikh dan Sesi. Mereka inilah yang perlu disenaraikan dalam fitnah tersebut Pilih.

Medan pangkalan data diakses melalui nama lajur lembaran kerja di mana pangkalan data terletak.

Dalam kes kami, data yang terletak pada helaian DB dan akses kepada medan tertentu ditulis sebagai nama lajur helaian. Oleh itu, medan yang diperlukan terletak dalam lajur berikut:

  • padang Tarikh— lajur A;
  • padang Kempen— lajur B;
  • padang Sesi- lajur G.

Oleh itu, bahagian permintaan yang bertanggungjawab untuk senarai output data sebagai hasilnya akan kelihatan seperti ini:

Pilih A, B, G

Seterusnya dalam permintaan adalah fitnah di mana. Apabila menulis permintaan, fitnah mesti diletakkan mengikut susunan yang diterangkan dalam bahagian pertama artikel ini. Selepas pengumuman di mana kita perlu menyenaraikan syarat penapisan. Dalam kes ini, kami menapis data mengikut nama kempen (Kempen) dan tarikh (Tarikh). Kami menggunakan beberapa syarat penapisan. Teks pertanyaan mesti mengandungi operator logik ATAU atau DAN di antara semua syarat. Penapisan mengikut tarikh berbeza sedikit daripada penapisan mengikut nilai angka dan teks; ia memerlukan penggunaan operator Tarikh. Bahagian permintaan yang bertanggungjawab untuk menapis data akan kelihatan seperti ini:

DI MANA (A >= tarikh"2015-10-22" DAN A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")

Menggunakan kurungan, kami membahagikan penapisan data kepada dua bahagian logik: penapis pertama mengikut tarikh, penapis kedua mengikut nama kempen. Pada peringkat ini, formula yang menerangkan data yang akan dipilih dan keadaan penapisan data kelihatan seperti ini:

Pertanyaan(DB!A1:L1143;" Pilih A, B, G DI MANA (A >= tarikh"2015-10-22" DAN A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")

Anda boleh menyalin dan menampalnya, sebagai contoh, pada helaian baharu dokumen yang digunakan sebagai contoh dalam siaran ini dan dapatkan hasil berikut:

Sebagai tambahan kepada pengendali logik biasa (=,<, >) blok WHERE menyokong pengendali penapisan tambahan:

  • mengandungi— menyemak kandungan aksara tertentu dalam rentetan. Sebagai contoh, WHERE A mengandungi 'John' akan kembali ke penapis semua nilai dari lajur A yang mengandungi John, contohnya, John Adams, Long John Silver;
  • bermula dengan— menapis nilai mengikut awalan, iaitu, menyemak aksara pada permulaan baris. Sebagai contoh, bermula dengan 'en' akan mengembalikan nilai kejuruteraan dan bahasa inggeris;
  • berakhir dengan— menapis nilai pada penghujung rentetan. Sebagai contoh, garisan 'koboi ' akan dikembalikan dengan "berakhir dengan 'budak'" atau "berakhir dengan 'y'";
  • perlawanan— sepadan dengan ungkapan biasa. Contohnya: di mana perlawanan ‘.*ia ' akan mengembalikan nilai India dan Nigeria.
  • seperti - Versi ungkapan biasa yang dipermudahkan, ia menyemak sama ada rentetan sepadan dengan ungkapan yang diberikan menggunakan aksara kad bebas. Pada masa ini, suka menyokong dua aksara kad bebas: “%” bermaksud sebarang nombor mana-mana aksara dalam rentetan dan “_” bermaksud mana-mana satu aksara. Sebagai contoh, "di mana nama seperti 'fre%'" akan sepadan dengan baris ‘percuma ’, 'fred ', dan 'freddy ’.

Pertanyaan telah menapis data untuk tempoh tertentu dan hanya meninggalkan kempen yang kami perlukan. Apa yang tinggal ialah mengisih keputusan dalam susunan menurun bergantung pada bilangan sesi. Pengisihan dalam pertanyaan ini dijalankan secara tradisional untuk SQL menggunakan fitnah Perintah oleh. Sintaksnya agak mudah: anda hanya perlu menyenaraikan medan yang anda mahu mengisih hasil, dan juga menentukan susunan pengisihan. Susunan lalai ialah asc, iaitu menaik. Jika anda menentukan parameter desc selepas nama medan, pertanyaan akan mengembalikan hasil dalam susunan menurun bagi yang dinyatakan dalam fitnah Perintah oleh padang.

Dalam kes kami, baris dalam teks permintaan akan bertanggungjawab untuk menapis:

Pesanan oleh G desc

Oleh itu, hasil akhir formula pada helaian Level_2, yang menyelesaikan masalah yang kami perlukan, kelihatan seperti ini:

Pertanyaan(DB!A1:L1143;" PILIH A, B, G MANA (A >= tarikh"2015-10-22" DAN A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2") ORDER BY G DESC")

Kini anda boleh menggunakan sintaks SQL mudah dan fungsi QUERY untuk menapis dan mengisih data.

".
Mungkin lelaki dari pejabat Moscow tidak mempunyai masa, jadi apa yang berikut akan menjadi terjemahan percuma Rujukan Bahasa Pertanyaan (Versi 0.7).
API Visualisasi Google. Bahasa Pertanyaan (Versi 0.7)
Bahasa pertanyaan API Visualisasi Google membolehkan anda memanipulasi data melalui pertanyaan kepada sumber data.

Biasanya, visualisasi memerlukan data untuk dibentangkan dalam beberapa bentuk tertentu. Sebagai contoh, carta pai memerlukan dua lajur: label teks dan nilai berangka. Sumber data mungkin tidak sepadan dengan struktur ini. Ia mungkin mengandungi lebih banyak lajur atau susunannya berbeza daripada yang diperlukan untuk carta.
Bahasa pertanyaan membolehkan kami menstruktur data mengikut cara yang kami perlukan untuk mencapai hasil.
Sintaks bahasa pertanyaan adalah serupa dengan SQL. Mereka yang mahir menggunakan SQL akan dapat menguasai bahasa pertanyaan dengan cepat. Bahagian sintaks menggariskan perbezaan dalam bahasa ini.
Ambil perhatian bahawa tidak semestinya perlu menggunakan bahasa pertanyaan untuk visualisasi. Memerlukan asas untuk menggunakannya. Kepada kandungan.

Menggunakan Bahasa Pertanyaan

Anda boleh menambah rentetan pertanyaan pada sumber data dalam dua cara: daripada kod JavaScript atau sebagai parameter kepada pautan sumber data. Jika pautan anda tidak mengandungi parameter pertanyaan, maka secara lalai keseluruhan set data dikembalikan. Anda boleh menukar set ini dengan melaraskan pertanyaan kepada sumber data itu sendiri.

Jika anda menggunakan fungsi QUERY dalam Helaian Google, maka anda boleh melangkau perkara berikut dan teruskan ke bahagian seterusnya.

Menetapkan permintaan daripada JavaScript

Untuk menetapkan rentetan pertanyaan daripada kod JavaScript, anda perlu memanggil kaedah tersebut setQuery kelas google.visualization.Query .
var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery("select dept, sum(gaji) group by dept");
query.send(handleQueryResponse);

Rentetan pertanyaan kepada sumber data boleh ditambah menggunakan parameter tq. Dengan cara ini, adalah mungkin untuk menggunakan visualisasi yang ditulis oleh pembangun lain dengan hanya melaraskan set data anda.
Rentetan pertanyaan mesti dikodkan dengan betul sebagai parameter URL. Anda boleh menggunakan fungsi JavaScript encodeURIComponent untuk pengekodan atau lakukannya secara manual menggunakan alat di hujung bahagian.
Contoh
Mari lihat contoh pertanyaan untuk Helaian Google (Ingat bahawa pengecam lajur sentiasa huruf. Nama lajur apabila diterbitkan bukan pengecam. Ia adalah pengecam lajur yang mesti digunakan dalam pertanyaan)
Selepas pengekodan, permintaan akan kelihatan seperti ini:
pilih%20A%2C%20sum(B)%20kumpulan%20oleh%20A
Mari kita andaikan bahawa alamat Jadual Data adalah seperti berikut:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE
Mari tambah parameter permintaan &tq=YOUR_QUERY_STRING ke pautan ke Jadual dan dapatkan rentetan pertanyaan siap sedia
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A

Sintaks bahasa

Semakan

Bahasa pertanyaan saya sangat serupa dengan SQL. Walau bagaimanapun, terdapat beberapa ciri yang perlu diambil kira.
Jadual data
Dokumen ini memperkenalkan konsep "Jadual Data" untuk merujuk kepada hasil pertanyaan. Jadual terdiri daripada baris dan lajur. Setiap lajur mempunyai sifat berikut:
  • Pengecam (atau ID lajur). Digunakan untuk merujuk kepada lajur Jadual. Sila ambil perhatian bahawa anda hanya perlu merujuk kepada lajur mengikut pengecamnya. tipu: Cuba jangan gunakan ruang dalam pengecam, ini boleh menyebabkan kesukaran untuk mengedit permintaan. Selain itu, semua pengecam dengan ruang mesti disertakan dalam petikan belakang.
  • Label. Ini ialah rentetan yang biasanya dipaparkan kepada pengguna akhir. Contohnya, legenda dalam carta pai atau tajuk dalam carta jadual. Tidak berkenaan untuk fungsi QUERY() dalam Helaian Google.
  • Jenis data. Jenis data berikut disokong: rentetan, nombor, boolean, tarikh, masa tarikh, masa hari. Semua nilai dalam lajur adalah daripada jenis data lajur itu atau nol. Jenis data ini sangat serupa dengan jenis JavaScript, tetapi tidak sama. Mereka diterangkan dalam bahagian Literal.
  • Memformat templat. Jadual data boleh menyokong corak pemformatan untuk semua atau beberapa lajur. Ini diterangkan dalam bahagian Pemformatan.
Jadual data yang digunakan dalam semua contoh
Contoh dalam dokumen ini menggunakan jadual dengan data dan jenis lajur berikut:
nama
tali
jabatan
tali
waktu makan tengahari
timeofday

Gaji
nombor

hireDate
Tarikh
umur
nombor
isSenior
boolean
kekanananStartTime
masa tarikh
John En 12:00:00 2005-03-19 35 benar 2007-12-02 15:56:00
Dave En 12:00:00 2006-04-19 27 salah null
Sally En 13:00:00 2005-10-10 30 salah null
Ben Jualan 12:00:00 2002-10-10 32 benar 2005-03-09 12:30:00
Dana Jualan 12:00:00 2004-09-08 25 salah null
Mike Pemasaran 13:00:00 2005-01-10 24 benar 2007-12-30 14:40:00

Pengendali bahasa

Bahasa pertanyaan terdiri daripada pernyataan satu atau dua perkataan berikut. Operator mesti mengikut satu sama lain mengikut susunan yang ditunjukkan dalam jadual:
Operator Penggunaan
pilih Memilih lajur mana yang akan dikembalikan dan dalam susunan apa. Jika operator ditinggalkan, semua lajur jadual akan dikembalikan.
Mengembalikan hanya baris jadual yang sepadan dengan syarat. Jika operator diabaikan, semua baris dalam jadual akan dikembalikan.
kumpulan oleh Kumpulan nilai mengikut baris.
pivot Menukar nilai unik dalam lajur kepada lajur baharu, serupa dengan jadual pangsi.
perintah oleh Isih baris berdasarkan nilai.
had Menetapkan had pada baris yang akan dikembalikan.
mengimbangi Melangkau bilangan baris tertentu daripada output.
label Menetapkan kapsyen untuk lajur.
format Memformat nilai dalam lajur tertentu mengikut corak pemformatan.
pilihan Menetapkan pilihan tambahan.
daripada Operator daripada tidak digunakan.
Pilih
Pernyataan pilih menentukan lajur mana yang harus dikembalikan dan dalam susunan apa. Jika pengendali tidak dinyatakan, atau pilih * ditentukan, semua lajur jadual akan dikembalikan dalam susunan asalnya. Lajur boleh dirujuk melalui pengecam, tetapi bukan melalui label. Pengecam dalam Helaian Google ialah nama lajur satu atau dua huruf (A, B, C, ..., AC, ..., DC, ...).
Parameter operator boleh menjadi pengecam lajur, fungsi agregat, fungsi skalar atau operator aritmetik.
Contoh:
pilih *
pilih dept, gaji
pilih maks (gaji)
alamat emelTarikh):

Kami mendapat hasilnya:
waktu makan tengahari nama
12:00:00 John
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mike
Pernyataan where digunakan untuk mengembalikan hanya baris yang memenuhi syarat.
Operator perbandingan mudah digunakan untuk menerangkan keadaan<=, <, >, >=, =, !=, <>. Kedua-dua pengendali!=,<>bermakna tidak sama. Rentetan dibandingkan dengan nilai leksikografinya. Perhatikan, kesaksamaan disemak melalui operator =, dan bukan melalui == seperti dalam banyak bahasa. Perbandingan dengan null dilakukan melalui adalah null dan bukan null . Apabila menggunakan QUERY() dalam Helaian Google, lazimnya medan rentetan mempunyai nilai kosong "" dan bukannya null .
Anda boleh menggabungkan berbilang keadaan menggunakan operator logik dan, atau, tidak. Tanda kurung digunakan untuk menentukan keutamaan yang jelas.

Pernyataan where juga menggunakan operator tambahan untuk melakukan perbandingan rentetan yang lebih kompleks. Pengendali ini mengambil dua argumen yang mestilah rentetan, sebarang argumen bukan rentetan (tarikh, nombor) akan ditukar kepada rentetan sebelum perbandingan. Perbandingan adalah sensitif huruf besar-besaran (untuk melancarkan ciri ini, gunakan fungsi skalar upper(), lower()).
mengandungi - sepadan dengan subrentetan. Ungkapan akan kembali benar jika sebahagian daripada rentetan sepadan sepenuhnya dengan hujah yang diberikan - subrentetan. Sebagai contoh, di mana nama mengandungi "John" akan kembali "John", "John Adams", "Long John Silver" tetapi tidak "John Adams".

Contoh:
pilih *
pilih dept, gaji
pilih maks (gaji)
Contoh berikut menunjukkan penggunaan rujukan pengecam dengan ruang ( alamat emel) dan kepada pengecam yang sepadan dengan nama perkataan terpelihara ( Tarikh):
pilih `alamat e-mel`, nama, `tarikh`
Mari gunakan pertanyaan berikut pada jadual contoh:
Kami mendapat hasilnya:
waktu makan tengahari nama
12:00:00 John
12:00:00 Dave
13:00:00 Sally
12:00:00 Ben
12:00:00 Dana
13:00:00 Mike