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';