目录
[1.1 查看数据库信息](#1.1 查看数据库信息)
[1.2 切换数据库](#1.2 切换数据库)
[1.3 查看数据库中的表](#1.3 查看数据库中的表)
[1.4 查看表结构](#1.4 查看表结构)
[3. 数据库文件存储结构](#3. 数据库文件存储结构)
[4. SQL 语句分类](#4. SQL 语句分类)
[5. DDL 操作(数据库和表管理)](#5. DDL 操作(数据库和表管理))
[5.1 创建数据库](#5.1 创建数据库)
[5.2 创建数据表](#5.2 创建数据表)
[5.3 删除表](#5.3 删除表)
[5.4 删除数据库](#5.4 删除数据库)
[5.5 修改表结构(ALTER)](#5.5 修改表结构(ALTER))
[6. DML 操作(表数据管理)](#6. DML 操作(表数据管理))
[6.1 插入数据](#6.1 插入数据)
[6.2 更新数据](#6.2 更新数据)
[6.3 删除数据](#6.3 删除数据)
[6.4 清空表](#6.4 清空表)
[7. DQL 操作(数据查询)](#7. DQL 操作(数据查询))
[7.1 查询数据](#7.1 查询数据)
[7.2 限制查询结果](#7.2 限制查询结果)
[7.3 竖向显示结果](#7.3 竖向显示结果)
[8. 表高级操作](#8. 表高级操作)
[8.1 临时表](#8.1 临时表)
[8.2 克隆表](#8.2 克隆表)
[9. 用户管理](#9. 用户管理)
[9.1 创建用户](#9.1 创建用户)
[9.2 查看用户](#9.2 查看用户)
[9.3 删除用户](#9.3 删除用户)
[9.4 修改密码](#9.4 修改密码)
[9.5 忘记 root 密码处理](#9.5 忘记 root 密码处理)
[10. 用户授权管理](#10. 用户授权管理)
[10.1 授权用户](#10.1 授权用户)
[10.2 查看授权](#10.2 查看授权)
[10.3 撤销权限](#10.3 撤销权限)
[11. 权限说明](#11. 权限说明)
1.数据库基本操作
1.1 查看数据库信息
show databases;
1.2 切换数据库
USE 数据库名;
1.3 查看数据库中的表
SHOW TABLES;
SHOW TABLES IN 数据库名;
1.4 查看表结构
DESCRIBE 表名;
- 输出说明:
- Field:字段名称
- Type:字段类型
- Null:是否允许为空
- Key:是否是主键(PRI)、唯一键(UNI)或索引(MUL)
- Default:默认值
- Extra:额外属性(如 auto_increment)
2.常用数据类型
|--------------|------------------------------|---------------------|
| 类型 | 说明 | 示例 |
| INT | 整型,存储整数 | id INT |
| FLOAT | 单精度浮点,4 字节,可表示小数 | score FLOAT |
| DOUBLE | 双精度浮点,8 字节 | price DOUBLE |
| CHAR(n) | 固定长度字符类型,长度 n,不够补空格 | name CHAR(10) |
| VARCHAR(n) | 可变长度字符类型,最大 n 个字符 | address VARCHAR(50) |
| TEXT | 文本类型 | description TEXT |
| IMAGE | 图片类型 | photo IMAGE |
| DECIMAL(p,s) | 精确数值类型,p=总长度,s=小数位 55555.000 | salary DECIMAL(5,2) |
注意事项:
- CHAR 存入长度不足时补空格,超出指定长度低版本截取,高版本报错。
- 主键唯一,可由多个字段组成(联合主键)。
3. 数据库文件存储结构
- MySQL 数据目录:/usr/local/mysql/data
- 每个数据库对应一个子目录,每个表对应若干文件:
- MyISAM:.frm(表结构)、.MYD(数据)、.MYI(索引)
- InnoDB:
- 独享表空间:.ibd 文件(每表一个文件)
- 共享表空间:ibdata 文件(多个表共用)
4. SQL 语句分类
|--------------|----------------|---------------------------------|
| 分类 | 功能 | 常用语句 |
| DDL(数据定义语言) | 创建/修改/删除数据库对 象 | CREATE, DROP, ALTER |
| DML(数据操纵语 言) | 增删改表数据 | INSERT, UPDATE, DELETE |
| DQL(数据查询语言) | 查询数据 | SELECT |
| DCL(数据控制语言) | 用户权限管理 | GRANT, REVOKE, COMMIT, ROLLBACK |
5. DDL 操作(数据库和表管理)
5.1 创建数据库
CREATE DATABASE 数据库名;
5.2 创建数据表
CREATE TABLE 表名 (
字段1 数据类型 [约束条件],
字段2 数据类型 [约束条件],
...
PRIMARY KEY (主键字段)
);
字段约束:
- NOT NULL:不能为空
- DEFAULT:默认值
- PRIMARY KEY:主键
- UNIQUE KEY:唯一键
- AUTO_INCREMENT:自增长字段
5.3 删除表
DROP TABLE 表名;
DROP TABLE 数据库名.表名; -- 不切换数据库时使用
5.4 删除数据库
DROP DATABASE 数据库名;
5.5 修改表结构(ALTER)
-- 修改表名
ALTER TABLE 旧表名 RENAME 新表名;
-- 增加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [约束];
-- 修改字段
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];
ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型;
-- 删除字段
ALTER TABLE 表名 DROP 字段名;
6. DML 操作(表数据管理)
6.1 插入数据
INSERT INTO 表名(字段1,字段2,...) VALUES (值1, 值2, ...);
6.2 更新数据
UPDATE 表名 SET 字段1=值1[,字段2=值2] WHERE 条件;
6.3 删除数据
DELETE FROM 表名 WHERE 条件;
6.4 清空表
1.DELETE FROM 表名;
2.TRUNCATE TABLE 表名;
- DELETE 可带 WHERE 条件,可回滚,速度慢
- TRUNCATE 不可回滚,速度快,ID 自增重置
7. DQL 操作(数据查询)
7.1 查询数据
SELECT 字段1,字段2 FROM 表名 WHERE 条件;
SELECT * FROM 表名; -- 查询所有字段
7.2 限制查询结果
SELECT * FROM 表名 LIMIT 起始行, 查询条数;
7.3 竖向显示结果
SELECT * FROM 表名\G
8. 表高级操作
8.1 临时表
CREATE TEMPORARY TABLE 表名 (...);
- 临时表只存在于当前连接,会在连接关闭时自动销毁
- 可进行增删改查操作
8.2 克隆表
CREATE TABLE 新表 LIKE 旧表; --仅复制表结构
在加上数据表中的数据,需要做插入
例如:
insert into 新表 select * from 旧表;
--复制表结构和数据
CREATE TABLE 新表 AS SELECT * FROM 旧表;
9. 用户管理
9.1 创建用户
CREATE USER '用户名'@'来源地址' IDENTIFIED BY '密码';
- localhost:本地登录
- %:允许任意 IP 登录
- 密码可使用明文或加密方式
9.2 查看用户
USE mysql;
SELECT User, Host, authentication_string FROM user;
9.3 删除用户
DROP USER '用户名'@'来源地址';
9.4 修改密码
SET PASSWORD = PASSWORD('新密码'); -- 当前用户
SET PASSWORD FOR '用户'@'来源地址' = PASSWORD('新密码'); -- 其他用户
9.5 忘记 root 密码处理
- 修改
vim /etc/my.cnf添加:
mysqld
skip-grant-tables
2.重启 MySQL 服务并直接登录
- 修改密码:
UPDATE mysql.user SET AUTHENTICATION_STRING=PASSWORD('新密码') WHERE user='root';
FLUSH PRIVILEGES;
4.删除 skip-grant-tables 并重启 MySQL
10. 用户授权管理
10.1 授权用户
GRANT 权限列表 ON 数据库.表 TO '用户名'@'来源地址' IDENTIFIED BY '密码';
- 权限示例:SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX, EXECUTE, ALL
- *.* 表示所有数据库和表
10.2 查看授权
SHOW GRANTS FOR '用户名'@'来源地址';
10.3 撤销权限
REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'来源地址';
REVOKE ALL ON *.* FROM 'lisi'@'%';
11. 权限说明
|----------------|---------|
| 权限 | 功能 |
| SELECT | 查询数据 |
| INSERT | 插入数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
| CREATE | 创建数据库/表 |
| DROP | 删除数据库/表 |
| INDEX | 建立索引 |
| ALTER | 修改表结构 |
| EXECUTE | 执行存储过程 |
| CREATE VIEW | 创建视图 |
| SHOW VIEW | 查看视图 |
| CREATE ROUTINE | 创建存储过程 |
| ALTER ROUTINE | 修改存储过程 |
| EVENT | 创建事件 |
| TRIGGER | 创建触发器 |
| ALL PRIVILEGES | 所有权限 |