mysql查询2到5_Mysql-2 查询操作

Select 查询语句

a、Mysql 使用select 语句查询数据

b、select 语句的作用是从一个或多个表中查询信息

c、使用select语句,必须至少给出两条信息

1) 选择什么

2) 从什么地方选择

注意: SQL语言中,不区分大小写,每一句的SQL语句,使用”;“表示结尾

以下语法说明: 数据库名:mydb

表名:stu

1、查询特定列

格式:

select 列名 from mydb.stu;

select 列名 from stu;

说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

查询多列

格式:

select 列1,列2,... from mydb.stu;

select 列1,列2,....from stu;

说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

查询所有列

格式:

select * from mydb.stu;

select * from stu;

说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

避免查询到重复的内容

如果查询到的两行内容一样,默认情况下,Mysql 会显示这些重复的行,如果需要相同的行只显示一次,可使用 distinct 关键字

格式:

select distinct 列名 from mydb.stu;

select distinct 列名 from stu;

说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

2、设定查询结果返回的行数

a、如果一个表的行非常多,客园使用limit关键字,指定需要返回多少行

格式:

select  列名 from stu limit n;     #显示查询结果的前 n 行

select 列名 from stu limit n,m;  #只显示查询结果第 n 行开始后面的m 行

说明:mysql 中的行号是从 0 开始计算的,limit 2,3 是从第3行往后数3行,也是就 3、4、5行

3、查询结果排序

a、为了明确地排序用select 语句查询出的数据,可使用order by 语句

order by 语句取一个或多个列的名字,根据这些列进行排序

格式:

select 列名 from stu order by 列名;

说明:根据列名排列的可以是 select对应的列也可以是本身数据有的列表

select 列名 from stu order by 列1,列2;

说明:列1全部相同时,才会采取列2再次进行排序

排序是根据ASCII码进行排序

b、指定排序方向

order by 语句默认是按照升序排序(从A到Z),关键字是ASC

可以给order by 语句指定降序(从Z到A),关键字是DESC

说明:DESC关键字只应用到直接位于其前面的列

格式:

select 列1 from mydb.stu order by 列1 desc;

select 列1 from mydb.stu order by 列1 desc,列2;   #只针对列1 进行降序

select 列1 from mydb.stu order by 列1 asc;

4、order by 与 limit 组合

a、使用order by 和limit 组合,能够找出一个列中最高或者最低的值

格式:

select 列1 from mydb.stu order by 列1 desc limit 1;

说明:order by 子句位于from 子句后面,如果使用limit ,那么limit 必须位于order by 之后

可理解为,排序之后进行取值

5、条件查询与通配符

a、查询结果过滤

1) 数据库表中一般包含大量的数据,很少需要查询表中所有的行,通常只会根据特定的需要提取表中的一部分数据。这个hi和需要指定查询条                            件,即过滤条件

2)在select 语句中,数据库根据where 子句中指定的查询条件进行过滤。where 子句位于表名之后

格式:

select 列名 from 表名 where 列 满足的条件;

实例:

从 stu 表中查询两列,只返回 列uid 值为 001的行

select * from stu where uid = 001;

注意:在同时使用order by 和 where 子句时,order by 应位于 where 之后,否则将会产生错误

where 语句支持的操作符

34feee0cb50e1621664755f81c0f3695.png

实例:

从表stu 中查找名字为 张三的数据

select * from stu where name = '张三';

从表stu 中查找用户id 小于 10的数据

select * from stu where id <10;

从表stu 中查找 电话号码为空的数据

select * from stu where phonenum IS NULL;

从表stu 中查找 电话号码为不空的数据

select * from stu where phonenum IS NOT NULL;

从表stu 中查找 用户id 不等于 001的数据

select * from stu where id <> 001;

select * from stu where id != 001;

从表stu 中查找用户id 在50到100 的范围内的数据

select * from stu where id between 50 and 100;

说明: between ... and ... 包含边界值

b、and 操作符

1) Mysql 支持在where 子句中给出多个条件,这些条件可以使用and 子句表示条件都满足时返回指定的行

格式:

select 列名 from stu where '列1满足条件' and ‘列2满足的条件’;

实例:

从表stu 查询 id 为001 且名字叫 张三的数据

select * from stu where id = 001 and name = ‘张三’;

c、or 操作符

1) Mysql 支持在where子句中给出多个条件,这些条件可以使用or子句表示条件中只需要有一个条件满足时返回指定的行

格式:

select 列名 from stu where ‘列1满足条件’ or ‘列2 满足的条件’;

实例:

从表 stu 查询id 为001 或者名字叫张三的数据

select * from stu where id= 001 or name = '张三';

AND/OR 条件组合中的顺序

1) and/or 条件组合中的顺序

2)and的优先级高于or,当 and/or 中有多个条件的时候,需要使用()把各个条件明确的分组,防止条件的错误组合导致返回的结果不正确

说明:圆括号 > and > or (>代表优先级)

实例

从表stu 查询id 为 001 或 002 且学历为 本科的

select * from stu where (id = 001 or id= 002) and edu = ‘本科’;

注意: 在使用 and / or 操作符的 where 子句中,都应该使用圆括号明确的分组操作符,以达到期望的查询目的

d、IN操作符

1) in 操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN取值包含在圆括号内,以逗号分隔

格式:

select 列 from 表 where 列 in (value1,value2 ,....)

实例

从表stu 中查询 用户id 在(001 到 010)范围中

select * from stu where id in (001,010);

IN 操作符特点:

-1: in操作符的语法清晰直观

-2:计算次序容易管理

-3:in操作符一般比or 操作符执行速度更快

-4:in可以包含其他select 语句,使得能够动态地建立where 子句

e、NOT操作符

1) where 子句中的not 操作符只有一个功能,即否定它之后所跟的任何条件

2) 使用not 很容易找到与条件列表不匹配的行

实例

从表stu 中找不 id 不为 001和010 的数据

select * from stu id not in (001,010);

注意:Mysql 只支持使用not 对in 、between和exists 子句取反

f、LIKE操作符

1) 通配符是用来匹配值的一部分的特殊字符

2) 为了在查找子句中使用通配符,必须使用like 操作符,like指示Mysql 后跟的查找模式利用通配符匹配而不是直接相等匹配进行比较

-1:百分号(%)通配符

百分号(%)在查出串中,%表示任何字符出现任意次数,但是不能匹配null

实例

从表stu查找出生年月为1996-04所有人的数据

select * from stu where birth like ‘1996-04%’

-2:下划线 (_)通配符

下划线的用途与% 一样,但是下划线只匹配单个字符而不是多个字符

实例

从表stu 查找名字为‘三’,姓可不同的数据

select * from stu where name like ‘_三’;

通配符的特点:

a、与%不一样,_总是匹配一个字符,不能多也不能少

b、使用通配符会比没有通配符更小孩数据库执行查询的时间,应该在需要使用通配符的地方才使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值