mysql 查询方法_MySQL —— 基本查询方法

MySQL —— 简单查询与按条件查询

在MySQL中从数据表中查询数据的基本语句时select语句。

select语句基本语法格式:

select 查询内容from 表名

where 表达式

group by 字段名

having 表达式

order by 字段名

limit 记录数

每一个select语句由多个子句组成。

1.from 表名指定是从那张表中查询

2.select查询内容

查询所有字段select * from 表名;

*通配符:表示所有字段

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test;

+------+------+------+

| id | name | age |

+------+------+------+

| 1 | A | 4 |

| 2 | B | 7 |

| 3 | C | 5 |

| 4 | D | 12 |

+------+------+------+

4 rows in set (0.06 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

查询部分字段select 字段名 from 表名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select name from test;

+------+

| name |

+------+

| A |

| B |

| C |

| D |

+------+

4 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

在MySQL表中,每个字段的数据可以当做变量处理。

查询所需的某个字段数据处理后的结果:select 字段处理方式 from 表名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select age-3 from test;

+-------+

| age-3 |

+-------+

| 1 |

| 4 |

| 2 |

| 9 |

+-------+

4 rows in set (0.11 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

3.where 表达式(按条件查询)

在MySQL的表查询时,往往并不是需要将所有内容全部查出,而是根据实际需求,查询所需数据

select 查询内容 from 表名 where 表达式;

在MySQL语句中,条件表达式是指select语句的查询条件,在where子句中可以使用关系运算符连

接操作数作为查询条件对数据进行选择。

关系运算符:

=   等于

<>  不等于

!=  不等于

>   大于

<=  小于等于

>=  大于等于

例如查询年龄大于5的信息

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test where age > 5;

+------+------+------+

| id | name | age |

+------+------+------+

| 2 | B | 7 |

| 4 | D | 12 |

+------+------+------+

2 rows in set (0.04 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

带in的关键字查询

查询某个指定集合内的记录 select 查询内容 from 表名 where 条件 in(指定内容);

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test where age in (5, 12);

+------+------+------+

| id | name | age |

+------+------+------+

| 3 | C | 5 |

| 4 | D | 12 |

+------+------+------+

2 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

带有between and关健字查询

查询某个在给定范围内的记录select 查询内容 from 表名 where 条件 between 值1 and 值2;

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test where age between 5 and 12;

+------+------+------+

| id | name | age |

+------+------+------+

| 2 | B | 7 |

| 3 | C | 5 |

| 4 | D | 12 |

+------+------+------+

3 rows in set (0.07 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

查询某些为空NULL  或 非空的记录select 查询内容 from 表名 where 条件 is(not) NULL;

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test where age is NULL;

+------+------+------+

| id | name | age |

+------+------+------+

| 6 | F | NULL |

+------+------+------+

1 row in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

在查询时过滤掉重复的值:select distinct 字段名 from 表名;字段名表示要过滤重复记录的字段

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select num from a;

+------+

| num |

+------+

| 5 |

| 10 |

| 15 |

| 10 |

| 15 |

| 5 |

| 10 |

+------+

7 rows in set (0.00 sec)

mysql> select distinct num from a;

+------+

| num |

+------+

| 5 |

| 10 |

| 15 |

+------+

3 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

在使用distinct指定多个字段时,只有被指定的这些字段的值都相同,才会被认为是重复的

在查询具有一类相同特征的数据时,需要用到模糊查询,这是就需要使用like关键字

select 查询内容 from 表名 where 内容 (not) like ‘匹配的字符串’

百分号通配符 %:表示匹配任意长度的任意字符串

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select name from name;

+------+

| name |

+------+

| 1112 |

| 1122 |

| 1222 |

| 2111 |

+------+

4 rows in set (0.00 sec)

mysql> select name from name where name like '11%';

+------+

| name |

+------+

| 1112 |

| 1122 |

+------+

2 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

下划线通配符 _:表示匹配任意单个字符,如果需要匹配多个字符,则需要使用多个 _

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select name from name where name like '11__';

+------+

| name |

+------+

| 1112 |

| 1122 |

+------+

2 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

如果需要查询带有% 或 _的数据,由于 % 和 _ 是通配符,则需要使用\ 进行转义

\% 表示 %,\_ 表示 _

有时在查询时为了查询结果更加精确,需要多个限条件,这时就需要and(&&) 来连接条件

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select cat_id, cat_name, parent_id from category;

+--------+---------------------------+-----------+

| cat_id | cat_name | parent_id |

+--------+---------------------------+-----------+

| 1 | 手机类型 | 0 |

| 2 | CDMA手机 | 1 |

| 3 | GSM手机 | 1 |

| 4 | 3G手机 | 1 |

| 5 | 双模手机 | 1 |

| 6 | 手机配件 | 0 |

| 7 | 充电器 | 6 |

| 8 | 耳机 | 6 |

| 9 | 电池 | 6 |

| 11 | 读卡器和内存卡 | 6 |

| 12 | 充值卡 | 0 |

| 13 | 小灵通/固话充值卡 | 12 |

| 14 | 移动手机充值卡 | 12 |

| 15 | 联通手机充值卡 | 12 |

+--------+---------------------------+-----------+

14 rows in set (0.00 sec)

mysql> select cat_id, cat_name, parent_id from category

-> where cat_id > 7 and parent_id = 6;

+--------+-----------------------+-----------+

| cat_id | cat_name | parent_id |

+--------+-----------------------+-----------+

| 8 | 耳机 | 6 |

| 9 | 电池 | 6 |

| 11 | 读卡器和内存卡 | 6 |

+--------+-----------------------+-----------+

3 rows in set (0.05 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

有时在查询时,只需要数据满足某些条件中的某一个,这时就需要使用or(||) 来连接条件

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select cat_id, cat_name, parent_id from category where cat_id = 3 or cat_id = 9;

+--------+-----------+-----------+

| cat_id | cat_name | parent_id |

+--------+-----------+-----------+

| 3 | GSM手机 | 1 |

| 9 | 电池 | 6 |

+--------+-----------+-----------+

2 rows in set (0.02 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

注意:在查询时,and 的优先级高于 or

聚合函数:

count()函数:统计记录条数 select count(记录) from 表名

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test;

+------+------+------+

| id | name | age |

+------+------+------+

| 1 | A | 4 |

| 2 | B | 7 |

| 3 | C | 5 |

| 4 | D | 12 |

| 5 | E | 0 |

| 6 | F | NULL |

+------+------+------+

6 rows in set (0.01 sec)

mysql> select count(name) from test;

+-------------+

| count(name) |

+-------------+

| 6 |

+-------------+

1 row in set (0.09 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

sum()函数:计算表中某个字段值的总和,select sum(字段名) from 表名

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select sum(age) from test;

+----------+

| sum(age) |

+----------+

| 28 |

+----------+

1 row in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

avg()函数:计算表中某个字段的平均值 select avg(字段名) from 表名

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select avg(age) from test;

+----------+

| avg(age) |

+----------+

| 5.6000 |

+----------+

1 row in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

max()函数:返回表中某个字段中的最大值

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select max(age) from test;

+----------+

| max(age) |

+----------+

| 12 |

+----------+

1 row in set (0.04 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

min()函数:返回表中某个字段中的最小值

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select min(age) from test;

+----------+

| min(age) |

+----------+

| 0 |

+----------+

1 row in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

分组查询:

在对数据表中的数据进行统计时,需要将数据按照一定的特征分组统计,此时就需

要使用分组查询select 查询内容 from 表名 group by 分组依据 [having表达式条件]

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select * from test;

+------+------+------+-------+

| id | name | age | class |

+------+------+------+-------+

| 1 | A | 4 | 1 |

| 2 | B | 7 | 1 |

| 3 | C | 5 | 1 |

| 4 | D | 12 | 2 |

| 5 | E | 0 | 2 |

| 6 | F | 8 | 3 |

+------+------+------+-------+

6 rows in set (0.00 sec)

mysql> select max(age) from test group by class;

+----------+

| max(age) |

+----------+

| 7 |

| 12 |

| 8 |

+----------+

3 rows in set (0.03 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

对查询结果进行排序

select 查询内容 from 表名 order by 排序条件 asc/desc,asc表示升序 desc表示降序

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select name, age from test order by age asc;

+------+------+

| name | age |

+------+------+

| E | 0 |

| A | 4 |

| C | 5 |

| B | 7 |

| F | 8 |

| D | 12 |

+------+------+

6 rows in set (0.00 sec)

mysql> select name, age from test order by age desc;

+------+------+

| name | age |

+------+------+

| D | 12 |

| F | 8 |

| B | 7 |

| C | 5 |

| A | 4 |

| E | 0 |

+------+------+

48304ba5e6f9fe08f3fa1abda7d326ab.png

限制查询:

在查询时,可能需要只显示部分数据,这是需要限制查出来的数据数量

select 查询内容 from 表名 limit 偏移量m 记录数n,表示从第m+1个记录开始查询出n条记录

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> select name, age from test order by age asc limit 2, 2;

+------+------+

| name | age |

+------+------+

| C | 5 |

| B | 7 |

+------+------+

2 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

where 与 having:

where 与 having关键字都用于设置条件表达式对查询结果进行过滤,区别是having后面可以跟聚合

函数,而where不能,通常having关键字都与group by 一起使用,表示对分组后的数据进行过滤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值