指令

Database

-- 顯示所有資料庫 --
SHOW DATABASES

-- 新增資料庫 --
CREATE DATABASE

-- 刪除資料庫 --
DROP DATABASE <DB_NAME>

-- 使用資料庫 --
USE <DB_NAME>

Table

-- 顯示所有表 --
SHOW TABLES; 

-- 刪除表 --
DROP TABLE <TABLE_NAME>

-- 新增表 --
CREATE TABLE <TABLE_NAME> (
	<COLUMN_1> <DATA_TYPE> <欄位設定>,
	<COLUMN_2> <DATA_TYPE> <欄位設定>,
	...
);
CREATE TABLE <TABLE_1>(
	<COLUMN_1> <DATA_TYPE>,
	<COLUMN_2> <DATA_TYPE>,
	...,
	FOREIGN KEY(<FOREIGN_KEY_COLUMN>)
	REFERENCES <TABLE_2>(<PRIMARY_KEY_COLUMN>)
);

-- 更新表 -- 
-- 更新表 - 新增 Foreign Key --
ALTER TABLE <TABLE_1> ADD
FOREIGN KEY(<FOREIGN_KEY_COLUMN>)
REFERENCES
<TABLE_2>(<PRIMARY_KEY_COLUMN>);

-- 更新表 - 新增 INDEX --
ALTER TABLE <TABLE_NAME> ADD INDEX <INDEX_NAME>(<COLUMN_NAME>);

-- 更新表 - 移除 INDEX --
ALTER TABLE <TABLE_NAME> DROP INDEX <INDEX_NAME>;

-- Exmaple --
SHOW TABLES;
CREATE TABLE PRODUCT (
	id INT PRIMARY KEY AUTO_INCREMENT, -- PRIMARY KEY AUTO_INCREMENT
	name VARCHAR(255) NOT NULL, -- NOT NULL
	price INT NOT NULL DEFAULT 30 -- NOT NULL DEFAULT 30
);
DROP TABLE PRODUCT;

Data

-- 讀資料 --
SELECT * FROM <TABLE_NAME>;
SELECT * FROM <TABLE_NAME> WHERE <篩選條件>;
SELECT <COLUMN_1>, <COLUMN_2>, ... FROM <TABLE_NAME> WHERE <篩選條件>;
SELECT * FROM <TABLE_1> INNER JOIN <TABLE_2> ON <合併條件>;
SELECT <TABLE_1>.<COLUMN_1>, ... FROM <TABLE_1> INNER JOIN <TABLE_2> ON <合併條件>;
SELECT [FUNCTION](<COLUMN_NAME>) FROM <TABLE_NAME>;
SELECT [FUNCTION](<COLUMN_NAME>) FROM <TABLE_NAME> GROUP BY <COLUMN_NAME>;

-- 新增資料 --
INSERT INTO <TABLE_NAME> (
  <COLUMN_1>,
	<COLUMN_2>,
	...
) VALUES (
	<DATA_1>,
	<DATA_2>,
	...
)

-- 更新資料 --
UPDATE <TABLE_NAME>
SET 
<COLUMN_1>=<DATA_1>,
<COLUMN_2>=<DATA_2>,
...
WHERE <篩選條件>; -- 若要一次更新所有資料時,不用加 WEHRE

-- 刪除資料 --
DELETE FROM <TABLE_NAME> WHERE <篩選條件>; -- 若要一次刪除所有資料時,不用加 WEHRE
SELECT name, size, price FROM product INNER JOIN variance on product.id=variance.product_id;
SELECT product_id, AVG(price) FROM variance GROUP BY product_id;

SELECT product.name, AVG(variance.price) 
FROM variance INNER JOIN product on variance.product_id=product.id 
GROUP BY variance.product_id;

資料庫基本管理

Screenshot 2023-03-11 at 4.24.04 PM.png

一個 MySQL 的 Server 可以有多個 database

RUN (使用 docker)

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
-- show all databases --
SHOW DATABASES

-- create database --
CREATE DATABASE

-- delete database --
DROP DATABASE <DB_NAME>

-- use database --
USE <DB_NAME>