Contoh pertanyaan SQL dalam MariaDB (MySQL). Apakah SQL? Pertanyaan KEMASKINI mudah ke pangkalan data MySQL

Bagaimanakah saya boleh mengetahui bilangan model PC yang dihasilkan oleh pembekal tertentu? Bagaimana untuk menentukan harga purata komputer dengan ciri teknikal yang sama? Ini dan banyak soalan lain yang berkaitan dengan beberapa maklumat statistik boleh dijawab menggunakan fungsi akhir (agregat).. Piawaian menyediakan fungsi agregat berikut:

Semua fungsi ini mengembalikan satu nilai. Pada masa yang sama, fungsi COUNT, MIN Dan MAX terpakai kepada mana-mana jenis data, manakala JUMLAH Dan AVG digunakan hanya untuk medan angka. Perbezaan antara fungsi COUNT(*) Dan COUNT(<имя поля>) ialah yang kedua tidak mengambil kira nilai NULL semasa mengira.

Contoh. Cari harga minimum dan maksimum untuk komputer peribadi:

Contoh. Cari bilangan komputer tersedia yang dihasilkan oleh pengilang A:

Contoh. Jika kami berminat dengan bilangan model berbeza yang dihasilkan oleh pengilang A, maka pertanyaan boleh dirumuskan seperti berikut (menggunakan fakta bahawa dalam jadual Produk setiap model direkodkan sekali):

Contoh. Cari bilangan model berbeza yang tersedia yang dihasilkan oleh pengilang A. Pertanyaan adalah serupa dengan yang sebelumnya, di mana ia diperlukan untuk menentukan jumlah bilangan model yang dihasilkan oleh pengeluar A. Di sini anda juga perlu mencari bilangan model yang berbeza dalam jadual PC (iaitu, yang tersedia untuk dijual).

Untuk memastikan bahawa hanya nilai unik digunakan apabila mendapatkan penunjuk statistik, apabila hujah fungsi agregat boleh digunakan Parameter DISTINCT. Satu lagi parameter SEMUA adalah lalai dan menganggap bahawa semua nilai yang dikembalikan dalam lajur dikira. pengendali,

Jika kita perlu mendapatkan bilangan model PC yang dihasilkan semua orang pengilang, anda perlu menggunakan KUMPULAN MENGIKUT klausa, mengikut sintaksis klausa WHERE.

KUMPULAN MENGIKUT klausa

KUMPULAN MENGIKUT klausa digunakan untuk menentukan kumpulan baris keluaran yang boleh digunakan fungsi agregat (COUNT, MIN, MAX, AVG dan SUM). Jika klausa ini tiada dan fungsi agregat digunakan, maka semua lajur dengan nama yang disebut dalam PILIH, mesti disertakan dalam fungsi agregat, dan fungsi ini akan digunakan pada keseluruhan set baris yang memenuhi predikat pertanyaan. Jika tidak, semua lajur senarai SELECT tidak termasuk dalam fungsi agregat mesti dinyatakan dalam klausa GROUP BY. Akibatnya, semua baris pertanyaan keluaran dibahagikan kepada kumpulan yang dicirikan oleh gabungan nilai yang sama dalam lajur ini. Selepas ini, fungsi agregat akan digunakan untuk setiap kumpulan. Sila ambil perhatian bahawa untuk GROUP BY semua nilai NULL dianggap sama, i.e. apabila mengumpulkan mengikut medan yang mengandungi nilai NULL, semua baris tersebut akan jatuh ke dalam satu kumpulan.
Jika jika terdapat klausa GROUP BY, dalam klausa SELECT tiada fungsi agregat, maka pertanyaan hanya akan mengembalikan satu baris daripada setiap kumpulan. Ciri ini, bersama-sama dengan kata kunci DISTINCT, boleh digunakan untuk menghapuskan baris pendua dalam set hasil.
Mari lihat contoh mudah:
PILIH model, COUNT(model) AS Qty_model, AVG(price) AS Avg_price
DARI PC
KUMPULAN MENGIKUT model;

Dalam permintaan ini, untuk setiap model PC, bilangan dan kos puratanya ditentukan. Semua baris dengan nilai model yang sama membentuk kumpulan, dan output SELECT mengira bilangan nilai dan nilai harga purata untuk setiap kumpulan. Hasil pertanyaan akan menjadi jadual berikut:
model Qty_model Avg_price
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Jika SELECT mempunyai lajur tarikh, maka penunjuk ini boleh dikira untuk setiap tarikh tertentu. Untuk melakukan ini, anda perlu menambah tarikh sebagai lajur kumpulan, dan kemudian fungsi agregat akan dikira untuk setiap gabungan nilai (model-tarikh).

Terdapat beberapa khusus peraturan untuk melaksanakan fungsi agregat:

  • Jika akibat daripada permintaan tiada baris diterima(atau lebih daripada satu baris untuk kumpulan tertentu), maka tiada data sumber untuk mengira mana-mana fungsi agregat. Dalam kes ini, hasil fungsi COUNT akan menjadi sifar, dan hasil semua fungsi lain akan menjadi NULL.
  • Hujah fungsi agregat tidak boleh sendiri mengandungi fungsi agregat(fungsi daripada fungsi). Itu. dalam satu pertanyaan adalah mustahil, katakan, untuk mendapatkan maksimum nilai purata.
  • Hasil daripada melaksanakan fungsi COUNT ialah integer(INTEGER). Fungsi agregat lain mewarisi jenis data nilai yang mereka proses.
  • Jika fungsi SUM menghasilkan hasil yang lebih besar daripada nilai maksimum jenis data yang digunakan, kesilapan.

Jadi, jika permintaan itu tidak mengandungi KUMPULAN MENGIKUT klausa, Itu fungsi agregat termasuk dalam SELECT klausa, dilaksanakan pada semua baris pertanyaan yang terhasil. Jika permintaan mengandungi KUMPULAN MENGIKUT klausa, setiap set baris yang mempunyai nilai yang sama bagi lajur atau kumpulan lajur yang dinyatakan dalam KUMPULAN MENGIKUT klausa, membentuk kumpulan, dan fungsi agregat dilakukan untuk setiap kumpulan secara berasingan.

MEMPUNYAI tawaran

Jika klausa MANA mentakrifkan predikat untuk menapis baris, kemudian MEMPUNYAI tawaran berlaku selepas berkumpul untuk menentukan predikat serupa yang menapis kumpulan mengikut nilai fungsi agregat. Klausa ini diperlukan untuk mengesahkan nilai yang diperoleh menggunakan fungsi agregat bukan daripada baris individu sumber rekod yang ditakrifkan dalam DARIPADA klausa, dan daripada kumpulan garisan tersebut. Oleh itu, cek sedemikian tidak boleh terkandung dalam klausa MANA.

Jenis dataSQL(Bagaimana dalamHlm, seperti dalam standard)

Jenis rentetan

Jenis data berangka

Mata Wang, Watak, Jenis data binari

Jenis Boolean. Pemindahan

Contoh pertanyaan SQL mudah

Pertanyaan SELECT yang paling mudah

Pernyataan SQL SELECT ialah pernyataan yang paling penting dan paling biasa digunakan. Ia direka untuk mendapatkan maklumat daripada jadual pangkalan data. Sintaks yang dipermudahkan untuk pernyataan SELECT adalah seperti berikut.

