博客
关于我
MYSQL数据库进阶操作
阅读量:788 次
发布时间:2023-02-12

本文共 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 表示起始位置,默认为0
  • rowcount 表示要取的行数

示例

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的基本语法和使用场景。

转载地址:http://sjdfk.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
查看>>
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
查看>>
Mysql学习总结(59)——数据库分库分表策略总结
查看>>
Mysql学习总结(5)——MySql常用函数大全讲解
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
查看>>
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(65)——项目实战中常用SQL实践总结
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>
Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
查看>>