国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Pertanyaan bersama berbilang jadual

Pertanyaan bersama berbilang jadual

Sambungan jadual

Apabila anda perlu menanyakan medan dalam berbilang jadual, Ini boleh dicapai menggunakan cantuman jadual. Cantuman meja dibahagikan kepada cantuman dalam dan cantuman luar.

1. Cantuman dalaman: Gabungan yang membentuk set rekod dengan menggabungkan rekod tersebut yang medannya dalam dua jadual mempunyai hubungan sambungan dan sepadan dengan hubungan sambungan.

2. Sambungan luar: Rekod lain yang tidak sepadan akan dipilih, dibahagikan kepada sambung kiri luar dan sambung kanan luar.

Sebelum mempelajari eksperimen, saya menyediakan dua jadual data simulasi untuk semua orang:

1 Jadual pengguna, yang menyimpan maklumat pengguna

2 Produk manakah yang telah dibeli oleh pengguna?

Pernyataan penciptaan jadual pengguna

     CREATE TABLE IF NOT EXISTS user (
 uid int(11) NOT NULL,
 username varchar(30) NOT NULL,
 password char(32) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    CREATE TABLE IF NOT EXISTS order_goods (
 oid int(11) NOT NULL,
 uid int(11) NOT NULL,
 name varchar(50) NOT NULL,
 buytime int(11) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Data jadual pengguna adalah seperti berikut:

QQ截圖20161009160016.png

QQ截圖20161009160030.png

QQ截圖20161009160042.png


Nota: Dalam jadual order_goods di atas, uid merujuk kepada medan uid dalam jadual pengguna. Dalam jadual di atas, baris data dengan oid ialah 1 dan pengguna dengan uid ialah 10. Untuk pengguna dengan uid 10 dalam jadual pengguna: Gao Xiaofeng. Pengguna membeli tetikus Apple. Masa belian masa pembelian ialah cap waktu unix.

Sambungan dalaman

QQ截圖20161009160110.png

Nota: Dalam contoh berikut, jadual dari menggunakan alias jadual.

Oleh kerana nama jadual terlalu panjang, mudah untuk melakukan kesilapan setiap kali anda menulisnya. Kita boleh mengikuti jadual secara langsung dengan rentetan bahasa Inggeris yang disingkat. Apabila menyambung medan tadi, hanya gunakan rentetan singkatan.medan.

mysql> select u.uid ,u.username as username,o.oid,o.uid,o.name as shopname from user u,order_goods o where u.uid = o.uid;
 +-----+-----------+-----+-----+---------------+
 | uid | username | oid | uid | shopname |
 +-----+-----------+-----+-----+---------------+
 | 10 | 高小峰 | 1 | 10 | 蘋果鼠標(biāo) |
 | 3 | 李文凱 | 2 | 3 | iphone 12s |
 | 12 | 李小超 | 3 | 12 | 雪碧 |
 | 15 | 佟小剛 | 4 | 15 | |
 | 3 | 李文凱 | 5 | 3 | iphone 鍵盤 |
 +-----+-----------+-----+-----+---------------+
 5 rows in set (0.00 sec)

Tatabahasa Asas 2:

QQ截圖20161009160138.png

Hasilnya konsisten dengan Tatabahasa Asas 1.

mysql> select user.uid ,user.username as username,order_goods.oid,order_goods.uid,order_goods.name as shopname from user inner join order_goods on user.uid = order_goods.uid;
 +-----+-----------+-----+-----+---------------+
 | uid | username | oid | uid | shopname |
 +-----+-----------+-----+-----+---------------+
 | 10 | 高小峰 | 1 | 10 | 蘋果鼠標(biāo) |
 | 3 | 李文凱 | 2 | 3 | iphone 12s |
 | 12 | 李小超 | 3 | 12 | 雪碧 |
 | 15 | 佟小剛 | 4 | 15 | |
 | 3 | 李文凱 | 5 | 3 | iphone 鍵盤 |
 +-----+-----------+-----+-----+---------------+
 5 rows in set (0.00 sec)

Sambungan luar

QQ截圖20161009160204.png

Sambungan luar dibahagikan kepada sambung kiri dan pautan kanan, definisi khusus adalah seperti berikut.

Caburan kiri: Mengandungi semua rekod dalam jadual kiri, malah rekod yang tidak sepadan dengannya dalam jadual kanan

mysql> select * from user left join order_goods on user.uid = order_goods.uid;
 +-----+-----------+------------+------+------+---------------+-----------+
 | uid | username | password | oid | uid | name | buytime |
 +-----+-----------+------------+------+------+---------------+-----------+
 | 10 | 高小峰 | 3124qwqw | 1 | 10 | 蘋果鼠標(biāo) | 1212313 |
 | 3 | 李文凱 | 1235531 | 2 | 3 | iphone 12s | 123121241 |
 | 12 | 李小超 | 311aqqee | 3 | 12 | 雪碧 | 13232333 |
 | 15 | 佟小剛 | 3cxvdfs | 4 | 15 | | 34242123 |
 | 3 | 李文凱 | 1235531 | 5 | 3 | iphone 鍵盤 | 12123413 |
 | 1 | 景甜 | 123456 | NULL | NULL | NULL | NULL |
 | 2 | 王小二 | 245667 | NULL | NULL | NULL | NULL |
 | 4 | 井柏然 | 123455 | NULL | NULL | NULL | NULL |
 | 5 | 范冰冰 | 5abcwa | NULL | NULL | NULL | NULL |
 | 6 | 黃曉明 | abcdeef | NULL | NULL | NULL | NULL |
 | 7 | anglebaby | caption | NULL | NULL | NULL | NULL |
 | 8 | TFBOYS | abcdwww | NULL | NULL | NULL | NULL |
 | 9 | 安小超 | 12tfddwd | NULL | NULL | NULL | NULL |
 | 11 | 李小強(qiáng) | 323fxfvdvd | NULL | NULL | NULL | NULL |
 | 13 | 韓小平 | 121rcfwrfq | NULL | NULL | NULL | NULL |
 | 14 | 宋小康 | 123123tcsd | NULL | NULL | NULL | NULL |
 +-----+-----------+------------+------+------+---------------+-----------+
 16 rows in set (0.00 sec)

Campur kanan: Mengandungi semua rekod dalam jadual kanan, malah rekod dalam jadual kanan Tiada rekod yang sepadan dengannya dalam

QQ截圖20161009160220.png

mysql> select * from user right join order_goods on user.uid = order_goods.uid;
 +------+-----------+----------+-----+-----+---------------+-----------+
 | uid | username | password | oid | uid | name | buytime |
 +------+-----------+----------+-----+-----+---------------+-----------+
 | 10 | 高小峰 | 3124qwqw | 1 | 10 | 蘋果鼠標(biāo) | 1212313 |
 | 3 | 李文凱 | 1235531 | 2 | 3 | iphone 12s | 123121241 |
 | 12 | 李小超 | 311aqqee | 3 | 12 | 雪碧 | 13232333 |
 | 15 | 佟小剛 | 3cxvdfs | 4 | 15 | | 34242123 |
 | 3 | 李文凱 | 1235531 | 5 | 3 | iphone 鍵盤 | 12123413 |
 +------+-----------+----------+-----+-----+---------------+-----------+
 5 rows in set (0.00 sec)

Subquery

Kadangkala, apabila kita membuat pertanyaan, syarat yang diperlukan adalah hasil daripada pernyataan pilihan yang lain, dalam hal ini kita perlu menggunakan subquery. Kata kunci yang digunakan untuk subkueri termasuk dalam, bukan dalam, =, !=, wujud, tidak wujud, dsb.


QQ截圖20161009160240.png

Contoh 1:

mysql> select * from user where uid in (1,3,4);
 +-----+-----------+----------+
 | uid | username | password |
 +-----+-----------+----------+
 | 1 | 景甜 | 123456 |
 | 3 | 李文凱 | 1235531 |
 | 4 | 井柏然 | 123455 |
 +-----+-----------+----------+
 3 rows in set (0.00 sec)

Contoh 2:

mysql> select * from user where uid in (select uid from order_goods);
 +-----+-----------+----------+
 | uid | username | password |
 +-----+-----------+----------+
 | 10 | 高小峰 | 3124qwqw |
 | 3 | 李文凱 | 1235531 |
 | 12 | 李小超 | 311aqqee |
 | 15 | 佟小剛 | 3cxvdfs |
 +-----+-----------+----------+
 4 rows in set (0.00 sec)
rrree

Penyatuan rekod

Gunakan penyatuan dan penyatuan semua kata kunci untuk menanyakan data kedua-dua jadual mengikut syarat pertanyaan tertentu, kemudian gabungkan hasilnya bersama-sama untuk paparan. Perbezaan utama antara kedua-duanya ialah hasil digabungkan secara langsung, manakala kesatuan ialah hasil daripada melaksanakan operasi yang berbeza pada keputusan selepas gabungan semua, dan mengalih keluar rekod pendua.


QQ截圖20161009160259.png

mysql> select * from emp where deptno in (select deptno from dept);


Meneruskan pembelajaran
||
<?php echo "Hello Mysql"; ?>