PILIH [ SEMUA | DISTINCT ] pilih_item_commalist

DARI table_reference_commalist

[WHERE conditional_expression]

[ KUMPULAN MENGIKUT column_name_commalist ]

[ MEMPUNYAI ungkapan_bersyarat ]

[ ORDER BY order_item_commalist ]

Tanda kurung segi empat sama menunjukkan elemen yang mungkin tidak terdapat dalam permintaan.

Kata kunci SELECT memberitahu pangkalan data bahawa pernyataan ini adalah permintaan untuk mendapatkan maklumat.

Selepas perkataan SELECT, dipisahkan dengan koma, nama medan (senarai atribut) yang kandungannya diminta disenaraikan.

Kata kunci yang diperlukan dalam klausa pertanyaan SELECT ialah perkataan FROM. Kata kunci FROM diikuti dengan senarai nama jadual yang dipisahkan koma dari mana maklumat diambil.

Contohnya, pilih tajuk, penerangan daripada filem

Sebarang pertanyaan SQL mesti berakhir dengan simbol ";" (titik bertitik). Hasil daripada pertanyaan ini akan menjadi jadual...

Susunan lajur dalam jadual ini sepadan dengan susunan medan yang dinyatakan dalam pertanyaan

Jika anda perlu memaparkan nilai semua lajur jadual, anda boleh menggunakan simbol “*” (asterisk) dan bukannya menyenaraikan nama mereka.

PILIH * DARI filem;

Dalam kes ini, hasil pertanyaan akan menjadi keseluruhan jadual filem.

Marilah kita sekali lagi memberi perhatian kepada fakta bahawa jadual yang diperoleh hasil daripada pertanyaan SQL tidak memenuhi sepenuhnya definisi hubungan perhubungan. Khususnya, ia mungkin mengandungi tupel (baris) dengan nilai atribut yang sama.

Sebagai contoh, pertanyaan "senarai nama pelakon" boleh ditulis seperti berikut.

pilih nama_pertama daripada pelakon;

Hasilnya akan menjadi jadual, jadual mengandungi baris yang sama. Untuk mengecualikan rekod pendua daripada hasil pertanyaan SELECT, gunakan kata kunci DISTINCT.

Jika pertanyaan SELECT mendapatkan semula berbilang medan, DISTINCT menghapuskan baris pendua di mana nilai semua medan yang dipilih adalah sama.

Pertanyaan sebelumnya boleh ditulis seperti berikut.

pilih nama_pertama yang berbeza daripada pelakon;

Akibatnya, kami mendapat jadual di mana baris pendua dikecualikan.

Kata kunci SEMUA melakukan yang bertentangan dengan DISTINCT, bermakna baris pendua disertakan dalam output. Mod yang ditentukan oleh kata kunci SEMUA adalah lalai, jadi ia boleh dikatakan tidak digunakan untuk tujuan ini dalam pertanyaan sebenar.

Menggunakan klausa WHERE dalam pernyataan SELECT membolehkan anda menentukan ungkapan keadaan (predikat) yang menilai kepada benar atau palsu untuk nilai medan baris jadual yang dirujuk oleh pernyataan SELECT. Klausa WHERE menentukan baris jadual yang ditentukan harus dipilih. Jadual yang terhasil daripada pertanyaan termasuk hanya baris yang syarat (predikat) ditentukan dalam klausa WHERE dinilai kepada benar.

Contoh: Tulis pertanyaan yang mendapatkan semula nama akhir semua pelakon dengan nama PENELOPE

pilih nama akhir daripada pelakon

di mana first_name="PENELOPE";

Syarat yang dinyatakan dalam klausa WHERE boleh menggunakan operasi perbandingan yang ditakrifkan oleh operator = (sama), > (lebih besar daripada),< (меньше), >= (lebih besar daripada atau sama dengan),<- (меньше или равно), <>(tidak sama), serta operator logik DAN, ATAU, dan TIDAK.

Sebagai contoh, permintaan untuk mendapatkan nama dan perihalan filem pendek (lebih pendek daripada 60 minit), yang harga sewanya kurang daripada $3, akan kelihatan seperti ini:

pilih tajuk, penerangan daripada filem

mana panjang< 60 and rental_rate < 3

Hasil daripada pertanyaan ini kelihatan seperti:

sewa - sewa

inventori - inventori, stok

kedai - stok, kedai


Kandungan artikel
1. Pertanyaan MySQL yang paling mudah
2. Pertanyaan SELECT mudah
3. Pertanyaan INSERT (entri baharu) mudah
4. Pertanyaan KEMASKINI yang ringkas (tulis ganti, tambah).
5. Pertanyaan DELETE (padam rekod) mudah
6. Pertanyaan DROP (padam jadual) mudah
7. Pertanyaan MySQL yang kompleks
8. Pertanyaan MySQL dan pembolehubah PHP

1. Pertanyaan SQL yang paling mudah

1. Memaparkan senarai SEMUA pangkalan data.

TUNJUKKAN pangkalan data;
2. Menyenaraikan SEMUA jadual dalam Pangkalan Data nama_dasar.

TUNJUKKAN jadual dalam base_name;

2. Pertanyaan SELECT mudah ke pangkalan data MySQL

PILIH– pertanyaan yang memilih data sedia ada daripada pangkalan data. Anda boleh menentukan parameter pemilihan khusus untuk pemilihan. Sebagai contoh, intipati permintaan dalam bahasa Rusia berbunyi seperti ini: PILIH lajur ini dan itu DARI jadual ini dan sedemikian DI MANA parameter lajur itu dan itu adalah sama dengan nilai.

1. Memilih SEMUA data dalam jadual tbl_name.

PILIH * DARI tbl_name;
2. Memaparkan bilangan rekod dalam jadual tbl_name.

PILIH kiraan(*) DARI tbl_name;
3. Memilih (PILIH) daripada (DARI) jadual tbl_name had (LIMIT) 3 rekod, bermula daripada 2.

PILIH * DARI tbl_name LIMIT 2,3;
4. Memilih (PILIH) SEMUA (*) rekod daripada (DARI) jadual tbl_name dan mengisihnya (ORDER BY) mengikut medan id mengikut susunan.

PILIH * DARI tbl_name ORDER BY id;
5. Memilih (PILIH) SEMUA rekod daripada (DARI) jadual tbl_name dan mengisihnya (ORDER BY) mengikut medan id dalam susunan TERBALIK.

PILIH * DARI tbl_name ORDER BY id DESC;
6. Memilih ( PILIH) SEMUA (*) rekod daripada ( DARI) jadual pengguna dan menyusunnya ( PERINTAH OLEH) diatas padang ID dalam tertib menaik, had ( HAD) 5 penyertaan pertama.

PILIH * DARI pengguna PESANAN OLEH id LIMIT 5;
7. Memilih semua rekod daripada jadual pengguna, mana padang fname sepadan dengan nilai Gena.

PILIH * DARI pengguna WHERE fname="Gena";
8. Memilih semua rekod daripada jadual pengguna, di mana nilai medan fname bermula dengan Ge.

PILIH * DARI pengguna DI MANA fname SEPERTI "Ge%";
9. Memilih semua rekod daripada jadual pengguna, Di mana fname berakhir dengan na, dan mengisih rekod dalam tertib nilai menaik ID.

PILIH * DARI pengguna DI MANA fname SEPERTI "%na" PESANAN OLEH id;
10. Memilih semua data daripada lajur fname, lnama daripada meja pengguna.

