Rekod pertanyaa...LOGIN

Rekod pertanyaan

Rekod pertanyaan

Sebelum menjelaskan pertanyaan, saya telah menyediakan jadual data untuk semua orang. Jadual ini menyimpan baki bank dan maklumat asas pengguna.

Kami menentukan struktur jadual bernama wang.

Pernyataan untuk mencipta jadual adalah seperti berikut:

CREATE TABLE money (
 id INT NOT NULL AUTO_INCREMENT ,
 username VARCHAR(50) NOT NULL ,
 balance FLOAT NOT NULL , 
 province VARCHAR(20) NOT NULL , 
 age TINYINT UNSIGNED NOT NULL , 
 sex TINYINT NOT NULL , 
 PRIMARY KEY (id(10))
 ) ENGINE = InnoDB CHARACTER SET utf8;

Struktur jadual dan data dipaparkan seperti berikut:

QQ截图20161009154618.png

QQ截图20161009154630.png

Nota:
baki merujuk kepada baki
wilayah merujuk kepada wilayah

Pertanyaan asas

QQ截图20161009154649.png

Nota: "*" ialah ungkapan biasa, yang bermaksud memadankan semua pernyataan pertanyaan di atas adalah bersamaan dengan yang berikut:

mysql> select * from money;
 +----+-----------+---------+-----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+-----------+-----+-----+
 | 1 | 李文凯 | 120.02 | 湖北 | 29 | 1 |
 | 2 | 范冰冰 | 260.23 | 山东 | 40 | 0 |
 | 3 | 黄晓明 | 150.86 | 山东 | 40 | 1 |
 | 4 | 井柏然 | 810 | 辽宁 | 27 | 1 |
 | 5 | 李冰冰 | 20.15 | 黑龙江 | 43 | 0 |
 | 6 | 成龙 | 313 | 山东 | 63 | 1 |
 | 7 | 杨幂 | 123 | 北京 | 30 | 0 |
 | 8 | 刘诗诗 | 456 | 北京 | 29 | 1 |
 | 9 | 柳岩 | 23.4 | 湖南 | 36 | 0 |
 | 10 | 赵本山 | 3456 | 辽宁 | 63 | 1 |
 | 11 | 汪峰 | 34.32 | 北京 | 44 | 1 |
 | 12 | 郭德纲 | 212 | 天津 | 43 | 1 |
 +----+-----------+---------+-----------+-----+-----+
 12 rows in set (0.00 sec)

Nyatakan pertanyaan medan

<🎜. >

QQ截图20161009154709.png

mysql> select id,username, balance from money;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 1 | 李文凯 | 120.02 |
 | 2 | 范冰冰 | 260.23 |
 | 3 | 黄晓明 | 150.86 |
 | 4 | 井柏然 | 810 |
 | 5 | 李冰冰 | 20.15 |
 | 6 | 成龙 | 313 |
 | 7 | 杨幂 | 123 |
 | 8 | 刘诗诗 | 456 |
 | 9 | 柳岩 | 23.4 |
 | 10 | 赵本山 | 3456 |
 | 11 | 汪峰 | 34.32 |
 | 12 | 郭德纲 | 212 |
 +----+-----------+---------+
 12 rows in set (0.00 sec)

Pertanyakan medan tunggal untuk rekod bukan pendua yang berbeza

QQ截图20161009154725.png

mysql> select distinct age deptno from  money;
 +--------+
 | deptno |
 +--------+
 | 29 |
 | 40 |
 | 27 |
 | 43 |
 | 63 |
 | 30 |
 | 36 |
 | 44 |
 +--------+
 8 rows in set (0.00 sec)

Pertanyaan bersyarat di mana

QQ截图20161009154741.png

mysql> select * from money where age = 29;
 +----+-----------+---------+----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+----------+-----+-----+
 | 1 | 李文凯 | 120.02 | 湖北 | 29 | 1 |
 | 8 | 刘诗诗 | 456 | 北京 | 29 | 1 |
 +----+-----------+---------+----------+-----+-----+
 2 rows in set (0.00 sec)

Syarat yang boleh diikuti di mana operator perbandingan

akan menyenaraikan rekod yang memenuhi syarat dalam set keputusan. Dalam contoh di atas, apa yang ditambah selepas di mana ialah '=' medan.

