本文共 3537 字,大约阅读时间需要 11 分钟。
MySQL 是世界上最常用的关系型数据库管理系统(DBMS),它以其强大的功能和灵活的配置而闻名。对于刚入门的开发者来说,理解 MySQL 的基础概念和操作流程至关重要。本文将从入门概念、DQL语言、常见函数、分组查询、连接查询、子查询以及分页查询等方面展开,帮助你快速掌握 MySQL 的核心知识。
数据库(DB)是用于存储和管理数据的物理或逻辑实体,而数据库管理系统(DBMS)则是用于通过一系列命令操作数据库的软件。MySQL 是一个关系型数据库管理系统,它遵循关系代数的原则,通过表格的形式存储数据,并通过 SQL(结构化查询语言)进行操作。
安装 MySQL 后,你可以通过以下命令进行基本操作:
mysql [-h 主机ip -p 端口] -u 用户名 -p 回车输入密码
-h 主机ip:指定要登录的 MySQL 服务器的主机名或 IP 地址。-p 端口:指定要登录的 MySQL 服务器的端口。-u 用户名:指定要登录的数据库用户。-p:提示你输入密码。登录成功后,你可以执行以下命令查看数据库和表:
show databases;use 数据库名;show tables;
DQL(Data Query Language,数据查询语言)是 SQL 的核心部分,用于从数据库中检取数据。基础查询格式如下:
SELECT 查询列表 FROM 数据表名;
查询列表可以包含以下内容:
12 或 'Hello World'。username 或 age。now()。100 * 2。-- 查询常量select 12;-- 查询字段select username, age from tab_user;-- 查询函数select now();-- 查询表达式select 100 * 2;
条件查询是在基础查询的基础上增加 WHERE 子句,用于筛选数据。语法格式如下:
select 查询字段 from 数据表名 where 查询条件;
>, <, >=, <=, !=, AND, OR, NOT 等。LIKE, BETWEEN, IN, IS NULL, IS NOT NULL 等。NULL 值或其他类型的值,语法为 <= >。-- 使用通配符查询select * from tab_user where username like '_尚%';-- 使用转义符查询select substr('aabbcc', 5); 排序查询可以通过 ORDER BY 子句添加排序条件。语法格式如下:
select 查询字段 from 数据表名 [WHERE 查询条件] order by 排序列表 [ASC | DESC];
salary 或 emp_name。salary * 12。length(字段名)。排序可以对多个字段进行排序,排序顺序可以是 ASC(升序)或 DESC(降序)。
-- 按照工资排序select emp_name, salary * 12 as '年薪' from emp where department = '技术部' order by 年薪 ASC, 项目 DESC;
MySQL 提供了丰富的函数,主要包括字符函数、数学函数、日期函数和分组函数等。
length(字符串):获取字符串的长度。concat(字符串, 字符串, ...):将多个字符串拼接。substr(字符串, 开始索引, 截取长度):截取字符串的一部分。instr(字符串, 子串):返回子串在字符串中的首次出现位置。trim(字符串):去除首尾空格。lpad(字符串, 长度, 字符):左填充字符串到指定长度。rpad(字符串, 长度, 字符):右填充字符串到指定长度。replace(字符串, 字符串, 替换字符串):替换字符串中的子串。round(数值):四舍五入数值。ceil(数值):向上取整。floor(数值):向下取整。truncate(数值, 位数):截断数值保留指定位数。mod(数值, 数值):取余。rand():获取随机数。now():返回当前日期和时间。curdate():返回当前日期。curtime():返回当前时间。year(日期):获取年份。month(日期):获取月份。day(日期):获取日期。hour(日期):获取小时。minute(日期):获取分钟。second(日期):获取秒。str_to_date(字符串, 格式):将日期格式的字符串转换为日期。MySQL 提供了丰富的日期格式符,例如:
| 格式符 | 功能 |
|---|---|
%Y | 四位数字的年份 |
%y | 两位数字的年份 |
%M | 月份(01, 02, 03…) |
%m | 月份(1, 2, 3…) |
%d | 日(01, 02, 03…) |
%H | 24小时制 |
%h | 12小时制 |
%i | 分钟(01, 02, 03…) |
%s | 秒(01, 02, 03…) |
分组函数(Aggregating Functions)用于对数据库中的数据进行汇总和分析。常见分组函数包括 SUM(), MAX(), MIN(), AVG(), COUNT() 等。
-- 按员工姓名长度分组,查询每组的员工数量select length(员工姓名), count(*) from emp group by length(员工姓名);-- 查询每个部门每个工种的平均工资select avg(工资), 部门号, 工种 from emp group by 部门号, 工种;
连接查询用于将多个表的数据合并为一个结果集。MySQL 支持内连接、外连接和交叉连接等。
内连接是最常见的连接类型,语法格式如下:
select 查询列表 from 表1, 表2 where 表1.字段 = 表2.字段;
外连接用于查询两个表的交集部分。左外连接和右外连接是常见的外连接类型。
交叉连接是内连接和左外连接的组合,用于关联多个表。
-- 等值连接select emp1.姓名, emp2.部门 from emp1, emp2 where emp1.部门 = emp2.部门;-- 非等值连接select emp1.姓名, emp2.部门 from emp1, emp2 where emp1.部门 > emp2.部门;
子查询是将一条 SQL 查询的结果作为另一条查询的条件。子查询可以出现在 WHERE 或 HAVING 子句中。
-- 查询部门号大于 10 的员工数量select count(*) from emp where 部门号 = (select 部门号 from emp where 项目 = '项目A');
分页查询用于限制结果的显示范围。MySQL 使用 LIMIT 关键字来实现分页查询。
-- 显示前 10 条记录select * from emp limit 10;-- 从第 11 条开始显示,显示 15 条记录select * from emp limit 10, 15;
联合查询是将多个 SQL 查询合并为一个结果集。语法格式如下:
查询语句1 union 查询语句2;
-- 查询部门号大于 90 或者 邮箱包含 'a' 的员工信息select * from emp where 部门号 > 90 union select * from emp where 邮箱 like '%a%';
通过以上内容,你应该能够掌握 MySQL 的基础查询语言和常用功能。从入门概念到高级查询,如连接查询、子查询和分页查询,你都可以根据需要进行调整和优化。MySQL 的强大功能和灵活性使其成为开发者和数据分析师的首选工具。
转载地址:http://sedfk.baihongyu.com/