Sebelum menjelaskan pertanyaan, saya telah menyediakan jadual data untuk semua orang. Jadual ini menyimpan baki bank dan maklumat asas tentang pengguna.
Kami menentukan struktur jadual bernama wang.
Pernyataan untuk mencipta jadual adalah seperti berikut:
Pertanyaan asasBUAT JADUAL
money
(
id
INT BUKAN NULL AUTO_INCREMENT,
username
VARCHAR(50) NOTA ULL ,
KUNCI UTAMA (balance
(10))
) ENJIN = SET KARAKTER InnoDB utf8;province
age
Struktur jadual dan data dipaparkan seperti berikut:sex
Nota:id
baki merujuk kepada baki
wilayah merujuk kepada wilayah
Nota: "*" ialah ungkapan biasa, yang bermaksud memadankan segala-galanya Pernyataan pertanyaan di atas adalah bersamaan dengan yang berikut:
mysql> -----------+----------+-----------+-----+-----+
|. id |. baki |. umur | -----+-----+-----
|. 120.02 | 0 |
|. 810 |. 43 |.
| |. 1 |. |. .32 | Beijing |. 1 |
|. ----+------ -----+-----+-----+
12 baris dalam set (0.00 saat)
Nyatakan pertanyaan medan
mysql> pilih id, nama pengguna, baki daripada wang;
+----+----------+--------+
| |. nama pengguna | |.. 260.23 |. 313 |
|. 123 |
|. 456 | |. 34.32 |
| 212 | >12 baris dalam set (0.00 saat)
Pertanyakan satu medan untuk rekod bukan pendua yang berbeza
mysql> pilih deptno umur berbeza daripada wang;
+--- -----+
|.
+-------+
| 40 |
| 43 |
|. 63 |
|. 30 |
类别 | 详细解示 |
---|---|
基本语法 | select distinct 字段 from 表; |
示例 | select distinct age deptno from money; |
示例说明 | 查询money表中年龄唯一的所有结果 |
mysql> pilih * daripada wang di mana umur = 29;
+----+----------+--------+----- -----+-----+-----+
| id wilayah |. ----+---------+--------+-----+-----+
| 120.02 | |. 29 |.
|. 456 |. -- +----------+-----+-----+
2 baris dalam set (0.00 saat)
Syarat yang boleh disambung selepas di mana
Rekod yang memenuhi syarat disenaraikan dalam set keputusan. Dalam contoh di atas, medan selepas di mana ialah '=' medan. Selain itu, anda juga boleh menggunakan operator perbandingan seperti >, <, >=, <=, !=;
符号 | 说明 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
= | 等于 |
Berbilang syarat juga boleh digunakan untuk melakukan pertanyaan bersama berbilang keadaan menggunakan operator logik seperti atau dan dan.
Mari kita lihat contoh berbilang syarat:符号 | 说明 |
---|---|
or | 或者 |
and | 并且 |
类型 | 详细内容 |
---|---|
示例 | select * from money where id <10 and |
说明 | 查询所有字段 要求id小于10 并且province='湖北' |
+----+-----------+---------+----------+-----+----- +|. nama pengguna | +----+-----------+---------+----------+-----+----- +
|. 1 |. 120.02 | +----+-----------+---------+----------+-----+----- +
1 baris dalam set (0.00 saat)
Isih set hasilKata kunci yang digunakan untuk mengisih:
关键词 说明 asc 升序排列,从小到大(默认) desc 降序排列,从大到小 Gunakan tertib mengikut untuk mengisih set hasil selepas pilih, dengan desc dan asc ialah kata kunci dalam susunan isihan. 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> pilih id, nama pengguna, baki daripada kiriman wang mengikut baki desc;
+----+-----------+-------- -+
|. id |
+----+----------+-------+
| Benshan |.
|. 810 |. . 12 |
|. Liu Yan |.
| 20.15 |
+---------. ---+
12 baris dalam set (0.00 saat)
Isih berbilang medan
urutan mengikut boleh diikuti dengan pelbagai pengisihan medan yang berbeza dan susunan set hasil yang berbeza bagi medan diisih juga berbeza Jika nilai medan diisih adalah sama , maka medan dengan nilai yang sama diisih mengikut medan pengisihan kedua.* Nota: Jika medan pertama telah menyusun keputusan. Medan isihan medan kedua tidak berkuat kuasa. Dalam kes ini, medan kedua tidak sah. *
mysql> pilih id, nama pengguna, baki daripada pesanan wang mengikut keterangan baki, umur asc;
+----+-----------+---------+
|. id | +----+-----------+---------+
|. 10 |. 3456 | |. 4 |. Jing Boran | |. 8 |. Liu Shishi | |. 6 |. Jackie Chan | |. 2 | |. 12 | |. 3 |. Huang Xiaoming | |. 7 | |. 1 |. Wang Baoqiang | |. 11 |. 34.32 | |. 9 |. Liu Yan | |. 5 |. 20.15 | +----+-----------+---------+
12 baris dalam set (0.00 saat)
Had set keputusan
Untuk pertanyaan atau set hasil diisih, jika anda mahu memaparkan hanya sebahagian daripada semua, gunakan set hasil kata kunci had Sekatan kuantiti.mysql> pilih * daripada had wang 5;
+----+---------+-- ------ -+
+----+-----------+--------+------- ----+-----+-----+
| id wilayah |. ---+---------+---------+-----+-----+
| 120.02 | |. 1 |. |. |. 10 | Liaoning |. 1 |
|. 20.15 |. ---+- ----------+-----+-----+
5 baris dalam set (0.00 saat)
Hadkan set keputusan dan isih
mysql> pilih id, nama pengguna, baki daripada kiriman wang mengikut baki had desc 5;| id |
+----+----------+--------+<. 🎜>|. 10 |. 3456 | Bingbing |.+--- -+-----------+---------+
类别 详细解示 基本语法 select 字段 from 表 order by 字段 关键词 limit 数量 示例 select id,username, balance from money order by balance desc limit 5; 示例说明 按照钱来排序,显示前五个最有钱的用户 5 baris dalam set (0.00 saat)
Pemilihan selang set keputusan
Andaikan 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.Nota: Rekod pertama ialah 0.
mysql> pilih id, nama pengguna, baki daripada had wang 3,3;mysql> pilih id, nama pengguna, baki daripada had wang 0,3;
+----+-----------+---------+
|. id | +----+-----------+---------+
|. 1 |. Wang Baoqiang | |. 2 | |. 3 |. Huang Xiaoming | +----+-----------+---------+
3 baris dalam set (0.00 saat)
Bagaimana pula dengan mengambil tiga baris lagi bermula dari baris ketiga?+----+-----------+---------+
|. id | +----+-----------+---------+|. 4 |. Jing Boran | |. 5 |. 20.15 | |. 6 |. Jackie Chan | +----+-----------+---------+Dan seterusnya... ...3 baris dalam set (0.00 saat)
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
Fungsi statistik digunakanBagaimana untuk menyemak siapa orang terkaya dalam jadual data? Bagaimana jika kita ingin mengetahui jumlah purata wang untuk pengguna? Bagaimana jika kita ingin mengetahui jumlah keseluruhan untuk semua pengguna?
Bagaimana jika kita ingin mengetahui jumlah pengguna?Kami mempunyai empat fungsi statistik yang paling biasa digunakan: Nota: Sudah tentu anda tahu bahawa fungsi mysql lain juga boleh digunakan. Walau bagaimanapun, dalam kerja sebenar, ia jarang digunakan dalam banyak projek besar dan sederhana di syarikat besar, dan mereka semua mempunyai pelayan pengiraan khusus. Oleh kerana jumlah pengiraan MySQL itu sendiri adalah sangat besar, untuk mengurangkan tekanan, kami biasanya menyerahkan tugas pengiraan sebenar kepada pelayan perniagaan atau pelayan lain untuk diselesaikan.
mysql> pilih count(id) daripada wang;
+----------+
|. count(id) |
+----------+
|. 12 |
+----------+
1 baris dalam set (0.00 saat)Anda juga boleh memberikan medan alias! Gunakan sebagai kata kunci.
mysql> pilih count(id) sebagai zongshu daripada wang;
+---------+
|. zongshu |
+---------+
|. 12 |
+---------+
1 baris dalam set (0.00 saat)Amaun purata pertanyaan
mysql> pilih purata(baki) daripada wang;
+--------------------+
|. purata(baki) |
+--------------------+
|. 498.24833393096924 |
+--------------------+
1 baris dalam set (0.00 saat)Jumlah jumlah pertanyaan
mysql> pilih jumlah(baki) daripada wang;
+-------------------+
|. jumlah(baki) |
+-------------------+
|. 5978.980007171631 |
+-------------------+
1 baris dalam set (0.00 saat)Soal jumlah maksimum
mysql> pilih maks(baki) daripada wang;
+-------------+
|. maks(baki) |
+-------------+
|. 3456 |
+-------------+
1 baris dalam set (0.00 saat)Soal jumlah minimum
mysql> pilih min(baki) daripada wang;
+--------------------+
|. min(baki) |
+--------------------+
|. 20.149999618530273 |
+--------------------+
1 baris dalam set (0.00 saat)Kumpulkan kumpulan mengikut
Kami mengumpulkan data mengikut wilayah dalam jadual jumlah yang anda akan dapati selepas mengumpulkan data. Wilayah yang sama akan dialih keluar. Maksudnya, wilayah adalah kumpulan.
类别 详细解示 基本语法 select * from 表 group by 字段 示例 select * from money group by province; 示例说明 按照地区进行分组 mysql> pilih * daripada kumpulan wang mengikut wilayah;
|. 5 |
+----+-----------+-------+------ -----+-----+-----+
| id wilayah |. ----+---------+----------+-----+-----+
| 123 | 30 |. 12 | 1 |
|. . Liu Yan | |
+----+-----------+----------+-----------+-----+ - ----+
Kumpulan statistik (kategori) jumlah nombor:
mysql> --+----------+
| deptno |
+-------+---------+ <. 🎜>|. 1 ||. . . ----+
4 baris dalam set (0.04 saat)7 baris dalam set (0.00 saat)
Kira bilangan wilayah dan kemudian paparkannya dalam kumpulan
mysql> wilayah daripada kumpulan wang mengikut wilayah;
+------------------+---------+
|. count(wilayah) | +------------------+---------+
|. 3 | |. 1 1 | |. 3 |. Shandong |
|. 1 1 | |. 1 1 | |. 2 | |. Heilongjiang |
+------------------+---------+Statistik berdasarkan kumpulan
dengan rollup jarang digunakan. Titik pengetahuan ini ditetapkan pada tahap pemahaman.
Fungsi utamanya adalah untuk mengira data terkumpul dan kemudian melakukan jumlah kiraan.
类别 详细解示 基本语法 select * from 表 group by 字段 with rollup 示例 select count(province),province from money group by province with rollup; 示例说明 对分组的数再次进行统计 Berdasarkan statistik di atas, jumlah bilangan dikira Dalam hasil contoh berikut, terdapat tambahan 12 NULL pada penghujungnya.
mysql> pilih count(wilayah),wilayah daripada kumpulan wang mengikut wilayah dengan rollup;
+------------------+---------+
|. count(wilayah) | +------------------+---------+
|. 3 | |. 1 1 | |. 3 |. Shandong |
|. 1 1 | |. 1 1 | |. 2 | |. Heilongjiang |
|. 12 | +------------------+---------+
8 baris dalam set (0.00 saat)
Hasilnya kemudiannya ditapis.
yang mempunyai ialah kumpulan penapisan dan di manakah rekod penapisan.mysql> pilih kiraan(wilayah) sebagai hasil ,wilayah daripada kumpulan wang mengikut wilayah yang mempunyai hasil >2;
Menggunakan SQL secara keseluruhan
+--------+----------+
|. hasil | +--------+----------+
|. 3 | |. 3 |. Shandong |
+--------+----------+
2 baris dalam set (0.00 saat)Dalam pernyataan di atas, kami hanya menggunakan pernyataan tertentu secara individu dan tidak pernah menggunakannya secara keseluruhan.
Kami kini akan menyepadukan kenyataan dan menggunakannya bersama sekali. Struktur sintaks yang digunakan dengan pernyataan SQL keseluruhan adalah seperti berikut:
PILIH[Field 1 [as alias 1], [Fungsi (Field 2),]...Field n]DARIPADA nama jadual
Nota: [] boleh mewakili pilihan dalam pernyataan di atas.
[WHERE where condition]
[KUMPULAN MENGIKUT medan]
[MEMILIKI mana_sambungan]
[syarat pesanan]
[syarat had]Sintaks akhir diringkaskan seperti berikut:
Kami melakukan gabungan keseluruhan dan menanya medan jadual wang: id, nama pengguna, baki, wilayah diperlukan id>1 dan bakinya lebih besar daripada 50. Gunakan wilayah untuk pengelompokan. Kami menggunakan ID pengguna untuk pesanan menurun, dan hanya 3 item dibenarkan untuk dipaparkan.
关键词 说明 select 选择的列 from 表 where 查询的条件 group by 分组属性 having 分组过滤的条件 order by 排序属性 limit 起始记录位置,取记录的条数 Akhirnya tulis pernyataan SQL seperti berikut, dan hasil pertanyaan adalah seperti berikut:
mysql> > 50 kumpulan mengikut wilayah pesanan mengikut id desc had 3;+----+-----------+---------+----------+|. id |. baki | +----+-----------+---------+----------+
|. 12 | |. 7 | |. 4 |. 810 | +----+-----------+---------+----------+
3 baris dalam set (0.00 saat)
bahagian seterusnya