Selain itu, anda juga boleh menggunakan operator perbandingan seperti >, <, >=, <=, !=;

QQ截图20161009154754.png

Pengendali logik

Berbilang keadaan juga boleh menggunakan pengendali logik seperti atau dan dan untuk melaksanakan pertanyaan bersama berbilang syarat

QQ截图20161009154833.png

mysql> select * from money where id <10 and province='湖北';
 +----+-----------+---------+----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+----------+-----+-----+
 | 1 | 李文凯 | 120.02 | 湖北 | 29 | 1 |
 +----+-----------+---------+----------+-----+-----+
 1 row in set (0.00 sec)

Isih set hasil

QQ截图20161009154905.png

Gunakan susunan mengikut untuk mengisih set hasil selepas pilihan keluar, di mana desc dan asc berada dalam menyusun kata kunci tertib. desc bermaksud mengisih mengikut medan dalam tertib menurun, dan asc bermaksud mengisih dalam tertib menaik Jika tiada kata kunci ditulis, lalainya ialah mengisih dalam tertib menaik.

mysql> select id,username, balance from money order by balance desc;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 10 | 赵本山 | 3456 |
 | 4 | 井柏然 | 810 |
 | 8 | 刘诗诗 | 456 |
 | 6 | 成龙 | 313 |
 | 2 | 范冰冰 | 260.23 |
 | 12 | 郭德纲 | 212 |
 | 3 | 黄晓明 | 150.86 |
 | 7 | 杨幂 | 123 |
 | 1 | 李文凯 | 120.02 |
 | 11 | 汪峰 | 34.32 |
 | 9 | 柳岩 | 23.4 |
 | 5 | 李冰冰 | 20.15 |
 +----+-----------+---------+
 12 rows in set (0.00 sec)

Isih berbilang medan

urutan mengikut boleh diikuti oleh berbilang medan pengisihan yang berbeza, dan susunan set hasil yang berbeza bagi medan pengisihan juga berbeza Jika nilai medan pengisihan adalah sama, medan dengan nilai yang sama akan diisih mengikut ke medan pengisihan kedua.

QQ截图20161009154934.png

* Nota: Jika medan pertama sudah menyusun keputusan. Medan isihan medan kedua tidak berkuat kuasa. Dalam kes ini, medan kedua adalah tidak sah. *

mysql> select id,username, balance from money order by balance desc,age asc;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 10 | 赵本山 | 3456 |
 | 4 | 井柏然 | 810 |
 | 8 | 刘诗诗 | 456 |
 | 6 | 成龙 | 313 |
 | 2 | 范冰冰 | 260.23 |
 | 12 | 郭德纲 | 212 |
 | 3 | 黄晓明 | 150.86 |
 | 7 | 杨幂 | 123 |
 | 1 | 李文凯 | 120.02 |
 | 11 | 汪峰 | 34.32 |
 | 9 | 柳岩 | 23.4 |
 | 5 | 李冰冰 | 20.15 |
 +----+-----------+---------+
 12 rows in set (0.00 sec)

Had set keputusan

Untuk pertanyaan atau set hasil diisih, jika anda mahu memaparkan hanya sebahagian daripada semua, gunakan had kekunci Hadkan bilangan set hasil perkataan.

QQ截图20161009154951.png

mysql> select * from money limit 5;
 +----+-----------+---------+-----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+-----------+-----+-----+
 | 1 | 李文凯 | 120.02 | 湖北 | 29 | 1 |
 | 2 | 范冰冰 | 260.23 | 山东 | 40 | 0 |
 | 3 | 黄晓明 | 150.86 | 山东 | 40 | 1 |
 | 4 | 井柏然 | 810 | 辽宁 | 27 | 1 |
 | 5 | 李冰冰 | 20.15 | 黑龙江 | 43 | 0 |
 +----+-----------+---------+-----------+-----+-----+
 5 rows in set (0.00 sec)

Hadkan set hasil dan susun

QQ截图20161009155004.png

mysql> select id,username, balance from money order by balance desc limit 5;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 10 | 赵本山 | 3456 |
 | 4 | 井柏然 | 810 |
 | 8 | 刘诗诗 | 456 |
 | 6 | 成龙 | 313 |
 | 2 | 范冰冰 | 260.23 |
 +----+-----------+---------+
 5 rows in set (0.00 sec)