PILIH nama, nama daripada pengguna;

11. Katakan anda mempunyai negara dalam jadual data pengguna anda. Jadi, jika anda ingin memaparkan HANYA senarai nilai yang berlaku (supaya, sebagai contoh, Rusia tidak dipaparkan 20 kali, tetapi hanya sekali), maka kami menggunakan DISTINCT. Ia akan membawa Rusia, Ukraine, Belarus keluar dari jisim nilai berulang. Oleh itu, dari jadual pengguna pembesar suara negara SEMUA nilai UNIK akan dikeluarkan

PILIH negara yang BERBEZA DARIPADA pengguna;
12. Memilih SEMUA data baris daripada jadual pengguna di mana umur mempunyai nilai 18,19 dan 21.

PILIH * DARI pengguna DI MANA umur DI (18,19,21);
13. Memilih nilai MAKSIMUM umur dalam jadual pengguna. Iaitu, jika anda mempunyai nilai terbesar dalam jadual anda umur(dari umur Inggeris) ialah 55, maka hasil pertanyaan ialah 55.

PILIH maks(umur) DARIPADA pengguna;
14. Pilih data daripada jadual pengguna mengikut bidang nama Dan umur DI MANA umur mengambil nilai terkecil.

PILIH nama, min(umur) DARIPADA pengguna;
15. Pilih data daripada jadual pengguna diatas padang nama DI MANA ID TIDAK SAMA DENGAN 2.

PILIH nama DARI pengguna WHERE id!="2";

3. Pertanyaan INSERT (entri baharu) mudah

INSERT– pertanyaan yang membolehkan anda pada mulanya memasukkan rekod ke dalam pangkalan data. Iaitu, ia mencipta rekod (baris) BARU dalam pangkalan data.

1. Membuat entri baharu dalam jadual pengguna, di padang nama memasukkan Sergey, dan di lapangan umur sisipan 25. Oleh itu, baris baharu dengan nilai ini ditambahkan pada jadual. Jika terdapat lebih banyak lajur, maka yang selebihnya akan kekal sama ada kosong atau dengan nilai lalai.

MASUKKAN KE DALAM pengguna (nama, umur) NILAI ("Sergey", "25");

4. Pertanyaan KEMASKINI yang ringkas kepada pangkalan data MySQL

KEMASKINI– pertanyaan yang membolehkan anda RESERVE nilai medan atau TAMBAH sesuatu pada baris yang sedia ada dalam pangkalan data. Sebagai contoh, terdapat baris siap, tetapi parameter umur perlu ditulis semula di dalamnya, kerana ia telah berubah dari semasa ke semasa.

1. Dalam jadual pengguna umur menjadi 18.

KEMASKINI pengguna SET umur = "18" WHERE id = "3";
2. Semuanya adalah sama seperti dalam permintaan pertama, ia hanya menunjukkan sintaks permintaan, di mana dua atau lebih medan ditimpa.
Dalam jadual pengguna WHERE id bersamaan dengan 3 nilai medan umur giliran 18 dan negara Rusia.

KEMASKINI pengguna SET umur = "18", negara = "Rusia" WHERE id = "3";

5. Pertanyaan PADAM (padam rekod) ringkas kepada pangkalan data MySQL

PADAM– pertanyaan yang memadamkan baris daripada jadual.

1. Mengalih keluar baris daripada jadual pengguna DI MANA ID sama dengan 10.

PADAM DARI pengguna WHERE id = "10";

6. Pertanyaan DROP (padam jadual) ringkas kepada pangkalan data MySQL

JATUHKAN– pertanyaan yang memadamkan jadual.

1. Memadam keseluruhan jadual tbl_name.

DROP TABLE tbl_name;

7. Pertanyaan kompleks kepada pangkalan data MySQL

Pertanyaan menarik yang boleh berguna walaupun untuk pengguna berpengalaman

PILIH id, nama, negara DARIPADA pengguna, pentadbir DI MANA TO_DAYS(NOW()) - TO_DAYS(registration_date)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Pertanyaan kompleks ini MEMILIH lajur id, nama, negara DALAM JADUAL pengguna, pentadbir DI MANA Tarikh pendaftaran(tarikh) tidak lebih tua 14 hari saya pengaktifan TIDAK SAMA 0 , Disusun mengikut Tarikh pendaftaran dalam susunan terbalik (baru dahulu).

KEMASKINI pengguna SET umur = "18+" WHERE umur = (PILIH umur DARI pengguna WHERE lelaki = "lelaki");
Di atas adalah contoh yang dipanggil permintaan dalam permintaan dalam SQL. Kemas kini umur dalam kalangan pengguna kepada 18+, dengan jantina adalah lelaki. Saya tidak mengesyorkan pilihan permintaan sedemikian. Dari pengalaman peribadi saya akan mengatakan bahawa lebih baik membuat beberapa yang berasingan - mereka akan diproses lebih cepat.

8. Pertanyaan pangkalan data MySQL dan PHP

Dalam pertanyaan MySQL dalam halaman PHP, anda boleh memasukkan pembolehubah berbanding nilai, dsb. Beberapa contoh

1. Memilih semua rekod daripada jadual pengguna, mana padang fname sepadan dengan nilai pembolehubah $nama.

PILIH * DARI pengguna WHERE fname="$name";
2. Dalam jadual pengguna WHERE id bersamaan dengan 3 nilai medan umur perubahan kepada nilai pembolehubah $age.

KEMASKINI pengguna SET umur = "$age" WHERE id = "3";

Perhatian! Jika anda berminat dengan mana-mana contoh lain, kemudian tulis soalan dalam komen!

