MYSQL数据库进阶操作
发布日期:2025-04-17 23:25:31
浏览次数:16
分类:精选文章
本文共 3059 字,大约阅读时间需要 10 分钟。
SQL基础入门教程
一、基础强化
在学习SQL时,熟悉基本语法是立足的基础。以下是SQL语句的几种基本操作和技巧。
1. where子句的作用
where子句用于对数据库中的数据进行筛选,只有满足条件的行会出现在结果集中。
2. as关键字的使用
在显示查询结果时,字段名可能不够友好或难以理解。此时可以使用as关键字为字段起一个更具可读性的别名。
1) 为字段起别名
select id as 序号, name as 名字, gender as 性别 from students;
2) 为表起别名
-- 单表查询可省略表名select id, name, gender from students;-- 使用as为表起别名select s.id, s.name, s.gender from students as s;
3. 消除重复行
如果需要去重,可以使用distinct关键字。
示例
select distinct gender from students;
二、条件查询
1.基本语法
select * from 表名 where 条件;
示例
select * from students where id=1;
where子句支持多种运算符,包括比较运算符、逻辑运算符、模糊查询、范围查询和空判断等。
2. 比较运算符
常用的比较运算符包括:
- 等于:
= - 大于:
> - 大于等于:
>= - 小于:
< - 小于等于:
<= - 不等于:
!=
示例
select * from students where is_delete=0;
3. 逻辑运算符
支持的逻辑运算符包括AND、OR、NOT。
示例
select * from students where not id > 3 and gender=0;
4. 模糊查询
模糊查询可以匹配部分数据,常用的关键字包括LIKE和RLIKE。
1) LIKE
%表示任意多个任意字符_表示一个任意字符
示例
select * from students where name like '黄%' or name like '%靖';
2) RLIKE
支持正则表达式匹配。
示例
select * from students where name rlike '^周.*伦$';
5. 范围查询
范围查询可以分为两种类型:IN和BETWEEN。
1) IN
用于非连续范围查询。
示例
select * from students where id in (1,3,8);
2) BETWEEN
用于连续范围查询。
示例
select * from students where id between 3 and 8;
6. 空判断
使用is null判断字段是否为空。
示例
select * from students where height is null;
7. 优先级
查询优先级由高到低依次为:小括号、NOT、比较运算符、逻辑运算符。
示例
select * from students where not (id > 3 and gender=0);
三、排序
语法
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...];
说明
asc表示升序(默认)desc表示降序- 按多个列排序时,默认按第一个列排序,相同值时再按第二个列,依此类推。
示例
select * from students order by age desc, height desc;
四、聚合函数
特点
- 聚合函数默认处理NULL值
- 不允许嵌套(如
sum(max(xx)))
常用的聚合函数包括:
count(*):计算总行数max():求最大值min():求最小值sum():求和avg():求平均值
示例
select round(avg(age),2) from students where is_delete=0 and gender=2;
五、分组
1) group by分组
group by用于根据指定字段对数据进行分组。
示例
select gender from students group by gender;
2) group_concat字段拼接
用于将同一分组内的字段值拼接成一个字符串。
示例
select gender, group_concat(name) from students group by gender;
3) 聚合函数与分组结合
可以使用聚合函数对每个分组进行统计。
示例
select gender, avg(age) from students group by gender;
4) having过滤
用于对分组结果进行过滤。
示例
select gender, count(*) from students group by gender having count(*)>2;
5) with rollup汇总
用于在分组结果末尾添加汇总行。
示例
select gender, group_concat(age) from students group by gender with rollup;
六、分页
语法
select * from 表名 limit [offset,]rowcount;
说明
offset表示起始位置,默认为0rowcount表示要取的行数
示例
select * from students where gender=1 limit 0,3;
分页推导公式
- 总页数:
((总条数 - 1) / 每页大小) + 1 - 获取某页的数据:
select * from 表名 limit ((页码-1)*每页大小, 每页大小)
示例
select * from students where is_delete=0 limit (n-1)*m, m;
七、连接查询
1) 内连接
select * from 表1 inner join 表2 on 表1.字段=表2.字段;
2) 左连接
select * from 表1 left join 表2 on 表1.字段=表2.字段;
3) 右连接
select * from 表1 right join 表2 on 表1.字段=表2.字段;
示例
select s.cls_id, s.*, c.name from students as s left join classes as c on s.cls_id=c.id order by cls_id;
八、自关联
用于同一表进行多次关联。
示例
select city.* from areas as city inner join areas as province on city.pid=province.aid where province.atitle='山西省';
九、子查询
嵌入子查询用于辅助主查询的条件判断或数据获取。
示例
select s.name, count(*) as 该名的总数 from students as s where s.id in (select id from students where is_delete=0);
通过以上内容,可以逐步掌握SQL的基本语法和使用场景。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2026年06月16日 15时52分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
UVa 10465 - Homer Simpson
2023-03-01
php九九乘法表加粗,PHP九九乘法表
2023-03-01
PHP二维数组将重复键值合并重组成三维数组
2023-03-01
PHP二维数组转换为一维数组
2023-03-01
PHP二维数组重组
2023-03-01
PHP交换两个变量值
2023-03-01
php代码执行完整流程介绍
2023-03-01
PHP代码格式化工具phpcf常见问题解决方案
2023-03-01
PHP使用3DES算法加密解密字符串
2023-03-01
php使用memcached扩展的一个BUG
2023-03-01
PHP内核介绍及扩展开发指南—基础知识
2023-03-01
PHP写日志fwrite和file_put_contents的区别与性能
2023-03-01
PHP函数
2023-03-01
PHP函数__autoload失效原因(与smarty有关)
2023-03-01
PHP函数操作数字和汉字互转(100以内)
2023-03-01
PHP函数方法
2023-03-01
PHP删除指定目录下的所有文件和文件夹 | 删除指定文件
2023-03-01
php判断ip黑名单程序代码
2023-03-01
php判断复选框是否被选中的方法
2023-03-01