Mysql的数据类型,查询与备份操作

一、数据类型

1. 数字类型

类型 字节数 取值范围 说明
TINYINT 1 -128 ~ 127 极小整数
SMALLINT 2 -32768 ~ 32767 小整数
MEDIUMINT 3 -8388608 ~ 8388607 中等整数
INT 4 -2147483648 ~ 2147483647 标准整数
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 大整数
FLOAT 4 ±3.402823466E+38 单精度浮点数
DOUBLE 8 ±1.7976931348623157E+308 双精度浮点数
DECIMAL(M,D) 可变 取决于M和D M=总位数,D=小数位数,精确小数

2. 字符串类型

类型 说明 特点
CHAR(m) 定长字符串 固定长度,效率高,浪费空间
VARCHAR(m) 可变长字符串 根据内容长度存储,节省空间
TEXT 长文本 存储大段文本内容
ENUM('A','B') 枚举类型 限定只能取括号中列出的值

3. 日期时间类型

类型 格式 说明
DATE YYYY-MM-DD 日期,不含时间
TIME HH:MM:SS 时间,不含日期
DATETIME YYYY-MM-DD HH:MM:SS 日期+时间
TIMESTAMP YYYY-MM-DD HH:MM:SS 时间戳,受时区影响

二、表操作

创建时间自动生成

语法 说明
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP 插入时自动记录当前时间

修改时间自动更新

语法 说明
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 插入时记录当前时间,更新时自动刷新

软删除

操作 SQL语句 说明
添加删除标记列 ALTER TABLE 表名 ADD is_delete TINYINT DEFAULT 0; 默认0表示未删除
软删除记录 UPDATE 表名 SET is_delete = 1 WHERE id = 2; 标记为已删除
查询全部(含已删) SELECT * FROM 表名; 慎用,通常需过滤

三、查询语句(SELECT)

1. 基础查询

查询方式 语法 说明
查询全部列 SELECT * FROM 表名; 返回所有列
查询部分列 SELECT 列名1, 列名2 FROM 表名; 只返回指定列
指定表名 SELECT 表名.列名 FROM 表名; 多表查询时明确来源
列别名 SELECT 列名 AS 别名 FROM 表名; 为列起别名显示

2. 条件查询(WHERE)

比较运算符
运算符 含义 示例
= 等于 WHERE age = 18
!=<> 不等于 WHERE age != 18WHERE age <> 18
< 小于 WHERE age < 18
<= 小于等于 WHERE age <= 18
> 大于 WHERE age > 18
>= 大于等于 WHERE age >= 18
逻辑运算符
运算符 含义 示例
AND 与(同时满足) WHERE age > 18 AND gender = '男'
OR 或(满足其一) WHERE age < 18 OR age > 60
NOT 非(取反) WHERE NOT gender = '男'
空值判断
语法 说明
WHERE 字段 IS NULL 查询字段为空
WHERE 字段 IS NOT NULL 查询字段非空
范围查询
语法 说明 示例
BETWEEN a AND b 在a和b之间(含边界) WHERE age BETWEEN 18 AND 25
IN (a,b,c) 在枚举值列表中 WHERE id IN (1, 2, 3)
模糊查询(LIKE)
通配符 含义 示例
% 匹配任意个字符(含0个) WHERE name LIKE '黄%'(姓黄)
_ 匹配单个字符 WHERE name LIKE '黄_'(姓黄且名字2个字)

四、聚合函数

函数 作用 示例
MIN(列名) 求最小值 SELECT MIN(age) FROM 用户表;
AVG(列名) 求平均值 SELECT AVG(age) FROM 用户表;
SUM(列名) 求和 SELECT SUM(salary) FROM 员工表;
COUNT(列名) 统计个数 SELECT COUNT(*) FROM 用户表;

五、排序(ORDER BY)

关键词 含义
ASC 升序(默认,从小到大)
DESC 降序(从大到小)

排序语法

类型 语法 说明
单条件排序 ORDER BY 列名 ASC/DESC 按一列排序
多条件排序 ORDER BY 列名1 ASC, 列名2 DESC 先按列1排,再按列2排

六、分页(LIMIT)

语法 含义 示例
LIMIT n 返回前n条 LIMIT 10(前10条)
LIMIT start, count 从start开始返回count条(start从0开始) LIMIT 0, 10(第1页)
分页公式 LIMIT (n-1)*m, m 每页m条,第n页

七、分组与过滤

分组(GROUP BY)

语法 说明
GROUP BY 列名 按指定列分组
SELECT 列名, COUNT(*) FROM 表 GROUP BY 列名 分组后统计每组数量

过滤(HAVING)

语法 说明
HAVING 条件 对GROUP BY后的分组结果进行过滤
示例 GROUP BY is_delete HAVING COUNT(*) > 5(筛选分组数量大于5的组)

八、备份与恢复

操作 命令 说明
备份 mysqldump -uroot -p 数据库名 > 数据库名.sql 将数据库导出为SQL文件
恢复 mysql -uroot -p 数据库名 < 数据库名.sql 从SQL文件导入恢复数据库
相关推荐
Patrick在香港2 小时前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据
这个DBA有点耶2 小时前
自增主键用尽了怎么办?INT溢出、在线迁移与预防策略全解析
数据库·mysql·代码规范
迷茫的大专生2 小时前
高可用总结
redis·mysql·nginx·高可用
老纪的技术唠嗑局2 小时前
Agent 习惯性删库跑路,数据库纷纷学 Git 续命
数据库·人工智能
Data_Journal3 小时前
使用 AutoScraper 进行网页抓取:分步教程
大数据·开发语言·数据库·python·scrapy
白远山3 小时前
健身场馆无人自动化解决方案:从架构到落地实践
java·开发语言·数据库·数据挖掘·需求分析
虎虎(_ _)。゜zzZ3 小时前
SQLAlchemy入门教程
数据库·后端·python·sql·ai·sqlalchemy
梦帮科技4 小时前
RNS 代币架构:ERC20 五件套扩展与六钱包分配
人工智能·sql·区块链·database·合成复用原则·加密货币
迷茫的大专生4 小时前
服务器部署与 MySQL 运维学习笔记:从 Ansible 到高可用与性能优化
mysql·nginx·ansible·mysql优化·keepalive
Data_Journal4 小时前
如何将网页抓取用于机器学习
大数据·开发语言·数据库·python·scrapy