Keputusan Tetapkan pemilihan selang

Katakan saya mengambil 3 rekod bermula daripada rekod 0. Saya mahu mengambil 3 lagi rekod bermula dari yang ke-3. Apakah yang perlu saya lakukan jika saya ingin mengambil 4 rekod bermula dari rekod ke-6?

Pada masa ini, anda perlu menggunakan pemilihan selang set hasil.

QQ截图20161009155016.png

QQ截图20161009155026.png

mysql> select id,username, balance from money limit 0,3;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 1 | 李文凯 | 120.02 |
 | 2 | 范冰冰 | 260.23 |
 | 3 | 黄晓明 | 150.86 |
 +----+-----------+---------+
 3 rows in set (0.00 sec)

Bagaimana dengan tiga lagi bermula dari yang ketiga?

mysql> select id,username, balance from money limit 3,3;
 +----+-----------+---------+
 | id | username | balance |
 +----+-----------+---------+
 | 4 | 井柏然 | 810 |
 | 5 | 李冰冰 | 20.15 |
 | 6 | 成龙 | 313 |
 +----+-----------+---------+
 3 rows in set (0.00 sec)

Melalui idea di atas, paparan melengkapkan halaman.
Setiap halaman memaparkan 10 rekod, kemudian:

Halaman 1 adalah had 0,10
Halaman 2 adalah had 10,10
Halaman 3 adalah had 20,10

Dan seterusnya...

Fungsi statistik menggunakan

1. Bagaimana jika kita ingin mengetahui jumlah pengguna?

2. Bagaimana untuk menyemak siapa orang terkaya dalam jadual data?

3. Bagaimana jika kita ingin mengetahui jumlah purata wang yang dibelanjakan oleh pengguna?

4. Bagaimana jika kita ingin mengetahui jumlah keseluruhan pengguna?

Kami mempunyai empat fungsi statistik yang paling biasa digunakan:

QQ截图20161009155039.png

QQ截图20161009155132.png

mysql> select count(id) from money;
 +-----------+
 | count(id) |
 +-----------+
 | 12 |
 +-----------+
 1 row in set (0.00 sec)

Anda juga boleh memberikan alias kepada medan ! Gunakan sebagai kata kunci.

mysql> select count(id) as zongshu from money;
 +---------+
 | zongshu |
 +---------+
 | 12 |
 +---------+
 1 row in set (0.00 sec)

Semak jumlah purata

mysql> select avg(balance) from money;
 +--------------------+
 | avg(balance) |
 +--------------------+
 | 498.24833393096924 |
 +--------------------+
 1 row in set (0.00 sec)

Semak jumlah keseluruhan

mysql> select sum(balance) from money;
 +-------------------+
 | sum(balance) |
 +-------------------+
 | 5978.980007171631 |
 +-------------------+
 1 row in set (0.00 sec)

Semak jumlah maksimum

mysql> select max(balance) from money;
 +--------------+
 | max(balance) |
 +--------------+
 | 3456 |
 +--------------+
 1 row in set (0.00 sec)

Semak jumlah minimum

mysql> select min(balance) from money;
 +--------------------+
 | min(balance) |
 +--------------------+
 | 20.149999618530273 |
 +--------------------+
 1 row in set (0.00 sec)

kumpulan mengikut

Kami mengumpulkan data mengikut wilayah dalam jadual jumlah Anda akan mengetahui selepas mengumpulkan data. Wilayah yang sama akan dialih keluar. Maksudnya, wilayah adalah kumpulan.

QQ截图20161009155147.png

mysql> select * from money group by province;
 +----+-----------+---------+-----------+-----+-----+
 | id | username | balance | province | age | sex |
 +----+-----------+---------+-----------+-----+-----+
 | 7 | 杨幂 | 123 | 北京 | 30 | 0 |
 | 12 | 郭德纲 | 212 | 天津 | 43 | 1 |
 | 2 | 范冰冰 | 260.23 | 山东 | 40 | 0 |
 | 1 | 李文凯 | 120.02 | 湖北 | 29 | 1 |
 | 9 | 柳岩 | 23.4 | 湖南 | 36 | 0 |
 | 4 | 井柏然 | 810 | 辽宁 | 27 | 1 |
 | 5 | 李冰冰 | 20.15 | 黑龙江 | 43 | 0 |
 +----+-----------+---------+-----------+-----+-----+

