博客
关于我
MYSQL数据库进阶操作
阅读量:789 次
发布时间: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备份
查看>>
mysql备份与恢复
查看>>
mysql备份工具xtrabackup
查看>>
mysql备份恢复出错_尝试备份/恢复mysql数据库时出错
查看>>
mysql复制内容到一张新表
查看>>
mysql复制表结构和数据
查看>>
mysql复杂查询,优质题目
查看>>
MySQL外键约束
查看>>
MySQL多表关联on和where速度对比实测谁更快
查看>>
MySQL多表左右连接查询
查看>>
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
查看>>
mysql如何做到存在就更新不存就插入_MySQL 索引及优化实战(二)
查看>>
mysql如何删除数据表,被关联的数据表如何删除呢
查看>>
MySQL如何实现ACID ?
查看>>
mysql如何记录数据库响应时间
查看>>
MySQL子查询
查看>>
Mysql字段、索引操作
查看>>
mysql字段的细节(查询自定义的字段[意义-行列转置];UNION ALL;case-when)
查看>>
mysql字段类型不一致导致的索引失效
查看>>
mysql字段类型介绍
查看>>