创建数据库
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CHARACTER SET:指定字符集(例如
utf8mb4
支持完整的 Unicode 字符)。
- COLLATE:指定排序规则(如
utf8mb4_unicode_ci
是一种不区分大小写的排序规则)。
查看数据库
SHOW DATABASES;
使用数据库
USE db_name;
删除数据库
DROP DATABASE db_name;
- 注意:此命令不可逆,会永久删除数据库及其所有数据。
表的操作
创建表
CREATE TABLE table_name (
id INT AUTO_INCREMENT PRIMARY KEY, -- 自增主键
name VARCHAR(100) NOT NULL, -- 非空字符串字段
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 自动记录创建时间
);
查看表结构
DESCRIBE table_name;
修改表结构
ALTER TABLE table_name ADD COLUMN age INT; -- 添加新列
ALTER TABLE table_name DROP COLUMN age; -- 删除列
ALTER TABLE table_name MODIFY COLUMN name VARCHAR(150); -- 修改列
删除表
DROP TABLE table_name;
数据操作 (CRUD)
插入数据
INSERT INTO table_name (name) VALUES ('Alice');
批量插入
INSERT INTO table_name (name) VALUES ('Bob'), ('Charlie');
查询数据
SELECT * FROM table_name; -- 查询所有字段
SELECT name FROM table_name WHERE id = 1; -- 查询特定条件数据
更新数据
UPDATE table_name
SET name = 'Updated Name'
WHERE id = 1;
删除数据
DELETE FROM table_name WHERE id = 1;
常用查询功能
排序查询
SELECT * FROM table_name ORDER BY name ASC; -- 升序
SELECT * FROM table_name ORDER BY name DESC; -- 降序
分页查询
SELECT * FROM table_name LIMIT 10 OFFSET 20;
- LIMIT:限制返回的行数。
- OFFSET:指定起始位置。
聚合查询
SELECT COUNT(*) AS total FROM table_name; -- 统计总数
SELECT AVG(age) AS avg_age FROM table_name; -- 平均值
SELECT MAX(age) AS max_age FROM table_name; -- 最大值
SELECT MIN(age) AS min_age FROM table_name; -- 最小值
SELECT SUM(age) AS sum_age FROM table_name; -- 求和
分组查询
SELECT age, COUNT(*) AS total
FROM table_name
GROUP BY age
HAVING total > 1; -- 筛选分组后的结果
常用函数
字符串函数
SELECT CONCAT('Hello', ' ', 'World') AS greeting; -- 拼接字符串
SELECT LENGTH('Hello') AS len; -- 字符串长度
SELECT UPPER('hello') AS upper_text; -- 转为大写
SELECT LOWER('HELLO') AS lower_text; -- 转为小写
SELECT SUBSTRING('abcdef', 2, 3) AS substr; -- 提取子字符串(从第2位开始,长度为3)
数学函数
SELECT ROUND(123.456, 2) AS rounded; -- 四舍五入到2位小数
SELECT CEIL(10.2) AS ceil_val; -- 向上取整
SELECT FLOOR(10.8) AS floor_val; -- 向下取整
SELECT RAND() AS random_num; -- 随机数
日期和时间函数
SELECT NOW() AS current_time; -- 当前日期时间
SELECT CURDATE() AS current_date; -- 当前日期
SELECT CURTIME() AS current_time_only; -- 当前时间
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS next_week; -- 日期加减
SELECT DATEDIFF('2024-12-31', '2024-01-01') AS days_diff; -- 计算日期差
条件函数
SELECT IF(1 > 0, 'True', 'False') AS condition_check; -- 条件判断
SELECT CASE
WHEN age < 18 THEN 'Minor'
WHEN age BETWEEN 18 AND 60 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM table_name;
索引与优化
创建索引
CREATE INDEX idx_name ON table_name (name);
查看索引
SHOW INDEX FROM table_name;
删除索引
DROP INDEX idx_name ON table_name;
事务管理
开启事务
START TRANSACTION;
提交事务
COMMIT;
回滚事务
ROLLBACK;
用户和权限管理
创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
授权
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'host';
查看权限
SHOW GRANTS FOR 'username'@'host';
撤销权限
REVOKE ALL PRIVILEGES ON db_name.* FROM 'username'@'host';
删除用户
DROP USER 'username'@'host';