-- 顯示所有資料庫 --
SHOW DATABASES
-- 新增資料庫 --
CREATE DATABASE
-- 刪除資料庫 --
DROP DATABASE <DB_NAME>
-- 使用資料庫 --
USE <DB_NAME>
-- 顯示所有表 --
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;
-- 讀資料 --
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;
一個 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>