一篇文章带你了解MySQL!!!

张开发
2026/5/17 15:41:03 15 分钟阅读
一篇文章带你了解MySQL!!!
一、核心概念数据库DB存储和管理数据的仓库数据库管理系统DBMS操纵和管理数据库的大型软件如 MySQL、Oracle数据库管理员DBA对用户访问数据库权限进行管理SQL操作关系型数据库的标准编程语言。关系型数据库RDBMS基于关系模型由多张相互连接的二维表组成。特点用表存数据、格式统一SQL 标准统一、支持复杂查询。非关系型数据库例如Redis。我们个人在学习MySQL时需要在本地下载MySQL为了方便还会用到可视化界面来辅助但是在企业开发中不需要下载到本地我们只需要连接远程服务器数据可即可在本地中默认只有一个用户root二、SQL语言分类分类全称作用DDL数据定义语言定义数据库、表、字段创建 / 删除 / 修改结构DML数据操作语言对表数据增、删、改不能查询DQL数据查询语言查询表中数据DCL数据控制语言创建用户、分配权限DBA 管理我们重点关注前三个语言因为DCL数据控制语言是由DBA数据库管理员来使用的由他来控制哪些用户可以访问哪些数据库三、DDL1. 数据库操作说明database可替换为schema2.表结构操作--创建1约束字段规则如果想要实现主键自动1可以写 primary key auto_increment一个字段可加多个约束用空格分隔外键约束至少要两张表以上才会有外键约束关键字说明非空约束not null字段值不能为 null唯一约束unique数据唯一不重复主键约束primary key一行数据唯一标识非空且唯一默认约束default未指定值时用默认值外键约束foreign key多表关联保证数据一致完整2例子3.表结构操作---数据类型1数值类型每个数值类型都会有有符号 signed 和无符号 unsigned 区分默认是 signed可以取负数unsigned只能取 0 和正数常用的就是int2字符串类型最常用的是char、varchar使用场景如下类型特点适用场景char(n)定长占固定空间浪费空间、性能高长度固定身份证、手机号varchar(n)变长按需占用空间节省空间、性能略低长度不固定用户名、姓名3日期类型最常用的就是date、datetime类型格式用途dateYYYY-MM-DD生日datetimeYYYY-MM-DD HH:MM:SS操作时间timeHH:MM:SS时间值yearYYYY年份timestamp时间戳时间序列到 2038 年4.表结构操作---查询、修改、删除四、DMLDML数据操作语言对表数据进行增删改操作1.添加在插入数据时指定的字段顺序应该和值的顺序是一一对应的2.修改where是用来筛选要修改的范围例如3.删除五、DQLDQL数据查询语言用来查询数据库表的记录注意DML只有增删改三个操作并没有查询功能最常用的就是查询DQL因此我们要重点掌握DQL1.基本查询在查询所有字段中有两种方式一个是将所有字段都写出来用隔开另一个是*不推荐需求语法格式示例查询多个字段SELECT 字段1,字段2,... FROM 表名;SELECT name, entry_date FROM emp;查询所有字段SELECT * FROM 表名;SELECT * FROM emp;不推荐字段起别名SELECT 字段1 [AS] 别名1, 字段2 别名2 FROM 表名;SELECT name AS 姓名, entry_date 入职日期 FROM emp;去除重复记录SELECT DISTINCT 字段列表 FROM 表名;SELECT DISTINCT job FROM emp;2.条件查询1基础语法SELECT 字段列表 FROM 表名 WHERE 条件列表;2比较运算符运算符功能大于大于等于小于小于等于等于或!不等于BETWEEN ... AND ...在某个范围之内含最小、最大值IN(...)在指定列表中的值多选一LIKE模糊匹配_匹配单个字符%匹配任意个字符IS NULL为空3逻辑运算符3.分组查询1相关概念分组逻辑通常是「分组 聚合」按指定字段将数据分组再对每组进行聚合计算。聚合函数将一列数据纵向计算放在SELECT语句中是分组查询的核心。2常用聚合函数注意COUNT优先级COUNT(*) COUNT(常量) COUNT(字段)COUNT字段统计该字段非NULL的行数COUNT*统计所有行含NULL函数功能COUNT(字段)统计数量推荐COUNT(*)统计总行数MAX(字段)统计最大值MIN(字段)统计最小值AVG(字段)统计平均值SUM(字段)统计求和3查询语法4注意事项where后面不能写聚合函数而having可以一旦分组后select后的字段就不能随意书写一般是分组字段聚合函数执行顺序where 聚合函数 having5例子统计入职时间≤2015-01-01 的员工按职位分组且该分组员工数≥2SELECT job, COUNT(*) FROM emp WHERE entry_date 2015-01-01 GROUP BY job HAVING COUNT(*) 2;4.排序查询1排序语法2排序方法ASC升序默认值可省略、DESC降序3注意事项如果是多个字段查询当第一个字段相同时才会根据第二个字段进行排序5.分页查询1语法在MySQL里2核心说明起始索引从0开始计算公式起始索引 (页码 - 1) * 每页显示条数。方言特性分页是数据库方言MySQL 用LIMIT其他数据库如 Oracle语法不同。简化写法起始索引为 0 时可省略直接写LIMIT 记录数。6.DQL执行顺序FROM→WHERE→GROUP BY→HAVING→SELECT→DISTINCT→ORDER BY→LIMIT

更多文章