以公司員工表為例,系統演示 MySQL 核心 DDL/DML 操作,含字符集設定、約束定義、資料操作與結構變更。
CREATE DATABASE accompany CHARACTER SET utf8 COLLATE utf8_general_ci;
SHOW DATABASES;
USE accompany;
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
name CHAR(3) NOT NULL DEFAULT '',
age TINYINT NOT NULL DEFAULT 0,
email VARCHAR(30) NOT NULL DEFAULT '',
tel CHAR(11) NOT NULL DEFAULT '',
salary DECIMAL(7,2) NOT NULL DEFAULT 5000.55,
riqi DATE NOT NULL DEFAULT '2015-01-01'
) CHARSET=utf8;
欄位型別說明:
CHAR(3):定長 3 字符,不足補空格,適合固定長度代碼VARCHAR(30):變長,實際長度+1/2 字節存長度DECIMAL(7,2):精確小數,總位數 7、小數 2 位(薪資必用)DATE:日期型別,格式 YYYY-MM-DDAUTO_INCREMENT:自增主鍵,插入時自動分配INSERT INTO employee (id, name, age, email, tel, salary, riqi)
VALUES (1, '林俊傑', 32, 'linjunjie@qq.com', '18819463269', 10000.00, '2015-03-25');
-- 批量插入
INSERT INTO employee (name, age, email, tel, salary, riqi) VALUES
('羅志祥', 33, 'luozhixiang@qq.com', '18819463211', 9000.00, '2015-03-01'),
('周杰倫', 35, 'jaychou@qq.com', '18819463222', 12000.00, '2015-02-15');
SELECT * FROM employee;
SELECT name, salary FROM employee WHERE age > 30;
SELECT * FROM employee ORDER BY salary DESC LIMIT 5;
UPDATE employee SET salary = 9500.00 WHERE name = '羅志祥';
DELETE FROM employee WHERE id = 2;
ALTER TABLE employee MODIFY name CHAR(6) NOT NULL DEFAULT '';
ALTER TABLE employee CHANGE name emp_name CHAR(6) NOT NULL DEFAULT '';
ALTER TABLE employee ADD department VARCHAR(20) NOT NULL DEFAULT '' AFTER email;
ALTER TABLE employee DROP department;
ALTER TABLE employee RENAME TO staff;
建表指定 CHARSET=utf8,若插入中文報錯 Incorrect string value,執行:
SET NAMES gbk; -- 臨時會話層面
-- 或永久修改 my.cnf [mysqld] 區段:
character_set_server=utf8
collation_server=utf8_general_ci
init_connect='SET NAMES utf8'
-- 條件查詢
SELECT * FROM employee WHERE salary > 8000 AND age < 35;
-- 聚合
SELECT AVG(salary) AS avg_sal, MAX(age) AS max_age FROM employee;
-- 分組
SELECT department, COUNT(*) AS cnt FROM employee GROUP BY department;