第三章 数据库与表的基本操作(DDL)
3.1 数据库操作
创建数据库:
-- 简单创建
CREATE DATABASE 数据库名;
-- 判断不存在再创建
CREATE DATABASE IF NOT EXISTS 数据库名;
-- 创建并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET utf8mb4;
查询数据库:
-- 查询所有数据库
SHOW DATABASES;
-- 查询当前使用的数据库
SELECT DATABASE();
-- 查看数据库创建语句
SHOW CREATE DATABASE 数据库名;
修改与删除:
-- 修改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集名;
-- 删除数据库(谨慎操作)
DROP DATABASE IF EXISTS 数据库名;
-- 使用数据库
USE 数据库名;
3.2 数据类型选择
MySQL提供了丰富的数据类型,选择合适的数据类型对性能至关重要:
选择建议:
整数ID使用INT UNSIGNED(无符号整数,范围更大)
状态标志使用TINYINT(1)
可变长度字符串使用VARCHAR,固定长度使用CHAR
时间字段推荐使用TIMESTAMP(支持自动时区转换)
金额字段必须使用DECIMAL避免精度丢失
3.3 表操作
创建表:
CREATE TABLE IF NOT EXISTS users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
email VARCHAR(100) NOT NULL COMMENT '电子邮箱',
status TINYINT(1) DEFAULT 1 COMMENT '状态:1启用0禁用',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (id),
INDEX idx_email (email)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci
COMMENT='用户信息表';
查看表结构:
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESC 表名;
修改表结构:
-- 添加字段
ALTER TABLE users
ADD COLUMN phone VARCHAR(20) NULL COMMENT '手机号' AFTER email;
-- 修改字段
ALTER TABLE users
MODIFY COLUMN email VARCHAR(150) NOT NULL COMMENT '电子邮箱';
-- 修改字段名
ALTER TABLE users
CHANGE email user_email VARCHAR(100) NOT NULL;
-- 添加索引
ALTER TABLE users
ADD INDEX idx_phone (phone);
-- 修改表名
ALTER TABLE users RENAME TO members;
删除表:
DROP TABLE IF EXISTS 表名;
3.4 字符集与校对规则
推荐配置:
字符集:utf8mb4(支持完整Unicode,包括emoji表情)
校对规则:utf8mb4_unicode_ci(准确的Unicode排序)
-- 创建表时指定
CREATE TABLE 表名 (
...
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3.5 存储引擎选择
MySQL主流存储引擎对比:
生产环境建议:默认使用InnoDB引擎,日志类表可考虑Archive引擎,避免使用MyISAM(崩溃后易损坏且恢复慢)。
第四章 数据操作(DML)
4.1 插入数据
-- 指定字段插入
INSERT INTO users(username, email) VALUES('张三', 'zhangsan@example.com');
-- 插入多条记录
INSERT INTO users(username, email) VALUES
('李四', 'lisi@example.com'),
('王五', 'wangwu@example.com');
-- 插入所有字段(省略字段名)
INSERT INTO users VALUES(NULL, '赵六', 'zhaoliu@example.com', 1, NOW());
4.2 修改数据
-- 修改符合条件的数据
UPDATE users SET status = 0 WHERE username = '张三';
-- 修改多条字段
UPDATE users SET
email = 'newemail@example.com',
status = 1
WHERE id = 1;
-- 注意:不加WHERE条件会修改所有记录!
4.3 删除数据
-- 删除符合条件的数据
DELETE FROM users WHERE status = 0;
-- 删除所有数据(不推荐,逐条删除效率低)
DELETE FROM users;
-- 清空表(推荐,先删表再重建,效率高)
TRUNCATE TABLE users;
来源:
https://app-a6nw7st4g741.appmiaoda.com/