数据库管理与高可用-MySQL数据库操作
目录
#1.1MySQL数据库介绍
#2.1MySQL库操作
2.1.1系统数据库
2.1.2数据库操作
#3.1MySQL表操作
3.1.1表介绍
3.1.2查看表
3.1.3创建表
3.1.4查看表的结构
3.1.5修改表
3.1.6复制表
3.1.7删除表
#4.1MySQL数据操作
4.1.1介绍
4.1.2插入数据INSERT
4.1.3更新数据INSERT
4.1.4查询数据INSERT
#5.1MySQL数据库用户授权
5.1.1创建用户
5.1.2授权操作
5.1.3查看权限
5.1.4撤销权限
1.1MySQL数据库介绍
MySQL 是一款 开源、关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。它基于 Client-Server 架构,支持多用户、多线程,广泛应用于 Web 应用开发、企业级系统、数据分析等场景,是 LAMP(Linux + Apache + MySQL + PHP) 等经典技术栈的核心组件之一。
SQL语言主要由以下几部分组成:
DDL(Data Definition Language,数据定义语言):用来建立数据库,数据库对象和定义字段,如CREATE,ALTER,DROP.
DML(Data Manipulation Language,数据操纵语言):用来插入,删除和修改数据库中的数据,如INSERT,UPDATE,DELETE.
DQL(Data Query Language,数据查询语言):用来查询数据库中的数据,如SELECT.
DCL(Data Control Language,数据控制语言):用来控制数据库组件的存取许可,存取权限,如COMMIT,ROLLBACK,GRANT,REVOKE.
2.1MySQL库操作
2.1.1系统数据库
经初始化后的MySQL服务器,默认建立了四个数据库: sys,mysql,information_schema,performance_schema.
组件 | 类型 | 核心功能 | 数据来源 |
---|---|---|---|
MySQL | 数据库系统 | 存储和管理业务数据,提供数据库服务 | 磁盘文件、内存 |
information_schema | 系统数据库 | 存储元数据(表结构、权限等) | 服务器内部字典 |
performance_schema | 系统数据库 | 监控运行时性能数据(语句、锁、资源等) | 服务器运行时状态 |
sys | 工具型数据库 | 封装性能分析视图,简化复杂查询 | information_schema + performance_schema |
2.1.2数据库操作
1.创建数据库
语法:mysql>create database 数据库名;
2.数据库命名规则
可以由字母,数字,下划线,@,#,$
区分大小写
唯一性
不能使用关键字如create select
不能单独使用数字
最长128位
3.选择数据库
mysql>USE 数据库名;
4.查看数据库
3.1MySQL表操作
3.1.1表介绍
表是由若干行和列组成的二维结构,用于组织和呈现具有相关性的数据或信息。每一行代表一个独立的记录或对象,每一列代表该对象的一个属性或特征。
3.1.2查看表
使用SHOW TABLES查看当前所在的数据库中包含的表,在操作前,需要使用USE语句切换到所使用的数据库。
3.1.3创建表
1.语法
CREATE TABLE table_name (column1 datatype [constraint],column2 datatype [constraint],column3 datatype [constraint],...[PRIMARY KEY (column1, column2, ...)]
);
2.类型介绍
MySQL支持多种类型,大致可以分为三类:数值,日期,类型。
数值的类型
分类 | 子类型 | 特点 | 典型取值范围 | 存储大小 | 应用场景 |
---|---|---|---|---|---|
整数类型 | TINYINT | 小范围整数,通常用于枚举值或状态标识 | 无符号:0~255 有符号:-128~127 | 1 字节 | 性别标识(0/1)、状态码(如 0 = 禁用,1 = 启用) |
SMALLINT | 中等范围整数,适用于较小计数场景 | 无符号:0~65535 有符号:-32768~32767 | 2 字节 | 年龄、年份(非跨世纪场景) | |
INT (标准整数) | 通用整数类型,满足大多数常规计数需求 | 无符号:0~4294967295 有符号:-2147483648~2147483647 | 4 字节 | 用户 ID、订单数量、商品库存 | |
BIGINT | 大范围整数,适用于需要存储极大值的场景(如时间戳、资产金额) | 无符号:0~18446744073709551615 有符号:-9223372036854775808~9223372036854775807 | 8 字节 | 毫秒级时间戳(如1685289600000 )、财务金额 | |
浮点类型 | FLOAT | 单精度浮点数,精度较低(约 6~7 位有效数字),存储空间小但可能存在精度误差 | ±1.175494351×10⁻³⁸ ~ ±3.402823466×10³⁸ | 4 字节 | 非精确计算场景(如概率、科学实验近似值) |
DOUBLE | 双精度浮点数,精度较高(约 15~17 位有效数字),适合需要更高精度的计算 | ±2.2250738585072014×10⁻³⁰⁸ ~ ±1.7976931348623157×10³⁰⁸ | 8 字节 | 科学计算、金融计算(需结合舍入规则) | |
定点类型 | DECIMAL(p, s) | 高精度定点数,p 为总位数,s 为小数位数,完全精确存储(无精度损失) | 取决于p 和s (如DECIMAL(10, 2) 表示总 10 位,2 位小数) | 可变(1~17 字节) | 财务计算(如金额、汇率)、高精度测量数据 |
日期类型
分类 | 子类型 | 特点 | 格式 / 取值范围 | 存储大小 | 应用场景 |
---|---|---|---|---|---|
日期类型 | DATE | 存储纯日期(年 - 月 - 日),不包含时间部分 | 格式:YYYY-MM-DD (如2023-10-01 )范围: 0001-01-01 ~9999-12-31 | 3 字节 | 生日、纪念日、合同生效日期 |
时间类型 | TIME | 存储纯时间(时 - 分 - 秒),不包含日期部分 | 格式:HH:MM:SS (如14:30:45 )范围: 00:00:00 ~23:59:59 | 3 字节 | 会议时间、航班起飞时间、考勤打卡时间 |
日期时间类型 | DATETIME | 存储完整日期和时间(年 - 月 - 日 时 - 分 - 秒),不依赖时区 | 格式:YYYY-MM-DD HH:MM:SS (如2023-10-01 15:45:00 )范围: 1000-01-01 00:00:00 ~9999-12-31 23:59:59 | 8 字节 | 订单创建时间、日志记录时间(服务器本地时间) |
TIMESTAMP | 存储日期和时间,通常关联时区(不同数据库实现不同),自动转换为 UTC 存储 | 格式同DATETIME ,但存储为 UTC 时间戳(如 MySQL 中范围:1970-01-01 00:00:01 ~2038-01-19 03:14:07 ) | 4 字节(MySQL) | 跨国业务时间、需要时区转换的场景(如用户登录时间) | |
时间间隔类型 | INTERVAL | 存储时间间隔(如天数、小时数、分钟数),用于计算时间差 | 格式:PnYnMnDTnHnMnS (如P1Y2M3DT4H5M6S 表示 1 年 2 个月 3 天 4 小时 5 分 6 秒) | 可变 | 计算项目周期、租赁时长、倒计时 |
其他类型 | YEAR | 存储年份(简化格式),可指定 2 位或 4 位表示 | 格式:YYYY (4 位,如2023 )或YY (2 位,如23 对应 2023) | 1 字节 | 书籍出版年份、学年(如2024学年 ) |
字符串类型
数据类型 | 存储方式 | 长度限制 | 适用场景 |
---|---|---|---|
CHAR | 固定长度存储 | 0-255 字符(取决于数据库) | - 存储长度固定的数据(如身份证号、性别代码) - 查询效率高(长度固定易定位) |
VARCHAR | 可变长度存储(需额外 1-2 字节记录长度) | 0-65,535 字符(取决于数据库) | - 存储长度可变的文本(如用户名、文章摘要) - 节省空间(按需分配) |
BLOB | 二进制大对象(Binary Large Object) | 最大支持 4GB(取决于具体类型,如 TINYBLOB、MEDIUMBLOB 等) | - 存储二进制数据(如图像、音频、文件) - 不处理字符编码,直接存储原始字节 |
TEXT | 文本大对象(Text Large Object) | 最大支持 4GB(取决于具体类型,如 TINYTEXT、MEDIUMTEXT 等) | - 存储长文本(如文章内容、日志信息) - 支持字符编码(如 UTF-8) |