Mệnh đề
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
1 được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng, dựa trên cột liên quan giữa chúngHãy xem xét một lựa chọn từ bảng "Đơn hàng"
OrderIDCustomerIDOrderDate1030821996-09-1810309371996-09-1910310771996-09-20
Sau đó, hãy xem một lựa chọn từ bảng "Khách hàng"
Khách hàngIDKhách hàngTênLiên hệTênQuốc gia1Alfreds FutterkisteMaria AndersĐức2Ana Trujillo Emparedados y heladosAna TrujilloMexico3Antonio Moreno TaqueríaAntonio MorenoMexico
Lưu ý rằng cột "CustomerID" trong bảng "Orders" đề cập đến "CustomerID" trong bảng "Customers". Mối quan hệ giữa 2 bảng trên là cột "CustomerID"
Sau đó, chúng ta có thể tạo câu lệnh SQL sau [có chứa
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
2], chọn các bản ghi có giá trị khớp trong cả hai bảngVí dụ
CHỌN Đơn đặt hàng. OrderID, khách hàng. Tên khách hàng, đơn đặt hàng. OrderDate
TỪ Đơn đặt hàng
INNER THAM GIA KHÁCH HÀNG TRÊN Đơn đặt hàng. CustomerID=Khách hàng. ID khách hàng;
và nó sẽ tạo ra một cái gì đó như thế này
OrderIDCustomerNameOrderDate10308Ana Trujillo Emparedados y helados9/18/199610365Antonio Moreno Taquería11/27/199610383Xung quanh Horn12/16/199610355Xung quanh Horn15/11/199610278Berglunds snabbköp8/12/1996
Các loại THAM GIA SQL khác nhau
Dưới đây là các loại THAM GIA khác nhau trong SQL
3. Trả về các bản ghi có giá trị khớp trong cả hai bảngmysql> create table cars [id int[3] not null auto_increment primary key, -> color int[3], brand int[3], model int[3]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from cars; +-------+--------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | color | int[3] | YES | | NULL | | | brand | int[3] | YES | | NULL | | | model | int[3] | YES | | NULL | | +-------+--------+------+-----+---------+----------------+ 4 rows in set [0.00 sec] mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1], -> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1]; Query OK, 10 rows affected [0.00 sec] Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from cars; +----+-------+-------+-------+ | id | color | brand | model | +----+-------+-------+-------+ | 1 | 1 | 2 | 1 | | 2 | 3 | 1 | 2 | | 3 | 5 | 3 | 1 | | 4 | 4 | 4 | 2 | | 5 | 2 | 2 | 3 | | 6 | 3 | 5 | 4 | | 7 | 4 | 1 | 3 | | 8 | 2 | 2 | 1 | | 9 | 5 | 2 | 3 | | 10 | 4 | 5 | 1 | +----+-------+-------+-------+ 10 rows in set [0.00 sec]
4. Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phảimysql> create table cars [id int[3] not null auto_increment primary key, -> color int[3], brand int[3], model int[3]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from cars; +-------+--------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | color | int[3] | YES | | NULL | | | brand | int[3] | YES | | NULL | | | model | int[3] | YES | | NULL | | +-------+--------+------+-----+---------+----------------+ 4 rows in set [0.00 sec] mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1], -> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1]; Query OK, 10 rows affected [0.00 sec] Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from cars; +----+-------+-------+-------+ | id | color | brand | model | +----+-------+-------+-------+ | 1 | 1 | 2 | 1 | | 2 | 3 | 1 | 2 | | 3 | 5 | 3 | 1 | | 4 | 4 | 4 | 2 | | 5 | 2 | 2 | 3 | | 6 | 3 | 5 | 4 | | 7 | 4 | 1 | 3 | | 8 | 2 | 2 | 1 | | 9 | 5 | 2 | 3 | | 10 | 4 | 5 | 1 | +----+-------+-------+-------+ 10 rows in set [0.00 sec]
5. Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên tráimysql> create table cars [id int[3] not null auto_increment primary key, -> color int[3], brand int[3], model int[3]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from cars; +-------+--------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | color | int[3] | YES | | NULL | | | brand | int[3] | YES | | NULL | | | model | int[3] | YES | | NULL | | +-------+--------+------+-----+---------+----------------+ 4 rows in set [0.00 sec] mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1], -> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1]; Query OK, 10 rows affected [0.00 sec] Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from cars; +----+-------+-------+-------+ | id | color | brand | model | +----+-------+-------+-------+ | 1 | 1 | 2 | 1 | | 2 | 3 | 1 | 2 | | 3 | 5 | 3 | 1 | | 4 | 4 | 4 | 2 | | 5 | 2 | 2 | 3 | | 6 | 3 | 5 | 4 | | 7 | 4 | 1 | 3 | | 8 | 2 | 2 | 1 | | 9 | 5 | 2 | 3 | | 10 | 4 | 5 | 1 | +----+-------+-------+-------+ 10 rows in set [0.00 sec]
6. Trả về tất cả các bản ghi khi có sự trùng khớp trong bảng bên trái hoặc bên phảimysql> create table cars [id int[3] not null auto_increment primary key, -> color int[3], brand int[3], model int[3]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from cars; +-------+--------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | color | int[3] | YES | | NULL | | | brand | int[3] | YES | | NULL | | | model | int[3] | YES | | NULL | | +-------+--------+------+-----+---------+----------------+ 4 rows in set [0.00 sec] mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1], -> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1]; Query OK, 10 rows affected [0.00 sec] Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from cars; +----+-------+-------+-------+ | id | color | brand | model | +----+-------+-------+-------+ | 1 | 1 | 2 | 1 | | 2 | 3 | 1 | 2 | | 3 | 5 | 3 | 1 | | 4 | 4 | 4 | 2 | | 5 | 2 | 2 | 3 | | 6 | 3 | 5 | 4 | | 7 | 4 | 1 | 3 | | 8 | 2 | 2 | 1 | | 9 | 5 | 2 | 3 | | 10 | 4 | 5 | 1 | +----+-------+-------+-------+ 10 rows in set [0.00 sec]
Kiểm tra bản thân với các bài tập
Tập thể dục
Chèn các phần còn thiếu trong mệnh đề
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
1 để nối hai bảng mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
8 và mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
9, sử dụng trường mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
10 trong cả hai bảng làm mối quan hệ giữa hai bảng Có một số cách để lấy dữ liệu từ nhiều bảng trong cơ sở dữ liệu. Trong câu trả lời này, tôi sẽ sử dụng cú pháp nối ANSI-92. Điều này có thể khác với một số hướng dẫn khác sử dụng cú pháp ANSI-89 cũ hơn [và nếu bạn đã quen với 89, có vẻ kém trực quan hơn nhiều - nhưng tất cả những gì tôi có thể nói là thử nó] vì nó dễ dàng hơn nhiều . Tại sao lại sử dụng nó? . Việc đọc các truy vấn được viết bởi những người khác bằng cú pháp này sẽ dễ dàng hơn
Tôi cũng sẽ sử dụng khái niệm về một bãi đỗ xe nhỏ có cơ sở dữ liệu để theo dõi những chiếc xe nào có sẵn. Chủ sở hữu đã thuê bạn làm nhân viên IT Máy tính của anh ta và hy vọng bạn có thể cung cấp cho anh ta dữ liệu mà anh ta yêu cầu ngay lập tức
Tôi đã tạo một số bảng tra cứu sẽ được sử dụng bởi bảng cuối cùng. Điều này sẽ cung cấp cho chúng tôi một mô hình hợp lý để làm việc từ. Để bắt đầu, tôi sẽ chạy các truy vấn của mình đối với cơ sở dữ liệu mẫu có cấu trúc sau. Tôi sẽ cố gắng nghĩ về những sai lầm phổ biến thường mắc phải khi bắt đầu và giải thích điều gì sai với chúng - cũng như tất nhiên là chỉ ra cách sửa chúng
Bảng đầu tiên chỉ đơn giản là liệt kê màu sắc để chúng ta biết trong bãi xe mình có những màu gì
mysql> create table colors[id int[3] not null auto_increment primary key,
-> color varchar[15], paint varchar[10]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from colors;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | varchar[15] | YES | | NULL | |
| paint | varchar[10] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set [0.01 sec]
mysql> insert into colors [color, paint] values ['Red', 'Metallic'],
-> ['Green', 'Gloss'], ['Blue', 'Metallic'],
-> ['White' 'Gloss'], ['Black' 'Gloss'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from colors;
+----+-------+----------+
| id | color | paint |
+----+-------+----------+
| 1 | Red | Metallic |
| 2 | Green | Gloss |
| 3 | Blue | Metallic |
| 4 | White | Gloss |
| 5 | Black | Gloss |
+----+-------+----------+
5 rows in set [0.00 sec]
Bảng nhãn hiệu xác định các nhãn hiệu khác nhau của những chiếc xe mà caryard có thể bán
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
Bảng mô hình sẽ bao gồm các loại ô tô khác nhau, việc này sẽ đơn giản hơn nếu sử dụng các loại ô tô khác nhau thay vì mô hình ô tô thực tế
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
Và cuối cùng, để kết nối tất cả những chiếc bàn khác này, chiếc bàn gắn kết mọi thứ lại với nhau. Trường ID thực sự là số lô duy nhất được sử dụng để xác định ô tô
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
Điều này sẽ cung cấp cho chúng tôi đủ dữ liệu [tôi hy vọng] để bao gồm các ví dụ bên dưới về các loại liên kết khác nhau và cũng cung cấp đủ dữ liệu để khiến chúng trở nên đáng giá
Vì vậy, đi sâu vào vấn đề, ông chủ muốn biết ID của tất cả những chiếc xe thể thao mà ông ấy có
Đây là một phép nối hai bảng đơn giản. Chúng tôi có một bảng xác định mô hình và bảng với cổ phiếu có sẵn trong đó. Như bạn có thể thấy, dữ liệu trong cột
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
6 của bảng mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
7 liên quan đến cột mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
8 của bảng mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
7 mà chúng ta có. Bây giờ, chúng tôi biết rằng bảng mô hình có ID là mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
0 cho mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
1, vì vậy hãy viết phép nốimysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
0Vì vậy, truy vấn này có vẻ tốt phải không?
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
1Ôi không. Một lỗi trong truy vấn đầu tiên của chúng tôi. Vâng, và nó là một quả mận. Bạn thấy đấy, truy vấn thực sự có các cột phù hợp, nhưng một số trong số chúng tồn tại trong cả hai bảng, vì vậy cơ sở dữ liệu bị nhầm lẫn về cột thực sự mà chúng tôi muốn nói và ở đâu. Có hai giải pháp để giải quyết vấn đề này. Cách đầu tiên rất hay và đơn giản, chúng ta có thể sử dụng
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
2 để nói cho cơ sở dữ liệu biết chính xác ý của chúng ta, như thế nàymysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
3Cái khác có lẽ thường được sử dụng hơn và được gọi là bí danh bảng. Các bảng trong ví dụ này có các tên đơn giản và ngắn gọn, nhưng gõ một cái gì đó như
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
3 có thể sẽ nhanh cũ, vì vậy một cách đơn giản là đặt tên cho bảng như thế nàymysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
5Bây giờ, quay lại yêu cầu. Như bạn có thể thấy, chúng tôi có thông tin chúng tôi cần, nhưng chúng tôi cũng có thông tin không được yêu cầu, vì vậy chúng tôi cần đưa mệnh đề where vào câu lệnh để chỉ nhận những chiếc xe Thể thao như được yêu cầu. Vì tôi thích phương pháp bí danh bảng hơn là sử dụng lặp đi lặp lại các tên bảng, nên tôi sẽ sử dụng phương pháp này từ thời điểm này trở đi
Rõ ràng, chúng ta cần thêm mệnh đề where vào truy vấn của mình. Chúng tôi có thể xác định Xe thể thao bằng cách sử dụng
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
4 hoặc mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
5. Vì ID được lập chỉ mục và khóa chính [và nó ít phải gõ hơn], hãy sử dụng nó trong truy vấn của chúng tôimysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
8Chơi lô tô. sếp vui. Tất nhiên, là sếp mà chưa bao giờ hài lòng với cái mình yêu cầu, nó xem thông tin rồi bảo mình cũng muốn màu
Được rồi, vì vậy chúng tôi đã viết một phần tốt của truy vấn, nhưng chúng tôi cần sử dụng bảng thứ ba là màu sắc. Bây giờ, bảng thông tin chính của chúng tôi
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
7 lưu trữ ID màu xe và liên kết này trở lại cột ID màu. Vì vậy, theo cách tương tự như ban đầu, chúng ta có thể tham gia một bảng thứ bamysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
0Chết tiệt, mặc dù bảng đã được nối chính xác và các cột có liên quan đã được liên kết, nhưng chúng tôi đã quên lấy thông tin thực tế từ bảng mới mà chúng tôi vừa liên kết
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
0Phải, đó là ông chủ ra khỏi lưng của chúng tôi trong giây lát. Bây giờ, để giải thích một số điều này chi tiết hơn một chút. Như bạn có thể thấy, mệnh đề
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
7 trong câu lệnh của chúng tôi liên kết bảng chính của chúng tôi [tôi thường sử dụng bảng chứa thông tin hơn là bảng tra cứu hoặc bảng thứ nguyên. Truy vấn sẽ hoạt động tốt với tất cả các bảng được chuyển đổi xung quanh, nhưng sẽ không có ý nghĩa gì khi chúng ta quay lại truy vấn này để đọc nó sau một vài tháng nữa, vì vậy, tốt nhất là cố gắng viết một truy vấn hay và đẹp mắt. . Nếu bạn tiếp tục dạy người khác, hãy cố gắng thấm nhuần những đặc điểm này trong các truy vấn của họ - đặc biệt nếu bạn sẽ khắc phục sự cố cho họHoàn toàn có thể tiếp tục liên kết ngày càng nhiều bảng theo cách này
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
1Mặc dù tôi đã quên bao gồm một bảng mà chúng ta có thể muốn nối nhiều hơn một cột trong câu lệnh
mysql> create table cars [id int[3] not null auto_increment primary key,
-> color int[3], brand int[3], model int[3]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from cars;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| color | int[3] | YES | | NULL | |
| brand | int[3] | YES | | NULL | |
| model | int[3] | YES | | NULL | |
+-------+--------+------+-----+---------+----------------+
4 rows in set [0.00 sec]
mysql> insert into cars [color, brand, model] values [1,2,1], [3,1,2], [5,3,1],
-> [4,4,2], [2,2,3], [3,5,4], [4,1,3], [2,2,1], [5,2,3], [4,5,1];
Query OK, 10 rows affected [0.00 sec]
Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from cars;
+----+-------+-------+-------+
| id | color | brand | model |
+----+-------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 3 | 1 | 2 |
| 3 | 5 | 3 | 1 |
| 4 | 4 | 4 | 2 |
| 5 | 2 | 2 | 3 |
| 6 | 3 | 5 | 4 |
| 7 | 4 | 1 | 3 |
| 8 | 2 | 2 | 1 |
| 9 | 5 | 2 | 3 |
| 10 | 4 | 5 | 1 |
+----+-------+-------+-------+
10 rows in set [0.00 sec]
8, đây là một ví dụ. Nếu bảng mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
8 có các mô hình dành riêng cho thương hiệu và do đó cũng có một cột có tên là mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
00 được liên kết trở lại bảng mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
01 trên trường mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
02, thì có thể thực hiện như saumysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
2Bạn có thể thấy, truy vấn trên không chỉ liên kết các bảng đã tham gia với bảng chính
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
7 mà còn chỉ định các liên kết giữa các bảng đã tham gia. Nếu điều này không được thực hiện, kết quả được gọi là phép nối cartesian - nghĩa là dba có nghĩa là xấu. Phép nối cartesian là phép nối trong đó các hàng được trả về vì thông tin không cho cơ sở dữ liệu biết cách giới hạn kết quả, vì vậy truy vấn trả về tất cả các hàng phù hợp với tiêu chíVì vậy, để đưa ra một ví dụ về phép nối cartesian, hãy chạy truy vấn sau
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
3Chúa ơi, thật là xấu xí. Tuy nhiên, đối với cơ sở dữ liệu có liên quan, đó chính xác là những gì được yêu cầu. Trong truy vấn, chúng tôi đã yêu cầu
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
02 từ mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
7 và mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
6 từ mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
8. Tuy nhiên, vì chúng tôi không chỉ định cách tham gia các bảng, cơ sở dữ liệu đã khớp mọi hàng từ bảng đầu tiên với mọi hàng từ bảng thứ haiĐược rồi, vậy là ông chủ đã trở lại, và ông ấy lại muốn biết thêm thông tin. Tôi muốn cùng một danh sách, nhưng cũng bao gồm cả 4WD trong đó
Tuy nhiên, điều này cho chúng ta một cái cớ tuyệt vời để xem xét hai cách khác nhau để thực hiện điều này. Chúng ta có thể thêm một điều kiện khác vào mệnh đề where như thế này
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
4Mặc dù những điều trên sẽ hoạt động hoàn toàn tốt, nhưng hãy nhìn nó theo cách khác, đây là một lý do tuyệt vời để chỉ ra cách một truy vấn
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 sẽ hoạt độngChúng tôi biết rằng sau đây sẽ trả lại tất cả các xe Thể thao
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
1Và sau đây sẽ trả về tất cả 4WD
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
6Vì vậy, bằng cách thêm mệnh đề
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
09 vào giữa chúng, kết quả của truy vấn thứ hai sẽ được thêm vào kết quả của truy vấn đầu tiênmysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
7Như bạn có thể thấy, kết quả của truy vấn đầu tiên được trả về trước, tiếp theo là kết quả của truy vấn thứ hai
Trong ví dụ này, tất nhiên sẽ dễ dàng hơn nhiều nếu chỉ sử dụng truy vấn đầu tiên, nhưng truy vấn
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 có thể rất tốt cho các trường hợp cụ thể. Chúng là một cách tuyệt vời để trả về các kết quả cụ thể từ các bảng từ các bảng không dễ dàng kết hợp với nhau - hoặc đối với vấn đề đó là các bảng hoàn toàn không liên quan. Có một vài quy tắc để làm theo tuy nhiên- Các loại cột từ truy vấn đầu tiên phải khớp với các loại cột từ mọi truy vấn khác bên dưới
- Tên của các cột từ truy vấn đầu tiên sẽ được sử dụng để xác định toàn bộ tập hợp kết quả
- Số cột trong mỗi truy vấn phải giống nhau
Bây giờ, bạn có thể tự hỏi sự khác biệt giữa việc sử dụng
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 và mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
09 là gì. Truy vấn mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 sẽ loại bỏ trùng lặp, trong khi truy vấn mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
09 thì không. Điều này không có nghĩa là có một chút ảnh hưởng về hiệu suất khi sử dụng mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 trên mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
09 nhưng kết quả có thể đáng giá - mặc dù vậy, tôi sẽ không suy đoán về điều đóVề ghi chú này, có thể đáng chú ý một số ghi chú bổ sung ở đây
- Nếu chúng tôi muốn sắp xếp kết quả, chúng tôi có thể sử dụng
17 nhưng bạn không thể sử dụng bí danh nữa. Trong truy vấn ở trên, việc thêm vào mộtmysql> create table brands [id int[3] not null auto_increment primary key, -> brand varchar[15]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from brands; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | brand | varchar[15] | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set [0.01 sec] mysql> insert into brands [brand] values ['Ford'], ['Toyota'], -> ['Nissan'], ['Smart'], ['BMW']; Query OK, 5 rows affected [0.00 sec] Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from brands; +----+--------+ | id | brand | +----+--------+ | 1 | Ford | | 2 | Toyota | | 3 | Nissan | | 4 | Smart | | 5 | BMW | +----+--------+ 5 rows in set [0.00 sec]
18 sẽ dẫn đến lỗi - liên quan đến kết quả, cột được gọi làmysql> create table brands [id int[3] not null auto_increment primary key, -> brand varchar[15]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from brands; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | brand | varchar[15] | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set [0.01 sec] mysql> insert into brands [brand] values ['Ford'], ['Toyota'], -> ['Nissan'], ['Smart'], ['BMW']; Query OK, 5 rows affected [0.00 sec] Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from brands; +----+--------+ | id | brand | +----+--------+ | 1 | Ford | | 2 | Toyota | | 3 | Nissan | | 4 | Smart | | 5 | BMW | +----+--------+ 5 rows in set [0.00 sec]
02 thay vìmysql> create table brands [id int[3] not null auto_increment primary key, -> brand varchar[15]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from brands; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | brand | varchar[15] | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set [0.01 sec] mysql> insert into brands [brand] values ['Ford'], ['Toyota'], -> ['Nissan'], ['Smart'], ['BMW']; Query OK, 5 rows affected [0.00 sec] Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from brands; +----+--------+ | id | brand | +----+--------+ | 1 | Ford | | 2 | Toyota | | 3 | Nissan | | 4 | Smart | | 5 | BMW | +----+--------+ 5 rows in set [0.00 sec]
30 - mặc dù cùng một bí danh đã được sử dụng trong cả hai truy vấnmysql> create table brands [id int[3] not null auto_increment primary key, -> brand varchar[15]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from brands; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | brand | varchar[15] | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set [0.01 sec] mysql> insert into brands [brand] values ['Ford'], ['Toyota'], -> ['Nissan'], ['Smart'], ['BMW']; Query OK, 5 rows affected [0.00 sec] Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from brands; +----+--------+ | id | brand | +----+--------+ | 1 | Ford | | 2 | Toyota | | 3 | Nissan | | 4 | Smart | | 5 | BMW | +----+--------+ 5 rows in set [0.00 sec]
- Chúng tôi chỉ có thể có một câu lệnh
17 và nó phải là câu lệnh cuối cùngmysql> create table brands [id int[3] not null auto_increment primary key, -> brand varchar[15]]; Query OK, 0 rows affected [0.01 sec] mysql> show columns from brands; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int[3] | NO | PRI | NULL | auto_increment | | brand | varchar[15] | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set [0.01 sec] mysql> insert into brands [brand] values ['Ford'], ['Toyota'], -> ['Nissan'], ['Smart'], ['BMW']; Query OK, 5 rows affected [0.00 sec] Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from brands; +----+--------+ | id | brand | +----+--------+ | 1 | Ford | | 2 | Toyota | | 3 | Nissan | | 4 | Smart | | 5 | BMW | +----+--------+ 5 rows in set [0.00 sec]
Đối với các ví dụ tiếp theo, tôi sẽ thêm một vài hàng bổ sung vào bảng của chúng tôi
Tôi đã thêm
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
32 vào bảng nhãn hiệu. Tôi cũng đã thêm một hàng vào mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
7 có giá trị mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
34 là mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
35 - không có tham chiếu trong bảng màuĐược rồi, ông chủ quay lại lần nữa, sủa yêu cầu - *Tôi muốn đếm từng nhãn hiệu chúng tôi mang và số lượng ô tô trong đó. ` - Thông thường, chúng ta vừa đến một phần thú vị của cuộc thảo luận và ông chủ muốn có thêm công việc
Đúng vậy, vì vậy điều đầu tiên chúng ta cần làm là có một danh sách đầy đủ các thương hiệu có thể
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
8Bây giờ, khi chúng ta nối cái này với bảng ô tô của mình, chúng ta sẽ nhận được kết quả sau
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
9Tất nhiên đó là một vấn đề - chúng tôi không thấy bất kỳ đề cập nào về thương hiệu
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
32 đáng yêu mà tôi đã thêmĐiều này là do phép nối tìm kiếm các hàng phù hợp trong cả hai bảng. Vì không có dữ liệu trong ô tô thuộc loại
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
32 nên nó không được trả lại. Đây là nơi chúng ta có thể sử dụng tham gia mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
38. Điều này sẽ trả về tất cả các kết quả từ một bảng cho dù chúng có khớp với bảng kia hay khôngmysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
0Bây giờ chúng ta đã có điều đó, chúng ta có thể thêm một chức năng tổng hợp đáng yêu để đếm số lượng và loại bỏ ông chủ khỏi lưng chúng ta trong giây lát
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
1Và với điều đó, ông chủ trượt đi
Bây giờ, để giải thích điều này một cách chi tiết hơn, các phép nối ngoài có thể thuộc loại
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
39 hoặc mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
50. Trái hoặc Phải xác định bảng nào được bao gồm đầy đủ. Một mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
51 sẽ bao gồm tất cả các hàng từ bảng bên trái, trong khi [bạn đoán nó] một mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
52 mang tất cả các kết quả từ bảng bên phải vào kết quảMột số cơ sở dữ liệu sẽ cho phép một
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
53 sẽ mang lại kết quả [dù khớp hay không] từ cả hai bảng, nhưng điều này không được hỗ trợ trong tất cả các cơ sở dữ liệuBây giờ, tôi có thể đoán tại thời điểm này, bạn đang tự hỏi liệu bạn có thể hợp nhất các kiểu nối trong một truy vấn hay không - và câu trả lời là có, bạn hoàn toàn có thể
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
2Vì vậy, tại sao đó không phải là kết quả được mong đợi?
Đây là truy vấn sẽ hoạt động để nhận được kết quả mà chúng tôi mong đợi
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
3Như chúng ta có thể thấy, chúng ta có hai phép nối ngoài trong truy vấn và kết quả đang đến như mong đợi
Bây giờ, còn những kiểu kết nối khác mà bạn yêu cầu thì sao?
Chà, không phải tất cả các cơ sở dữ liệu đều hỗ trợ
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
54 nhưng hầu như tất cả các cơ sở dữ liệu sẽ cho phép bạn tạo một giao lộ thông qua một phép nối [hoặc ít nhất là một câu lệnh where có cấu trúc tốt]Giao lộ là một loại liên kết hơi giống với một
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 như được mô tả ở trên - nhưng điểm khác biệt là nó chỉ trả về các hàng dữ liệu giống hệt nhau [và ý tôi là giống hệt nhau] giữa các truy vấn riêng lẻ khác nhau được liên kết tham gia. Chỉ những hàng giống hệt nhau về mọi mặt mới được trả vềMột ví dụ đơn giản sẽ là như vậy
mysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
4Trong khi truy vấn
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
08 bình thường sẽ trả về tất cả các hàng của bảng [truy vấn đầu tiên trả về bất kỳ thứ gì trên mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
57 và truy vấn thứ hai trả về bất kỳ thứ gì có mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
58] sẽ dẫn đến một tập hợp đầy đủ, truy vấn giao nhau sẽ chỉ trả về hàng khớp với mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
59 khi nó đáp ứng cả hai Bây giờ, nếu cơ sở dữ liệu của bạn không hỗ trợ truy vấn
mysql> create table brands [id int[3] not null auto_increment primary key,
-> brand varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from brands;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| brand | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.01 sec]
mysql> insert into brands [brand] values ['Ford'], ['Toyota'],
-> ['Nissan'], ['Smart'], ['BMW'];
Query OK, 5 rows affected [0.00 sec]
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
+----+--------+
5 rows in set [0.00 sec]
80, thì có thể dễ dàng thực hiện điều trên bằng truy vấn saumysql> create table models [id int[3] not null auto_increment primary key,
-> model varchar[15]];
Query OK, 0 rows affected [0.01 sec]
mysql> show columns from models;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int[3] | NO | PRI | NULL | auto_increment |
| model | varchar[15] | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set [0.00 sec]
mysql> insert into models [model] values ['Sports'], ['Sedan'], ['4WD'], ['Luxury'];
Query OK, 4 rows affected [0.00 sec]
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from models;
+----+--------+
| id | model |
+----+--------+
| 1 | Sports |
| 2 | Sedan |
| 3 | 4WD |
| 4 | Luxury |
+----+--------+
4 rows in set [0.00 sec]
5Nếu bạn muốn thực hiện phép giao nhau trên hai bảng khác nhau bằng cách sử dụng cơ sở dữ liệu vốn không hỗ trợ truy vấn giao nhau, bạn sẽ cần tạo phép nối trên mọi cột của bảng