1MySQL基本概念
MySQL是一個開源的關系型數據庫管理系統(RDBMS),使用結構化查詢語言(SQL)作為查詢和操作數據的接口。關系型數據庫將數據組織成表(table),每個表包含多個字段(column)和記錄(row)。
2SQL語言:
數據定義語言(DDL)、數據操作語言(DML)、數據查詢語言(DQL)和數據控制語言(DCL)
DDL(Data Definition Language):CREATE, ALTER, DROP
DML(Data Manipulation Language):INSERT, UPDATE, DELETE
DQL(Data Query Language):SELECT
DCL(Data Control Language):GRANT, REVOKE
3數據庫設計
數據庫設計包括創建表、視圖、索引等對象。規范化理論有助于設計高效、可維護的數據庫結構
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(50),
department_id INT
);
4數據類型
MySQL支持多種數據類型,如整數(INT, SMALLINT, BIGINT等)、浮點數(FLOAT, DOUBLE等)、字符串(VARCHAR, CHAR, TEXT等)和日期時間(DATE, TIME, DATETIME等)
CREATE TABLE product (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
price DECIMAL(10, 2),
release_date DATE
);
5數據查詢
使用SELECT語句查詢數據,可以進行篩選、排序、分組和連接等操作。
篩選(WHERE)
SELECT * FROM employees WHERE department_id = 1;
SELECT * FROM employees ORDER BY last_name;
SELECT department_id, COUNT(*) FROM employees GROUP BY department_id;
SELECT e.first_name, e.last_name, d.name
FROM employees e
JOIN departments d ON e.department_id = d.id;
6數據操作
使用INSERT、UPDATE和DELETE語句操作數據。
INSERT INTO employees (first_name, last_name, department_id) VALUES ('John', 'Doe', 1);
UPDATE employees SET department_id = 2 WHERE id = 1;
DELETE FROM employees WHERE id = 1;
7函數與表達式
MySQL提供多種函數,如字符串、數值、日期和聚合函數
SELECT CONCAT(first_name, ' ', last_name) as full_name FROM employees;
SELECT ROUND(price, 0) as rounded_price FROM products;
SELECT DATEDIFF(NOW(), release_date) as days_since_release FROM products;
SELECT department_id, AVG(salary) as average_salary FROM employees GROUP BY department_id;
8索引與優化
創建索引可以提高查詢性能,但也會增加數據插入和更新的開銷。要權衡利弊,根據實際情況選擇合適的索引。
CREATE INDEX idx_employees_department_id ON employees (department_id);
9事務處理
事務是一組操作序列,保證數據的完整性和一致性。使用START TRANSACTION、COMMIT和ROLLBACK控制事務。
START TRANSACTION;
INSERT INTO employees (first_name, last_name, department_id) VALUES ('Jane', 'Doe', 1);
UPDATE departments SET employee_count = employee_count + 1 WHERE id = 1;
COMMIT; -- 或者 ROLLBACK; 回滾事務
10數據導入導出
使用mysqldump、LOAD DATA INFILE等工具導入導出數據
mysqldump -u username -p dbname > backup.sql
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE employees
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';