博客
关于我
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性能优化(3):分析执行计划
查看>>
Mysql性能优化(4):优化的注意事项
查看>>
Mysql性能优化(5):主从同步原理与实现
查看>>
Mysql性能优化(6):读写分离
查看>>
MySQL性能优化(八)--
查看>>
MySQL性能测试及调优中的死锁处理方法
查看>>
mysql性能测试工具选择 mysql软件测试
查看>>
mysql恢复root密码
查看>>
Mysql悲观锁
查看>>
MySQL慢查询-开启慢查询
查看>>
MySQL慢查询分析和性能优化的方法和技巧
查看>>
MySQL慢查询日志总结
查看>>
Mysql慢查询日志,查询截取分析
查看>>
MySQL慢查询问题排查
查看>>
mysql截取sql语句
查看>>
mysql截取身份证号前几位_EXCEL中怎样截取身份证号前六位数字
查看>>
mysql手工注入
查看>>
MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案
查看>>
Mysql执行update by id的过程
查看>>
mysql执行计划
查看>>