Một ví dụ về sử dụng terminal tạo cơ sở dữ liệu, show dữ liệu đã tạo :)
MariaDB [(none)]> create database dvd;
MariaDB [(none)]> use dvd;
MariaDB [dvd]> CREATE TABLE `customers` (`customer_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(60) NOT NULL , `address` VARCHAR(60) NOT NULL, `city` VARCHAR(60) NOT NULL, PRIMARY KEY (`customer_id`), INDEX (`customer_id`));
MariaDB [dvd]> describe customers;
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| customer_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(60) | NO | | NULL | |
| address | varchar(60) | NO | | NULL | |
| city | varchar(60) | NO | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
MariaDB [dvd]> CREATE TABLE `dvd` ( `dvd_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `dvd_name` VARCHAR(100) NOT NULL, `author` VARCHAR(100) NOT NULL, `price` DECIMAL(6,2) NOT NULL, PRIMARY KEY (`dvd_id`), INDEX (`dvd_id`));
MariaDB [dvd]> describe dvd;
+----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+----------------+
| dvd_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| dvd_name | varchar(100) | NO | | NULL | |
| author | varchar(100) | NO | | NULL | |
| price | decimal(6,2) | NO | | NULL | |
+----------+------------------+------+-----+---------+----------------+
MariaDB [dvd]> CREATE TABLE `orders` ( `order_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `customer_id` INT UNSIGNED NOT NULL, `amount` DECIMAL(6,2) NOT NULL, `payment` VARCHAR(40) NOT NULL,`message` TEXT NOT NULL, `order_date` timestamp, PRIMARY KEY (`order_id`), INDEX (`order_date`));
MariaDB [dvd]> describe orders;
+-------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+-------------------+-----------------------------+
| order_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| customer_id | int(10) unsigned | NO | | NULL | |
| amount | decimal(6,2) | NO | | NULL | |
| payment | varchar(40) | NO | | NULL | |
| message | text | NO | | NULL | |
| order_date | timestamp | NO | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+------------------+------+-----+-------------------+-----------------------------+
MariaDB [dvd]> CREATE TABLE `order_item` (`order_item` INT UNSIGNED NOT NULL AUTO_INCREMENT, `dvd_id` INT UNSIGNED NOT NULL, `order_id` INT UNSIGNED NOT NULL, `quantity` TINYINT UNSIGNED NOT NULL, PRIMARY KEY (`order_item`), INDEX (`dvd_id`), INDEX (`order_id`));
MariaDB [dvd]> describe order_item;
+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| order_item | int(10) unsigned | NO | PRI | NULL | auto_increment |
| dvd_id | int(10) unsigned | NO | MUL | NULL | |
| order_id | int(10) unsigned | NO | MUL | NULL | |
| quantity | tinyint(3) unsigned | NO | | NULL | |
+------------+---------------------+------+-----+---------+----------------+
MariaDB [dvd]> INSERT INTO `customers` (`name`,`address`,`city`) VALUES ('Pham Ngoc Hoang','Ha Nam 1','Phu Ly'),('Pham Ngoc Vinh','Ha Nam 2','Ha Noi');
MariaDB [dvd]> select * from customers;
+-------------+-----------------+----------+--------+
| customer_id | name | address | city |
+-------------+-----------------+----------+--------+
| 1 | Pham Ngoc Hoang | Ha Nam 1 | Phu Ly |
| 2 | Pham Ngoc Vinh | Ha Nam 2 | Ha Noi |
+-------------+-----------------+----------+--------+
MariaDB [dvd]> INSERT INTO `dvd` (`dvd_name`,`author`,`price`) VALUES ('DVD 1','Demenwarlock 1',1000),('DVD 2','Demenwarlock 2',2000),('DVD 3','Demenwarlock 3',3000);
MariaDB [dvd]> select * from dvd;
+--------+----------+----------------+---------+
| dvd_id | dvd_name | author | price |
+--------+----------+----------------+---------+
| 1 | DVD 1 | Demenwarlock 1 | 1000.00 |
| 2 | DVD 2 | Demenwarlock 2 | 2000.00 |
| 3 | DVD 3 | Demenwarlock 3 | 3000.00 |
+--------+----------+----------------+---------+
MariaDB [dvd]> INSERT INTO `orders` (`customer_id`,`amount`,`payment`,`message`,`order_date`) VALUES (1,1000,'master','Toi rat thic',NOW()),(1,3000,'master','Toi rat thic',NOW()),(2,8000,'payment','Toi dang xem',NOW());
MariaDB [dvd]> select * from orders;
+----------+-------------+---------+---------+--------------+---------------------+
| order_id | customer_id | amount | payment | message | order_date |
+----------+-------------+---------+---------+--------------+---------------------+
| 1 | 1 | 1000.00 | master | Toi rat thic | 2019-06-02 23:01:05 |
| 2 | 1 | 3000.00 | master | Toi rat thic | 2019-06-02 23:01:05 |
| 3 | 2 | 8000.00 | payment | Toi dang xem | 2019-06-02 23:01:05 |
+----------+-------------+---------+---------+--------------+---------------------+
MariaDB [dvd]> INSERT INTO `order_item` (`dvd_id`,`order_id`,`quantity`) VALUES (1,1,10),(2,1,4),(1,2,44),(2,3,55);
MariaDB [dvd]> select * from order_item;
+------------+--------+----------+----------+
| order_item | dvd_id | order_id | quantity |
+------------+--------+----------+----------+
| 1 | 1 | 1 | 10 |
| 2 | 2 | 1 | 4 |
| 3 | 1 | 2 | 44 |
| 4 | 2 | 3 | 55 |
+------------+--------+----------+----------+
/* Hai câu lệnh này như nhau: INNER JOIN = ,
MariaDB [dvd]> select customers.name, orders.order_date from customers INNER JOIN orders;
+-----------------+---------------------+
| name | order_date |
+-----------------+---------------------+
| Pham Ngoc Hoang | 2019-06-02 23:01:05 |
| Pham Ngoc Hoang | 2019-06-02 23:01:05 |
| Pham Ngoc Hoang | 2019-06-02 23:01:05 |
| Pham Ngoc Vinh | 2019-06-02 23:01:05 |
| Pham Ngoc Vinh | 2019-06-02 23:01:05 |
| Pham Ngoc Vinh | 2019-06-02 23:01:05 |
| Pham Ngoc Linh | 2019-06-02 23:01:05 |
| Pham Ngoc Linh | 2019-06-02 23:01:05 |
| Pham Ngoc Linh | 2019-06-02 23:01:05 |
| Pham Vinh Ling | 2019-06-02 23:01:05 |
| Pham Vinh Ling | 2019-06-02 23:01:05 |
| Pham Vinh Ling | 2019-06-02 23:01:05 |
+-----------------+---------------------+
MariaDB [dvd]> select customers.name, orders.order_date from customers, orders;
+-----------------+---------------------+
| name | order_date |
+-----------------+---------------------+
| Pham Ngoc Hoang | 2019-06-02 23:01:05 |
| Pham Ngoc Hoang | 2019-06-02 23:01:05 |
| Pham Ngoc Hoang | 2019-06-02 23:01:05 |
| Pham Ngoc Vinh | 2019-06-02 23:01:05 |
| Pham Ngoc Vinh | 2019-06-02 23:01:05 |
| Pham Ngoc Vinh | 2019-06-02 23:01:05 |
| Pham Ngoc Linh | 2019-06-02 23:01:05 |
| Pham Ngoc Linh | 2019-06-02 23:01:05 |
| Pham Ngoc Linh | 2019-06-02 23:01:05 |
| Pham Vinh Ling | 2019-06-02 23:01:05 |
| Pham Vinh Ling | 2019-06-02 23:01:05 |
| Pham Vinh Ling | 2019-06-02 23:01:05 |
+-----------------+---------------------+
*/
/* Hai câu lệnh này như nhau: WHERE customers.customer_id = orders.customer_id === USING (`customer_id`);
MariaDB [dvd]> select * from customers INNER JOIN orders WHERE customers.customer_id = orders.customer_id;
+-------------+-----------------+----------+--------+----------+-------------+---------+---------+--------------+---------------------+
| customer_id | name | address | city | order_id | customer_id | amount | payment | message | order_date |
+-------------+-----------------+----------+--------+----------+-------------+---------+---------+--------------+---------------------+
| 1 | Pham Ngoc Hoang | Ha Nam 1 | Phu Ly | 1 | 1 | 1000.00 | master | Toi rat thic | 2019-06-02 23:01:05 |
| 1 | Pham Ngoc Hoang | Ha Nam 1 | Phu Ly | 2 | 1 | 3000.00 | master | Toi rat thic | 2019-06-02 23:01:05 |
| 2 | Pham Ngoc Vinh | Ha Nam 2 | Ha Noi | 3 | 2 | 8000.00 | payment | Toi dang xem | 2019-06-02 23:01:05 |
+-------------+-----------------+----------+--------+----------+-------------+---------+---------+--------------+---------------------+
MariaDB [dvd]> select * from customers INNER JOIN orders USING (`customer_id`);
+-------------+-----------------+----------+--------+----------+---------+---------+--------------+---------------------+
| customer_id | name | address | city | order_id | amount | payment | message | order_date |
+-------------+-----------------+----------+--------+----------+---------+---------+--------------+---------------------+
| 1 | Pham Ngoc Hoang | Ha Nam 1 | Phu Ly | 1 | 1000.00 | master | Toi rat thic | 2019-06-02 23:01:05 |
| 1 | Pham Ngoc Hoang | Ha Nam 1 | Phu Ly | 2 | 3000.00 | master | Toi rat thic | 2019-06-02 23:01:05 |
| 2 | Pham Ngoc Vinh | Ha Nam 2 | Ha Noi | 3 | 8000.00 | payment | Toi dang xem | 2019-06-02 23:01:05 |
+-------------+-----------------+----------+--------+----------+---------+---------+--------------+---------------------+
*/
Chi tiết về cách sử dụng INNER JOIN sử dụng để lựa chọn 4 bảng
Last updated
Was this helpful?