Lampiran ini memberikan penerangan yang lebih ringkas tentang pelbagai arahan SQL. Matlamatnya adalah untuk memberi anda rujukan dan definisi SQL yang cepat dan tepat. Bahagian pertama aplikasi ini mentakrifkan elemen yang digunakan untuk mencipta arahan SQL; kedua, butiran sintaks dan ayat dengan penerangan ringkas tentang perintah itu sendiri. Berikut menunjukkan konvensyen standard (dipanggil syarat BNF):

  • Kata kunci ditaip dalam huruf besar.
  • SQL dan istilah khas lain disertakan dalam kurungan sudut dan ditaip dalam huruf condong.(< dan >)
  • Bahagian pilihan arahan disertakan dalam kurungan segi empat sama ().
  • Elipsis (....) menunjukkan bahawa bahagian arahan sebelumnya boleh diulang beberapa kali.
  • Bar menegak (|) bermaksud apa yang mendahuluinya boleh digantikan dengan yang mengikutinya.
  • Kurungan Kerinting ((dan)) menunjukkan bahawa segala-galanya di dalamnya mesti dianggap sebagai integer untuk menilai aksara lain (seperti bar menegak atau elips).
  • Nok dua bertindih dan sama dengan (:: =) bermaksud perkara yang mengikutinya ialah takrifan yang mendahuluinya.

    Selain itu, kami akan menggunakan urutan berikut (.,..) untuk menunjukkan bahawa perkara yang mendahuluinya boleh diulang beberapa kali, dengan peristiwa individu dipisahkan dengan koma. Atribut yang bukan sebahagian daripada standard rasmi akan ditandakan sebagai (*bukan standard*) dalam keterangan.

    SILA AMBIL PERHATIAN: Terminologi yang kami gunakan di sini bukan terminologi ANSI rasmi. Istilah rasmi boleh menjadi sangat mengelirukan, jadi kami telah memudahkannya sedikit.

    Atas sebab ini, kami kadangkala menggunakan syarat selain ANSI, atau menggunakan syarat yang sama tetapi dengan cara yang berbeza sedikit. Sebagai contoh, definisi kami ialah< predicate >berbeza daripada gabungan definisi standard ANSI< predicate >Dengan< search condition >.

    ELEMEN SQL

    Bahagian ini mentakrifkan unsur-unsur perintah SQL. Mereka dibahagikan kepada dua kategori: Unsur asas bahasa, Dan Unsur fungsi bahasa.

    Elemen penting- ini adalah blok bahasa yang dicipta; Apabila SQL meneliti arahan, ia terlebih dahulu menilai setiap aksara dalam teks arahan dari segi elemen tersebut. Pemisah< separator >memisahkan satu bahagian pasukan daripada yang lain; segala yang ada di antara pemisah< separator >diproses sebagai modul. Berdasarkan bahagian ini, SQL mentafsir arahan.

    Elemen berfungsi adalah pelbagai perkara selain daripada kata kunci yang boleh ditafsirkan sebagai modul. Ini adalah bahagian perintah yang dipisahkan oleh pembatas< separator >, yang mempunyai makna istimewa dalam SQL. Sebahagian daripadanya adalah khas untuk arahan tertentu dan akan diterangkan bersama dengan arahan ini kemudian dalam lampiran ini. Item yang disenaraikan di sini adalah biasa kepada semua arahan yang diterangkan. Elemen fungsional boleh ditakrifkan dari segi satu sama lain atau bahkan dalam istilah mereka sendiri. Contohnya, predikat< predicate >, kes terakhir dan paling sukar kami, mengandungi predikat dalam definisinya sendiri. Ini kerana predikat< predicate >menggunakan DAN atau ATAU boleh mengandungi sebarang bilangan predikat< predicate >yang boleh bekerja secara autonomi. Kami membentangkan anda dengan predikat< predicate >dalam bahagian berasingan dalam lampiran ini, disebabkan oleh kepelbagaian dan kerumitan unsur fungsi bahasa ini. Dia akan sentiasa hadir apabila membincangkan bahagian lain yang berfungsi dalam pasukan.

    UNSUR-UNSUR BAHASA ASAS

    DEFINISI ELEMEN< separator > < comment > | < space > | < newline > < comment > --< string > < newline > < space >angkasa lepas< newline >rentetan aksara yang ditentukan pelaksanaan< identifier > < letter >[{< letter or digit > | < underscore}... ] < ИМЕЙТЕ ВВИДУ: Следу строгому стандарту ANSI, символы должны быть набраны в верхнем регистра, а идентификатор < identifier >tidak boleh lebih daripada 18 aksara. DEFINISI ELEMEN< underscore > - < percent sign > % < delimiter >mana-mana yang berikut: , ()< > . : = + " - | <> > = < = или < string > < string >[sebarang teks yang ditaip dalam petikan tunggal] Nota: Dalam< string >, dua petikan tunggal berturut-turut (" ") ditafsirkan sebagai satu (").< SQL term >berakhir bergantung pada bahasa utama. (*bersarang sahaja*)

    ELEMEN FUNGSI

    Jadual berikut menunjukkan elemen fungsi perintah SQL dan takrifnya: DEFINISI ELEMEN< query >SELECT klausa< subquery >Klausa SELECT yang disertakan dalam kurungan di dalam klausa lain yang, sebenarnya, dinilai secara berasingan untuk setiap baris calon klausa lain.< value expression > < primary > | < primary > < operator > < primary > | < primary > < operator > < value expression > < operator >mana-mana yang berikut: + - / *< primary > < column name > | < literal > | < aggregate function > | < built-in constant > | < nonstandard function > < literal > < string > | < mathematical expressio ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ < built-in constant >PENGGUNA |< implementation-dehned constant > < table name > < identifier > < column spec > [< table name > | < alias >.]< column name > < grouping column > < column spec > | < integer > < ordering column > < column spec > | < integer > < colconstraint >BUKAN NULL | UNIK | SEMAK (< predicate >) | KUNCI UTAMA | RUJUKAN< table name >[(< column name >)] < tabconstraint >UNIK (< column list >) | SEMAK (< predicate >) | KUNCI UTAMA (< column list >) | KUNCI ASING (< column list >) RUJUKAN< table name >[(< column list >)] < defvalue >NILAI lalai =< value expression > < data type >Jenis data yang sah (Lihat Lampiran B untuk penerangan jenis yang disediakan oleh ANSI atau Lampiran C untuk jenis biasa yang lain.)< size >Nilai bergantung kepada< data type >(Lihat Lampiran B.)< cursor name > < identifier > < index name > < identifier > < synonym > < identifier >(*tidak standard*)< owner > < Authorization ID > < column list > < column spec > .,.. < value list > < value expression > .,.. < table reference > { < table name > [< alias >] } .,..

    PREDIKAT

    Berikut mentakrifkan senarai jenis predikat yang berbeza< predicate >diterangkan pada halaman berikut:

    < predicate > ::=

    { < comparison predicate > | < in predicate > | < null predicate > | < between predicate > | < like predicate > | < quantified predicate > | < exists predicate > } < predicate >ialah ungkapan yang mungkin benar, salah, atau tidak diketahui, kecuali< exists predicate >Dan< null predicate >, yang hanya boleh benar atau salah.

    Tidak diketahui akan diterima jika nilai NULL menghalang output respons yang diterima. Ini akan berlaku apabila nilai NULL dibandingkan dengan sebarang nilai. Pengendali Boolean standard - DAN, ATAU, dan TIDAK - boleh digunakan dengan predikat. TIDAK benar = palsu, TIDAK salah = benar, dan TIDAK tidak diketahui = tidak diketahui. Keputusan DAN dan ATAU digabungkan dengan predikat ditunjukkan dalam jadual berikut:

    DAN DAN Benar Palsu Tidak diketahui Benar benar palsu tidak diketahui Palsu palsu palsu palsu Tidak diketahui tidak diketahui palsu tidak diketahui ATAU Betul Palsu Tidak diketahui Betul benar benar benar Palsu benar palsu tidak diketahui Tidak diketahui benar tidak diketahui

    Jadual ini dibaca dengan cara yang serupa dengan jadual pendaraban: anda menggabungkan nilai benar, palsu atau tidak diketahui daripada baris dengan lajurnya untuk mendapatkan hasil pada silang. Dalam jadual AND, sebagai contoh, lajur ketiga (Tidak Diketahui) dan baris pertama (Benar) di persimpangan di penjuru kanan sebelah atas memberikan hasil - tidak diketahui, dengan kata lain: Benar DAN Tidak Diketahui = tidak diketahui. Susunan pengiraan ditentukan oleh kurungan. Mereka tidak memperkenalkan diri mereka setiap kali. NOT dinilai dahulu, diikuti dengan DAN dan ATAU. Jenis predikat yang berbeza< predicate >dibincangkan secara berasingan dalam bahagian seterusnya.

    < comparison predicate >(predikat perbandingan)

    Sintaks

    < value expresslon > < relational op > < value expresslon > |
    < subquery >
    < relatlonal op > :: =
    =
    | <
    | >
    | <
    | >=
    | < >

    Jika sama ada< value expression >= NULL, atau< comparison predicate >= tidak diketahui; dalam erti kata lain, adalah benar jika perbandingan itu benar atau salah jika perbandingan itu salah.
    < relational op >mempunyai makna matematik standard untuk nilai berangka; untuk jenis nilai lain, nilai tersebut adalah khusus pelaksanaan.
    Kedua-duanya< value expression >mesti mempunyai jenis data yang setanding. Jika subquery< subquery >digunakan, ia mesti mengandungi satu ungkapan< value expression >dalam klausa SELECT yang nilainya akan menggantikan ungkapan kedua< value expression >dalam predikat perbandingan< comparision predicate >, setiap masa bila< subquery >sebenarnya dipenuhi.

    < between predicate >

    Sintaks

    < value expression >ANTARA< value expression >
    DAN< value expression >

    < between predicate >- A ANTARA B DAN C , mempunyai maksud yang sama dengan< predicate >- (A >= B DAN< = C). < between predicate >yang mana A BUKAN ANTARA B DAN C mempunyai maksud yang sama dengan TIDAK (ANTARA B DAN C).< value expression >boleh disimpulkan menggunakan pertanyaan bukan standard< subquery >(*tidak standard*).

    < in prediicate >

    Sintaks

    < value expression >DALAM< value list > | < subquery >

    Senarai nilai< value list >akan terdiri daripada satu atau lebih nilai tersenarai dalam kurungan dan dipisahkan dengan koma yang mempunyai perbandingan< value expression >jenis data. Jika subquery digunakan< subquery >, ia mesti mengandungi hanya satu ungkapan< value expression >dalam klausa SELECT (mungkin lebih banyak, tetapi ini akan berada di luar standard ANSI). Subquery< subquery >sebenarnya, ia dilaksanakan secara berasingan untuk setiap baris calon pertanyaan utama, dan nilai yang akan dikeluarkan akan membentuk senarai nilai< value list >untuk baris ini. Walau apa pun, predikat< in predicate >akan menjadi benar jika ungkapan tersebut< value expression >diwakili dalam senarai nilai< value list >, jika TIDAK dinyatakan. Frasa A NOT IN (B, C) bersamaan dengan frasa NOT (A IN (B, C)).

    < like predicate >

    Sintaks

    < charvalue >SUKA< pattern >

    < charvalue >ialah sebarang ungkapan *bukan standard*< value expression >jenis alfanumerik.< charvalue >mungkin, mengikut standard, hanya lajur tertentu< column spec >. Sampel< pattern >terdiri daripada rentetan yang akan diperiksa untuk perlawanan dengan< charvalue >. Simbol tamat< escapechar >ialah satu aksara alfanumerik. Padanan akan berlaku jika syarat berikut adalah benar:

  • Untuk setiap garis bawah< underscore >dalam sampel< pattern >yang tidak didahului oleh aksara penamatan< escapechar >, terdapat satu simbol yang sepadan< charvalue >.
  • Untuk setiap< percent sign >dalam sampel< pattern >, yang tidak mendahului< escapechar >, terdapat sifar atau lebih aksara yang sepadan< charvalue >.
  • Untuk setiap< escapechar >V< pattern >yang tidak mendahului yang lain< escapechar >, tiada aksara yang sepadan dalam< charvalue >.
  • Untuk setiap watak lain dalam< pattern >, simbol yang sama ditetapkan pada tanda yang sepadan dalam< charvalue >.

    Jika perlawanan berlaku,< like predicate >- benar jika TIDAK dinyatakan. Frasa NOT LIKE "text" bersamaan dengan NOT (A LIKE "text").

    < null predicate >

    Sintaks

    < column spec >ADALAH NULL

    < column spec >= IS NULL jika nilai NULL terdapat dalam lajur ini. Ia akan berjaya< null predicate >benar jika NULL tidak dinyatakan. Frasa< column spec >IS NOT NULL, mempunyai hasil yang sama seperti NOT (< column spec >ADALAH NULL).

    < quantified predicate >

    Sintaks

    < value expression > < relational op >
    < quantifier > < subquery >
    < quantifier >::= MANA-MANA ​​| SEMUA | BEBERAPA

    Klausa SELECT Subquery< subquery >mesti mengandungi satu dan hanya satu ungkapan nilai< value expression >. Semua nilai yang dikembalikan oleh subkueri< subquery >membentuk satu set keputusan< result set >. < value expression >berbanding menggunakan pembawa< relational operator >, dengan setiap ahli set hasil< result set >. Perbandingan ini dinilai seperti berikut:

  • Jika< quantifier >= SEMUA, dan setiap ahli set hasil< result set >menjadikan perbandingan ini benar,< quantified predicate >- benar.
  • Jika< quantifier >= MANA-MANA ​​dan terdapat sekurang-kurangnya seorang ahli daripada set hasil< result set >, yang menjadikan perbandingan ini benar, maka< quantified predicate >betul.
  • Jika keputusan ditetapkan< result set >kosong, kemudian< quantified predicate >benar jika< quantifier >= SEMUA , dan palsu jika sebaliknya.
  • Jika< quantifier >= SESETENGAH, kesannya sama seperti mana-mana.
  • Jika< quantified predicate >tidak benar atau tidak setia, dia tidak diketahui.

    < exists predicate >

    Sintaks:

    WUJUD (< subquery >)

    Jika subquery< subquery >mencetak satu atau lebih baris output,< exists predicate >- setia; dan tidak betul jika sebaliknya.

    PERINTAH SQL

    Bahagian ini memperincikan sintaks pelbagai arahan SQL. Ini akan memberi anda keupayaan untuk mencari perintah dengan cepat, mencari sintaksnya dan penerangan ringkas tentang cara ia berfungsi.

    PERLU DIMINDA Perintah yang bermula dengan perkataan - EXEC SQL, serta arahan atau ayat yang berakhir dengan perkataan - hanya boleh digunakan dalam SQL bersarang.

    MULAKAN BAHAGIAN PENGISYTIHARAN

    Sintaks

    EXEC SQL MULAKAN BAHAGIAN PENGISYTIHARAN< SQL term > < host-language variable declarations >BAHAGIAN PENGISYTIHARAN TAMAT EXEC SQL< SQL term >

    Perintah ini mencipta bahagian program bahasa hos untuk mengisytiharkan pembolehubah utama yang akan digunakan dalam pernyataan SQL bersarang. Pembolehubah SQLCODE mesti disertakan sebagai salah satu pembolehubah bahasa hos yang diisytiharkan.

    TUTUP KURsor

    Sintaks

    EXEC SQL TUTUP KURSOR< cursor name > < SQL term >;

    Perintah ini memberitahu kursor untuk menutup, selepas itu tiada nilai boleh diambil daripadanya sehingga ia dibuka semula.

    KOMITED (KERJA)

    Sintaks

    Perintah ini tidak mengubah semua perubahan yang dibuat pada pangkalan data sehingga transaksi semasa tamat dan transaksi baharu bermula.

    BUAT INDEKS

    (*BUKAN STANDARD*)

    Sintaks

    BUAT INDEKS< Index name >
    HIDUP< table name > (< column list >);

    Perintah ini mencipta laluan akses pantas yang cekap untuk mencari baris yang mengandungi lajur yang ditetapkan. Jika UNIQUE ditentukan, jadual tidak boleh mengandungi nilai pendua dalam lajur ini.

    BUAT SINONIM (*BUKAN STANDARD*)
    (BUAT SINONIM) (*BUKAN STANDARD*)

    Sintaks

    CIPTA SINONIM IPUBLICl< synonym >UNTUK
    < owner >.< table name >;

    Perintah ini mencipta alternatif (sinonim) untuk jadual. Sinonim adalah milik penciptanya, dan jadual itu sendiri, biasanya kepada pengguna lain. Dengan menggunakan sinonim, pemiliknya tidak perlu merujuk kepada jadual dengan nama penuhnya (termasuk pemiliknya). Jika PUBLIC ditentukan, sinonim itu tergolong dalam direktori SYSTEM dan oleh itu tersedia untuk semua pengguna.

    BUAT JADUAL

    Sintaks

    BUAT JADUAL< table name >
    ({< column name > < data type >[< size >]
    [< colconstralnt > . . .]
    [< defvalue >]} . , . . < tabconstraint > . , . .);

    Perintah mencipta jadual dalam pangkalan data. Jadual ini akan dimiliki oleh penciptanya. Lajur akan dipertimbangkan dalam susunan nama.< data type >- menentukan jenis data yang akan mengandungi lajur. Standard< data type >diterangkan dalam Lampiran B; semua jenis data lain yang digunakan< data type >, dibincangkan dalam Lampiran C. Nilai saiz< size >bergantung pada jenis data< data type >.
    < colconstraint >Dan< tabconstraint >mengenakan sekatan ke atas nilai yang boleh dimasukkan dalam lajur.
    < defvalue >menentukan nilai (lalai) yang akan dimasukkan secara automatik jika tiada nilai lain ditentukan untuk baris ini. (Lihat Bab 17 untuk butiran tentang arahan CREATE TABLE itu sendiri dan Bab 18 DAN untuk butiran tentang had dan< defvalue >).

    CIPTA PANDANGAN

    Sintaks

    CIPTA PANDANGAN< table name >
    AS< query >
    ;

    Pandangan diperlakukan seperti mana-mana jadual dalam arahan SQL. Apabila arahan merujuk kepada nama jadual< table name >, permintaan< query >dilaksanakan, dan outputnya sepadan dengan kandungan jadual yang dinyatakan dalam arahan ini.
    Sesetengah pandangan boleh diubah suai, yang bermaksud arahan pengubahsuaian boleh dilaksanakan pada paparan tersebut dan dihantar ke jadual yang dirujuk dalam pertanyaan< query >. Jika WITH CHECK OPTION dinyatakan, pengubahsuaian ini juga mesti memenuhi syarat predikat< predicate >dalam permintaan itu< query >.

    ISYTIHKAN KURSOR

    Sintaks

    EXEC SQL DEKLARASI< cursor name >KURSOR UNTUK
    < query >< SQL term >

    Perintah ini mengikat mereka ke kursor< cursor name >, dengan permintaan< query >. Apabila kursor dibuka (lihat OPEN CURSOR), permintaan itu< query >dilaksanakan, dan hasilnya boleh diambil (oleh arahan FETCH) untuk output. Jika kursor boleh diubah suai, jadual dirujuk oleh pertanyaan< query >, boleh mendapatkan perubahan dalam kandungan menggunakan operasi pengubahsuaian pada kursor (Lihat Bab 25 tentang kursor boleh diubah suai).

    PADAM

    Sintaks

    PADAM DARI< table name >
    { ; }
    | DI MANA SEMASA< cursorname >< SQL term >

    Jika klausa WHERE tiada, SEMUA baris dalam jadual akan dipadamkan. Jika klausa WHERE menggunakan predikat< predicate >, baris yang memenuhi syarat predikat ini< predicate >dipadamkan. Jika klausa WHERE mempunyai argumen CURRENT OF dalam nama kursor< cursor name >, baris dari jadual< table name >pada masa ini dirujuk oleh nama kursor< cursor name >akan dipadamkan. Borang WHERE CURRENT hanya boleh digunakan dalam SQL bersarang dan hanya dengan kursor yang boleh diubah suai.

    EXEC SQL

    Sintaks

    EXEC SQL< embedded SQL command > < SQL term >

    EXEC SQL digunakan untuk menunjukkan permulaan semua arahan SQL yang bersarang dalam bahasa lain.

    AMBIL

    Sintaks

    EXEC SQL FETCH< cursorname >
    KE DALAM< host-varlable llst >< SQL term >

    FETCH mengambil output daripada rentetan pertanyaan semasa< query >, memasukkannya ke dalam senarai pembolehubah utama< host-variable list >, dan menggerakkan kursor ke baris seterusnya. Senaraikan< host-variable list >mungkin termasuk pembolehubah penunjuk sebagai pembolehubah sasaran (Lihat Bab 25.)

    GERAN (HAK PINDAH)

    Sintaks (standard)

    HIBAH SEMUA
    | (PILIH
    | INSERT
    | PADAM
    | KEMASKINI [(< column llst >)]
    | RUJUKAN [(< column llst >)l). , . .
    HIDUP< table name > . , . .
    KEPADA AWAM |< Authorization ID > . , . .
    ;

    Argumen SEMUA, dengan atau tanpa KEISTIMEWAAN, termasuk setiap keistimewaan dalam senarai keistimewaan. PUBLIC termasuk semua pengguna sedia ada dan semua yang dibuat pada masa hadapan. Perintah ini membolehkan anda memindahkan hak untuk melakukan tindakan pada jadual dengan nama yang ditentukan. RUJUKAN membolehkan anda memberi kebenaran untuk menggunakan lajur dalam senarai lajur< column list >sebagai kunci induk untuk kunci asing. Keistimewaan lain terdiri daripada hak untuk melaksanakan perintah yang mana keistimewaannya ditunjukkan dengan nama mereka dalam jadual. KEMASKINI adalah serupa dengan RUJUKAN dan boleh mengenakan sekatan pada lajur tertentu. PILIHAN GERAN membolehkan anda memindahkan keistimewaan ini kepada pengguna lain.

    Sintaks (bukan standard)

    GERAN DBA
    | SUMBER
    | SAMBUNG... .
    KEPADA< Authorization ID > . , . .
    | < privilege > . , . . }
    DARIPADA ( AWAM
    | < Authorization ID > . , . . };

    Keistimewaan< privelege >boleh menjadi mana-mana yang dinyatakan dalam arahan GRANT. Pengguna yang memberikan REVOKE mesti mempunyai keistimewaan yang sama seperti pengguna yang memberikan GERAN. Klausa ON boleh digunakan apabila keistimewaan jenis khas digunakan pada objek khas.

    KEMBALI (KERJA)
    (GOLONG BALIK) (URUS NIAGA)

    Sintaks

    Perintah itu membatalkan semua perubahan pada pangkalan data yang dibuat semasa transaksi semasa. Ia juga menamatkan transaksi semasa dan memulakan transaksi baharu.

    PILIH

    Sintaks

    PILIH ( IDISTINCT | ALL]< value expression > . , . . } / *
    DARI< table reference > . , . .

    . , . . ];

    Pernyataan ini mengatur pertanyaan dan mendapatkan semula nilai daripada pangkalan data (lihat Bab 3 - Bab 14). Peraturan berikut dikenakan:

  • Jika SEMUA atau DISTINCT tidak dinyatakan, SEMUA diandaikan.
  • Ungkapan< value expression >terdiri< column spec >, fungsi agregat< aggregate funct >, fungsi bukan standard< nonstandard fu nction >, malar< constant >, atau mana-mana gabungannya dengan pengendali dalam ungkapan yang sah.
  • Jadual rujukan< table reference >, terdiri daripada nama jadual, termasuk awalan pemilik jika pengguna semasa bukan pemilik, atau sinonim (bukan standard) untuk jadual. Jadual boleh sama ada jadual asas atau pandangan. Pada dasarnya, alias boleh menunjukkan alias yang digunakan untuk jadual hanya untuk tempoh arahan semasa. Nama jadual atau sinonim mesti dipisahkan daripada alias oleh satu atau lebih pembatas< separator >.
  • Jika GROUP BY digunakan, semua lajur< column spec >digunakan dalam klausa SELECT perlu digunakan sebagai sekumpulan lajur< grouping column >, jika ia tidak terkandung dalam fungsi agregat< aggregate funct >. Seluruh kumpulan lajur< grouping column >mesti diwakili antara ungkapan< value expressions >dinyatakan dalam klausa SELECT. Untuk setiap gabungan nilai kumpulan lajur yang berbeza< grouping column >, akan ada satu dan hanya satu baris output.
  • Jika HAVING digunakan, predikat< predicate >digunakan pada setiap baris yang dihasilkan oleh klausa GROUP BY, dan baris yang menjadikan predikat ini benar akan dicetak.
  • Jika ORDER BY digunakan, output mempunyai urutan tertentu. Setiap ID lajur< column identifer >merujuk kepada yang dinyatakan< value expression >dalam klausa SELECT. Jika ini< value expression >ialah lajur yang ditentukan< column spec >, < co lumn identifier >boleh jadi sama seperti< column spec >. Jika tidak< co lumn identifier >boleh menjadi integer positif yang menunjukkan lokasi di mana< value expression >dalam urutan klausa SELECT. Output akan dijana agar sesuai dengan nilai yang terkandung di dalamnya< column identifier >dalam tertib menaik jika DESC tidak dinyatakan. Nama ID lajur< column identifier >apa yang didahulukan dalam klausa ORDER BY akan mendahului nama kemudian dalam definisi jujukan output.

    Klausa SELECT menilai setiap baris calon jadual di mana baris ditunjukkan secara bebas. Rentetan calon ditakrifkan seperti berikut:

  • Jika terdapat hanya satu jadual rujukan< table reference >disertakan, setiap baris dalam jadual ini pula merupakan baris calon.
  • Jika lebih daripada satu jadual rujukan< table reference >didayakan, setiap baris setiap jadual mesti digabungkan secara bergilir dengan setiap gabungan baris daripada semua jadual lain. Setiap gabungan tersebut seterusnya akan menjadi rentetan calon.

    Setiap baris calon menghasilkan nilai yang menjadikan predikat< predicate >dalam klausa WHERE adalah benar, salah, atau tidak diketahui. Jika GROUP BY tidak digunakan, masing-masing< value expression >digunakan pula pada setiap rentetan calon yang nilainya menjadikan predikat benar, dan hasil operasi ini ialah output.
    Jika GROUP BY digunakan, baris calon digabungkan menggunakan fungsi agregat. Jika tiada predikat< predicate >tidak ditetapkan, setiap ungkapan< value expression >terpakai kepada setiap baris atau kumpulan calon. Jika DISTINCT ditentukan, baris pendua akan dialih keluar daripada output.

    KESATUAN

    Sintaks

    < query >(KESATUAN< query > } . . . ;

    Mengeluarkan dua atau lebih pertanyaan< query >akan digabungkan. Setiap permintaan< query >mesti mengandungi nombor yang sama< value expression >ke dalam klausa SELECT dan dalam susunan sedemikian sehingga 1.. n setiap satu adalah serasi jenis data< data type >dan saiz< size >dengan 1.. n semua yang lain.

    KEMASKINI

    Sintaks

    KEMASKINI< table name >
    SET (< column name > = < value expression > } . , . .
    ([ DI MANA< predlcate >]; }
    | {
    < SQL term >]}

    KEMASKINI menukar nilai dalam setiap lajur yang dinamakan< column name >kepada nilai yang sepadan< value expression >. Jika klausa WHERE menggunakan predikat< predicate >, maka hanya baris jadual yang nilai semasanya menjadikan predikat itu< predicate >betul, tertakluk kepada perubahan. Jika WHERE menggunakan klausa CURRENT OF, maka nilai dalam baris jadual dinamakan< table name >terletak di kursor dengan nama< cursor name >sedang berubah. WHERE Current OF hanya sesuai untuk digunakan dalam SQL bersarang, dan hanya dengan kursor yang boleh diubah suai. Jika tiada klausa WHERE, semua baris ditukar.

    BILA-BILA (SETIAP MASA)

    Sintaks

    EXEC SQL BILA BILA< SQLcond > < actlon > < SQL term >
    < SQLcond >::=SQLERROR | TIDAK DITEMUI | SQLWARNING
    (yang terakhir adalah tidak standard)
    < action >::=TERUSKAN | PERGI KE< target >| PERGI KE< target >
    < target >:: = bergantung pada bahasa hos

  • Sintaks:

    * Di mana bidang1— medan untuk pemilihan dipisahkan dengan koma, anda juga boleh menentukan semua medan dengan *; meja— nama jadual dari mana kami mengekstrak data; syarat- syarat pensampelan; bidang2— medan atau medan yang dipisahkan dengan koma untuk mengisih; kira— bilangan baris untuk dimuat naik.
    * Pertanyaan dalam kurungan segi empat sama tidak diperlukan untuk mendapatkan semula data.

    Contoh mudah menggunakan pilih

    1. Persampelan data biasa:

    > PILIH * DARI pengguna

    2. Persampelan data dengan mencantumkan dua jadual (SERTAI):

    PILIH u.name, r.* DARIPADA pengguna u JOIN users_rights r HIDUP r.user_id=u.id

    * dalam contoh ini, data dijadikan sampel dengan jadual yang digabungkan pengguna Dan hak_pengguna. Mereka disatukan oleh bidang ID Pengguna(dalam jadual users_rights) dan ID(pengguna). Medan nama diambil dari jadual pertama dan semua medan dari yang kedua.

    3. Persampelan dengan selang masa dan/atau tarikh

    a) titik permulaan dan selang masa tertentu diketahui:

    * data untuk jam terakhir akan dipilih (medan Tarikh).

    b) tarikh mula dan tarikh tamat diketahui:

    25.10.2017 Dan 25.11.2017 .

    c) tarikh + masa mula dan tamat diketahui:

    * pilih data antara 25/03/2018 0 jam 15 minit Dan 25/04/2018 15 jam 33 minit dan 9 saat.

    d) mengeluarkan data untuk bulan dan tahun tertentu:

    * ekstrak data di mana dalam medan Tarikh ada nilai untuk April 2018 tahun ini.

    4. Persampelan nilai maksimum, minimum dan purata:

    > PILIH maks(kawasan), min(kawasan), purata(kawasan) DARI negara

    * maks— nilai maksimum; min- yang minimum; purata- sederhana.

    5. Menggunakan Panjang Tali:

    * pertanyaan ini harus menunjukkan semua pengguna yang namanya terdiri daripada 5 aksara.

    Contoh pertanyaan yang lebih kompleks atau jarang digunakan

    1. Penggabungan dengan pengumpulan data yang dipilih ke dalam satu baris (GROUP_CONCAT):

    * dari meja pengguna data medan diambil semula ID, semuanya diletakkan pada satu baris, nilainya dipisahkan koma.

    2. Mengumpulkan data mengikut dua atau lebih medan:

    > PILIH * DARI pengguna KUMPULAN OLEH CONCAT(tajuk, "::", kelahiran)

    * secara ringkasnya, dalam contoh ini kami akan memuat naik data daripada jadual pengguna dan mengumpulkannya mengikut medan tajuk Dan kelahiran. Sebelum mengumpulkan, kami menggabungkan medan menjadi satu baris dengan pembatas :: .

    3. Hasil penggabungan daripada dua jadual (UNION):

    > (PILIH id, fio, alamat, "Pengguna" sebagai jenis DARI pengguna)
    KESATUAN
    (PILIH id, fio, alamat, "Pelanggan" sebagai jenis DARI pelanggan)

    * dalam contoh ini, data diambil daripada jadual pengguna Dan pelanggan.

    4. Contoh nilai purata dikumpulkan untuk setiap jam:

    PILIH purata(suhu), DATE_FORMAT(kemas kini masa tarikh, "%Y-%m-%d %H") sebagai hour_datetime DARI arkib KUMPULAN OLEH DATE_FORMAT(datetimeupdate, "%Y-%m-%d %H")

    *di sini kami mengekstrak nilai purata medan suhu daripada meja arkib dan kumpulan mengikut bidang datetimeupdate(dengan pembahagian masa untuk setiap jam).

    INSERT

    Sintaks 1:

    > MASUKKAN KE DALAM

    () NILAI ( )

    Sintaks 2:

    > MASUKKAN KE DALAM

    NILAI ( )

    * Di mana meja— nama jadual tempat kami memasukkan data; padang— menyenaraikan medan yang dipisahkan dengan koma;nilai— menyenaraikan nilai yang dipisahkan dengan koma.
    * pilihan pertama akan membolehkan anda memasukkan hanya medan yang disenaraikan - selebihnya akan menerima nilai lalai. Pilihan kedua memerlukan sisipan untuk semua medan.

    Contoh penggunaan sisipan

    1. Memasukkan berbilang baris dengan satu pertanyaan:

    > MASUKKAN KE DALAM bandar ("nama", "negara") NILAI ("Moscow", "Rusia"), ("Paris", "Perancis"), ("Funafuti" , "Tuvalu");

    * dalam contoh ini kami akan menambah 3 rekod dalam satu pertanyaan SQL.

    2. Memasukkan daripada jadual lain (menyalin baris, INSERT + SELECT):

    * ekstrak semua rekod daripada jadual bandar-bandar, yang namanya bermula dengan “M” dan masukkannya ke dalam jadual bandar-baru.

    Kemas kini (KEMASKINI)

    Sintaks:

    * Di mana meja- nama jadual; padang— medan yang akan kami ubah nilainya; nilai- makna baru; syarat— syarat (tanpanya, melakukan kemas kini adalah berbahaya - anda boleh menggantikan semua data dalam keseluruhan jadual).

    Kemas kini menggunakan penggantian (REPLACE):

    KEMASKINI

    SET = GANTI( , "<что меняем>", "<на что>");

    KEMASKINI nama SET bandar = REPLACE(nama, "Maskva", "Moscow");

    Jika kita ingin bermain dengan selamat, kita boleh menyemak keputusan penggantian menggunakan SELECT:

    Padam (DELETE)

    Sintaks:

    * Di mana meja- nama jadual; syarat— syarat (seperti dalam kes UPDATE, menggunakan DELETE tanpa syarat adalah berbahaya - DBMS tidak akan meminta pengesahan, tetapi hanya akan memadamkan semua data).

    Mencipta jadual

    Sintaks:

    > BUAT JADUAL

    ( , )

    > BUAT JADUAL JIKA TIDAK WUJUD `hak_pengguna` (
    `id` int(10) tidak ditandatangani BUKAN NULL,
    `user_id` int(10) unsigned NOT NULL,
    `hak` int(10) tidak ditandatangani BUKAN NULL
    ) ENJIN=CHARSET LALAI InnoDB=utf8;

    * Di mana meja— nama jadual (dalam contoh hak_pengguna); bidang1, bidang2— nama medan (dalam contoh, 3 medan dicipta — id, id_pengguna, hak); pilihan1, pilihan2— parameter medan (dalam contoh int(10) tidak ditandatangani BUKAN NULL); pilihan meja— parameter jadual umum (dalam contoh ENJIN=CHARSET LALAI InnoDB=utf8).

    Menggunakan permintaan dalam PHP

    Menyambung ke pangkalan data:

    mysql_connect("localhost", "login", "password") atau die("MySQL connect error");
    mysql_select_db("nama_db");
    mysql_query("SET NAMA "utf8"");

    * di mana sambungan dibuat ke pangkalan data pada pelayan tempatan ( localhost); kelayakan sambungan - log masuk Dan kata laluan(masing-masing, log masuk dan kata laluan); digunakan sebagai asas db_name; pengekodan digunakan UTF-8.

    Anda juga boleh membuat sambungan berterusan:

    mysql_pconnect("localhost", "login", "password") atau die("MySQL connect error");

    * walau bagaimanapun, terdapat kemungkinan untuk mencapai had maksimum pengehosan yang dibenarkan. Kaedah ini harus digunakan pada pelayan kita sendiri, di mana kita sendiri boleh mengawal keadaan.

    Sambungan lengkap:

    * dalam PHP ia dilakukan secara automatik, kecuali untuk sambungan berterusan (mysql_pconnect).

    Pertanyaan kepada MySQL (Mariadb) dalam PHP dilakukan dengan fungsi mysql_query(), dan pengambilan data daripada pertanyaan dilakukan dengan mysql_fetch_array():

    $result = mysql_query("PILIH * DARI pengguna");
    manakala ($mass = mysql_fetch_array($result)) (
    bergema $jisim . "
    ";
    }

    * dalam contoh ini pertanyaan dibuat pada jadual pengguna. Hasil pertanyaan diletakkan dalam pembolehubah $hasil. Seterusnya gelung digunakan sementara, setiap lelaran yang mengambil tatasusunan data dan meletakkannya dalam pembolehubah $jisim— dalam setiap lelaran kami bekerja dengan satu baris pangkalan data.

    Fungsi mysql_fetch_array() yang digunakan mengembalikan tatasusunan bersekutu, yang mudah digunakan, tetapi terdapat juga alternatif - mysql_fetch_row(), yang mengembalikan tatasusunan bernombor biasa.

    Perisai

    Jika anda perlu memasukkan aksara khas dalam rentetan pertanyaan, sebagai contoh, %, anda mesti menggunakan escape menggunakan aksara sengkang ke belakang - \

    Sebagai contoh:

    * jika anda menjalankan pertanyaan sedemikian tanpa melarikan diri, tanda % akan ditafsirkan sebagai sebarang bilangan aksara selepas 100.

    Itu sahaja. Jika anda memerlukan bantuan untuk melengkapkan permintaan, sila e-mel saya