MySQL —— 基本查询

MySQL数据库基本操作-DQL-基本查询

概念

  • 数据库管理系统一个重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示
  • MySQL提供了功能强大、灵活的语句来实现这些操作
  • MySQL数据库使用select语句来查询数据

语法格式

select 
	[all|distinct]
	<目标列的表达式1> [别名],
	<目标列的表达式2> [别名]...
		from <表名或视图名> [别名],<表名或视图名> [别名]...
			[where<条件表达式>]
			[group by<列名>]
			[having<条件表达式>]
			[order by<列名> [asc|desc]]
			[limit<数字或者列表>];
#简化版语法
select *|列名 from 表名 where 条件;

简单查询:

#查询所有
select *|所有列名 from 表名;
#使用别名
select * from 表名 as 别名 #给表名加别名 [as可以省略]
select 列名 as 别名 from 表名 #给列名加别名 [as可以省略]
#去掉重复值
select distinct 列名 from 表名

运算符

数据库中的表结构确立后,表中的数据代表的意义就已经确定,通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据
例如:学生表中存在一个birth字段,这个字段表示学生的出生年份,而运用MySQL的算数运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据
MySQL支持4种运算符:

  • 算术运算符
算数运算符说明
+加法运算
-减法运算
*乘法运算
/或DIV除法运算,返回商
%或MOD求余运算,返回余数
  • 比较运算符
比较运算符说明
=等于
< 和 <=小于和小于等于
> 和 >=大于和大于等于
<=>安全的等于,两个操作码均为null时,其所得值为1;而当一个操作码为null时,其所得值为0
<> 或 !=不等于
is null 或 isnull判断一个值是否为null
is not null判断一个值是否不为null
least当有两个或多个参数时,返回最小值
greatest当有两个或多个参数时,返回最大值
between and判断一个值是否落在两个值之间
in判断一个值是in列表中的任意一个值
not in判断一个值不少in列表中的任意一个值
like通配符匹配
regexp正则表达式匹配
  • 逻辑运算符
逻辑运算符说明
not或者!逻辑非
and或者&&逻辑与
or或者双竖线逻辑或
xor逻辑异或
  • 位运算符
位运算符说明
竖线按位或
&按位与
^按位异或
<<按位左移
>>按位右移
~按位取反,反转所有比特

位运算符是在二进制数上进行计算的运算符,位运算会先将操作数编程二进制数,进行位运算,然后再将计算结果从二进制数变回十进制数

排序查询

如果我们需要对读取的数据进行排序,我们就可以使用MySQL的order by子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果

select 
	字段名1,字段名2,...
		from 表名
			order by 字段名1 [asc|desc],字段名2 [asc|desc]

特点:

  • asc代表升序,desc代表降序,如果不写默认升序
  • order by用于子句中可以支持单个字段,多个字段,表达式,函数,别名
  • order by子句放在查询语句的最后面,limit子句除外

聚合查询

聚合函数查询是属于纵向查询,它是对一列的值进行计算,然后返回一个单一的值,另外聚合函数会忽略空值

聚合函数作用
count()统计指定列不为null的记录行数
sum()计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
max()计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
min()计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
avg()计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0

注意: 聚合函数对null值得处理

  • count函数对null值得处理:如果count函数的参数为星号(*),则统计所有记录的个数,而如果参数为某字段,则不统计含null值得记录个数
  • sum和avg函数对null值得处理:这两个函数忽略null值得存在,就好像该条记录不存在一样
  • max和min函数对null值得处理:max和min两个函数同样忽略null值得存在

分组查询

分组查询是指使用group by子句对查询信息进行分组

#语法格式
select 字段1,字段2... from 表名 group by 

注意: 如果要进行分组的话,则select子句之后,只能出现分组的字段和统计函数,其他的字段不能出现

分组查询后进行筛选

分组之后的条件筛选-having

  • 分组之后对统计结果进行筛选的话必须使用having,不能使用where
  • where子句用来筛选from子句中指定的操作所产生的行,group by子句用来分组where子句的输出,having子句用来从分组的结果中进行筛选
#语法格式
select 字段1,字段2... from 表名 group by 分组字段 having 分组条件

分页查询

分页查询在项目开发中很常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式,例如数据共30条,每页显示5条,第一页显示1-5条,第二页显示6-10条

#方式1 显示前n条
select 字段1,字段2... from 表名 limit n
#方式2 分页实现
select 字段1,字段2... from 表名 limit m,n #m:整数 表示从第几条索引开始,计算方式(当前页-1)*每页显示条数    n:整数 表示查询多少条数据

注意: limit一般放在sql语句的最后

insert into select 语句

将一张表的数据导入到另一张表中,可以使用insert into select语句

insert into table2(field1,field2,...) select value1,value2,... from table1
#或
insert into table2 select * from table1

注意: 要求目标表table2必须存在

正则表达式

正则表达式描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本
MySQL通过REGEXP关键字支持正则表达式进行字符串匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值