数据操作重点 查询

1、查询数据(重点)

语法:

select 字段1,字段2 from 表名 [where Clause][LIMIT N][OFFSET M]

² 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。

² SELECT 命令可以读取一条或者多条记录。

² 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据

² 你可以使用 WHERE 语句来包含任何条件。

² 你可以使用 LIMIT 属性来设定返回的记录数。

² 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

4.1查询所有的列

select * from 表名;

4.2 使用别名

select 字段1 as ‘新名’,字段2 from 表名

4.3 where条件(逻辑and or 比较>、<、=、>=、<=、<>不等于)

² where子句中可以指定任何条件。

² where中可以使用and或or指定一个或多个条件。

² where可以运用于delete或者update命令中。

例如:select * from 表名 where 字段1>值 and 字段2<值;

使用主键来作为 WHERE 子句的条件查询是非常快速的。

4.4 where条件中between and

select * from 表名 where 字段 between 75 and 90;

4.5 空条件查询 (NULL 值处理)

为了处理这种情况,MySQL提供了三大运算符:

v IS NULL: 当列的值是 NULL,此运算符返回 true。

v IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

v <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

注:关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

select * from 表名 where 字段 IS NULL;(IS NOT NULL)

4.6 模糊查询like(重点)

有时候我们需要获取 runoob_author 字段含有 "COM" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。

SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。

如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

例如:select * from 表名 where 字段 like ‘%w%’;

select * from 表名 where 字段 like ‘_’;

%:表示任意字符;字符可有可无

_:表示一个字符;此字符必须有

4.4去除重复数据(DISTINCT)

select distinct 字段1 from 表名;

 

查询id 为1. 为2 为5的

Select * from table where id in(1,2,5)

查询id不为1.为2 为5的

Select * from table where id not in(1,2,5)

子查询select * from student where gid =(select id from teacher where name='王老师');

 

 

4.5排序(order by)

如果我们想要对读取的数据进行排序,我们可以使用order by子句来设定按那个字段那种方式来排序。

select *from 表名 order by 列名 asc(asc升序默认;desc降序)

² 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。

² 你可以设定多个字段来排序。

² 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

² 你可以添加 WHERE...LIKE 子句来设置条件。

2、聚合函数查询(常用的)

min最小值;max最大值;sum值的和;avg平局值;count统计行数

3、分组查询:

group by

根据一个或多个列对结果集进行分组。

表示对所取得的数据,以所给定的字段来进行分组。

最后的结果就是将数据分成了若干组,每组作为一个“整体”成为一行数据。

于是,对于分组查询(group by),select中出现的信息,通常就只有两种情况的信息了:

² 分组本身的字段信息;

² 一组的综合统计信息,主要包括:

ü 计数值: count(字段), 表示求出一组中原始数据的行数;

ü 最大值: max(字段),表示求出一组中该字段的最大值;

ü 最小值: min(字段),表示求出一组中该字段的最小值;

ü 平均值: avg(字段),表示求出一组中该字段的平均值;

ü 总和值: sum(字段),表示求出一组中该字段的累加和;

4、分组后筛选使用:

group by 字段 having

having的含义跟where的含义一样,只是having是用于对group by分组的结果进行的条件筛选。

5、分页查询

limit 起始行,行数;

6、多表联合查询(重点)

我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

join on

select * from 表1 as a join 2 as b on a.id=b.lid where a.id =3;

posted @ 2020-11-18 19:58  雨子大人  阅读(88)  评论(0编辑  收藏  举报