MySQL数据库管理

目录

1.数据库基本操作

[1.1 查看数据库信息](#1.1 查看数据库信息)

[1.2 切换数据库](#1.2 切换数据库)

[1.3 查看数据库中的表](#1.3 查看数据库中的表)

[1.4 查看表结构](#1.4 查看表结构)

2.常用数据类型

[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 密码处理

  1. 修改 vim /etc/my.cnf 添加:

mysqld

skip-grant-tables

2.重启 MySQL 服务并直接登录

  1. 修改密码:

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 | 所有权限 |

相关推荐
一只落魄的蜂鸟43 分钟前
《图解技术体系》Three architectures and application scenarios of Redis
数据库·redis·缓存
i***77801 小时前
PostgreSQL_安装部署
数据库·postgresql
想不明白的过度思考者1 小时前
MySQL数据库(库)操作精讲:从入门到精通
数据库·mysql·oracle
Gauss松鼠会1 小时前
【GaussDB】如何从GaussDB发布包中提取出内核二进制文件
linux·数据库·database·gaussdb
天行健,君子而铎1 小时前
“数据防泄漏”(Data Loss Prevention, DLP)
大数据·数据库·安全·系统安全·学习方法·安全架构
Highcharts.js1 小时前
Highcharts Gantt 甘特图任务配置文档说明
java·数据库·甘特图·模板模式·highcharts·任务关系
tonysh_zds3 小时前
windows pip install pysqlite3 安装失败处理
数据库·sqlite·pip
rising start3 小时前
一、数据库分类及SQLite入门
数据库·sqlite
5***E6859 小时前
【SQL】写SQL查询时,常用到的日期函数
数据库·sql