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?