Statistik tentang jumlah bilangan kumpulan (kategori):

mysql> select deptno, count(1) from emp group by deptno;
 +--------+----------+
 | deptno | count(1) |
 +--------+----------+
 | 1 | 1 |
 | 2 | 5 |
 | 3 | 1 |
 | 5 | 4 |
 +--------+----------+
 4 rows in set (0.04 sec)

Selepas mengira bilangan wilayah, paparan kumpulan

mysql> select count(province),province from money group by province;
 +-----------------+-----------+
 | count(province) | province |
 +-----------------+-----------+
 | 3 | 北京 |
 | 1 | 天津 |
 | 3 | 山东 |
 | 1 | 湖北 |
 | 1 | 湖南 |
 | 2 | 辽宁 |
 | 1 | 黑龙江 |
 +-----------------+-----------+
 7 rows in set (0.00 sec)

Atas dasar pengumpulan Ia jarang digunakan untuk statistik

dengan rollup. Titik pengetahuan ini ditetapkan pada tahap pemahaman.

Fungsi utamanya adalah untuk mengira data terkumpul dan kemudian melakukan jumlah kiraan.

QQ截图20161009155200.png

QQ截图20161009155215.png

Berdasarkan statistik di atas, jumlah nombor dikira Dalam hasil contoh berikut, terdapat tambahan 12 NULL di penghujungnya.

mysql> select count(province),province from money group by province with rollup;
 +-----------------+-----------+
 | count(province) | province |
 +-----------------+-----------+
 | 3 | 北京 |
 | 1 | 天津 |
 | 3 | 山东 |
 | 1 | 湖北 |
 | 1 | 湖南 |
 | 2 | 辽宁 |
 | 1 | 黑龙江 |
 | 12 | NULL |
 +-----------------+-----------+
 8 rows in set (0.00 sec)

Hasilnya kemudian ditapis mempunyai

Klausa mempunyai adalah serupa dengan di mana tetapi juga berbeza. Kedua-duanya adalah pernyataan yang menetapkan syarat.

yang mempunyai ialah kumpulan penapisan dan di manakah rekod penapisan.

QQ截图20161009155232.png

mysql> select count(province) as result ,province from money group by province having result >2;
 +--------+----------+
 | result | province |
 +--------+----------+
 | 3 | 北京 |
 | 3 | 山东 |
 +--------+----------+
 2 rows in set (0.00 sec)

Menggunakan SQL secara keseluruhan

Kami telah menggunakan pernyataan tertentu secara individu dalam pernyataan di atas, bukan secara keseluruhan.

Kami kini akan menyepadukan kenyataan dan menggunakannya bersama sekali. Struktur sintaks yang digunakan dengan pernyataan SQL keseluruhan adalah seperti berikut:

PILIH
[medan 1 [sebagai alias 1], [fungsi (medan 2),]...medan n]
DARI nama jadual
[WHERE mana keadaan]
[KUMPULAN MENGIKUT medan]
[MEMPUNYAI where_contition]
[syarat pesanan]
[syarat had]

Nota: Di atas [ ] boleh digunakan dalam pernyataan untuk mewakili pilihan.

Ringkasan sintaks akhir adalah seperti berikut:

QQ截图20161009155246.png

QQ截图20161009155305.png

Kami melaksanakan penggunaan gabungan keseluruhan untuk menanyakan medan jadual wang : id, nama pengguna, baki, wilayah memerlukan baki id>1 lebih besar daripada 50 dan wilayah itu digunakan untuk pengumpulan. Kami menggunakan ID pengguna untuk pesanan menurun, dan hanya 3 item dibenarkan untuk dipaparkan.

Akhir sekali tulis pernyataan SQL seperti berikut, dan hasil pertanyaan adalah seperti berikut:

mysql> select id,username,balance,province from money where id > 1 and balance > 50 group by province order by id desc limit 3; +----+-----------+---------+----------+ | id | username | balance | province | +----+-----------+---------+----------+ | 12 | 郭德纲 | 212 | 天津 | | 7 | 杨幂 | 123 | 北京 | | 4 | 井柏然 | 810 | 辽宁 | +----+-----------+---------+----------+ 3 rows in set (0.00 sec)


bahagian seterusnya
<?php echo "Hello Mysql"; ?>
babperisian kursus