mysql的高级查询玩法

常用查询

对mysql数据库的查询,除了基本的查询外,还有需要对查询结果进行处理,

一,1,按关键字排序
使用select语句可以将需要的数据从mysql数据库中查询出来,如果对查询的结果进行排序,使用order by语句来实现,将结果反馈给用户
语法结构:
select column1, from table_name where 条件 order by
在这里插入图片描述

asc 是按照升序进行排序,默认方式
desc 是按照降序进行排序,当然order by 前面可以使用where自居对查询结果进一步过滤

2,关键字排序:
使用order by语句来实现排序
排序可以针对一个或多个字段,
1),按照单字段排序

在这里插入图片描述

select id,name,level from player where level>= level45 order by level desc,id desc;
order by 可以和where结合使用,进行条件过滤

在这里插入图片描述

order by 语句可以使用多个字段进行排序,当排序的第一个自选形同的距离进行多条的情况下,这些多条的记录再按照第一个字段进行排序,order by后面跟多个字段,字段之间用逗号隔开,优先级按照先后顺序而定,第一个参数相同时,第二个字段才有意义

2,区间判断以及查询不重复记录

select * from info where score >=50 and score <79;

在这里插入图片描述

嵌套条件

select * from info where score >70 and (score >75 and score <98);
在这里插入图片描述

添加:
distinct 查询不重复记录
select distinct 字段from表名;

二,对结果进行分组
使用group by 语句进行分组
通常结合聚合函数一起使用
可以按照一个或者多个字段进行结果进行分组

在这里插入图片描述

常用的聚合函数: 计数count,求和sum,求平均数avg,最大值max ,最小值min,group by分组的时候可以按照一个或多个字段进行结果进行分组
1,语法:select column _name ,from table_name where name operater group by;

select count (name),hobbid from info where score >=80 group by hobbid;
select count (name) ,socre,hobbid from where score >=80 grop by hobbid order by count(namen) asc;

四,限制结果条目
limit限制输出的结果记录
使用mysql select语句进行查询结果返回的是多有匹配的记录,有时候仅需要返回第一行或者前几行,这时候就需要用到limit句
select column1 from table limit 3,3
在这里插入图片描述

limit的第一个参数 位置偏移量,是设置mysql从哪一行开始显示,如果不设定第一个参数,将会从表中国开始显示,需要注意的是第一条记录的位置偏移量是0,第二条是1
在这里插入图片描述
在这里插入图片描述

五,别名alias-----as
在mysql查询时,当表的名字比较长或者表内某些字段长,可以给字段列,可以设置别名,使用时直接使用别名
select name as alias name from table——name
在这里插入图片描述

使用场景:
对复杂的表进行查询的时候,别名可以缩短下旬语句的缩写
多表相连查询的时候
as还可以作为连接语句的操作符,常见l1
create table t1 as select * from info

创建了一个新表t1并定义表结构,插入表数据
但是“约束”
没有被完全复制过来,但是如果表设置了主键,那么附表的default字段会默认设置一个0

克隆,复制表结构
createtable l1(select *from info);
也可以加入where语句判断
create table test1 as select * from info where score >=60;
在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突,列的别名实在结果中显示的,而表的别名在结果中没有显示,只在执行查询结果使用

六,通配符是使用
通配符主要用于替换字符串中的部分字符,通过通配符将结果查询出来
通配符与like一起使用
%:百分号表示零个,一个或多个
: 下划线表示单个字符
select id ,name from into where name like ‘c%’;
select id ,name from into where name like ‘%c%’;
select id ,name from into where name like '%c
’;
在这里插入图片描述

六,子查询
子查询被称为嵌套查询,是一个查询语句里面还嵌套着另外一个查询语句,子查询语句是先基于主查询语句被执行的,其结果作为外层条件返回给主查询进行下一步的查询过滤
select name,score from info where id in (select id from info where score >80);
主语句:select name,score from info where id
子语句:select id from info where score >80

** in :将主表和子表关联语法

在这里插入图片描述

表达式 not in 子查询
当边大师与子查询返回额结果集中的某个值相等时,返回true,否则返回false。若启用not关键字,返回值相反,子查询只能返回一组数据

update info set score=50 where id in (select * from member where id >1);

2,exists 这个关键系进行子查询时,主要永远忽子查询的结果为空,如果为空,返回false,非空,返回true。

select count(*)- from info where exists(select id from info where score<50);
,3,as 建立临时表

select a.id ,name from (select id,name from info) a;
相当于select info.ed,name from info; select 表。字段 字段from表;

七,mysql视图
数据库中的虚拟表,这张表中不包含真是数据,只是做了真是数据的映射视图可以理解为倒影,动态保存结果集

作用场景,针对不同的人,提供不同结构的表

功能:简化查询结果集,灵活查询,可以针对不同用户呈现不同集,相对有更高的安全性,本质而言,视图是一种select

1,创建一个视图
create view v_info(id,name,score,age) as select info.id,info.name,info.score,test01 where info.name-test01.name;

通过select * from v_info;

2,NULL值
在sql语句使用过程中,经常会碰到null这几个自读。通常使用null来表示缺失的值,也就是在表中该字段是没有值的。如果在创建表时,限制某些字段不为空,可以使用not null关键字,不使用默认为空,向表里插入或者更新时,如果改字段有not null并且没有值,这时候新记录的该字段将保存为null,null值与数字0,空白的字段是不同的,值为null字段是没有值的,在sql语句中使用is null,可以判断表内某个字段是不是null值,相反的uongis not null,可以判断不是

null字段与控制的区别,空值长度为0,不占空间,null值为null,占用空间
is null无法判断控制 ,空值使用=,或者《》来处理
count ()计算时,null会忽略,控制会加入计算。
update info set addr=‘nj’ where score >=70;
统计数量:简写null是都会加入统计中
select count(addr) from info;
将info表中一条数据修改为空值 “”
uodate info set addr=’’ where name=‘wangwu’;
统计数量,检测空值是不会被调价到统计中
select count(addr) from info;

总结
1,mysql的高阶语句主要是用按照一定要求查询输出指定的内容。
2,查询主要分为几个方面,第一,对查询内容进行排序order by,默认是正排序,desc是倒序
第二,分组 group by 对查询相同内容进行分组计数输出
第三,多条件要求查询时,用and or 或者嵌套的方式,进行多条件筛选
第四,限制结果条目,输出指定的行,用limit
第五,别名设置,对比较长的内容输出时,可以使用as,别名方式输出,as还可以作为创建新的表时,进行相似插入。
第六,通配符的使用,使用%表示零个,一个或者多个,_:表示单个字符。查询出类似类容
第七,子查询,也是嵌套查询,可以个多个表,进行嵌套,也可以exists来判断true和false。
第八,视图,让不同的人看到不同的表,针对场景。create view
第九,null和空值的区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值