Mysql之进阶查询语句

视图:优化操作+安全方案数据库中的虚拟表,这张虚拟表不包含真实数据。只是做了真实数据的映射。视图可以理解为镜花水月倒影,动态保存结果集作用场景:针对不同的人(不同权限),提供不同的结果集的表(以表格的形式展示)功能简化查询结果集,灵活查询,可以针对不同用户呈现不同的结果集,相对有更高的安全性本质而言,视图是一种select(结果集的呈现)注意视图适合于多表连接浏览时使用,不适合增,删,改,而存储过程适合于使用较频繁的sql语句,这样可以提供执行效率常用查询,
摘要由CSDN通过智能技术生成

目录

一,常用查询

1,order by按关键字排序

1.1 升序排序

 1.2 降序排序

 1.3 结合where进行条件过滤再排序

 1.4多字段排序

 2,and和or判断

2.1 and和or的使用

 2.2 嵌套,多条件使用

 3,distinct 查询不重复记录

4,group by 对结果进行分组

 5,limit限制结果输出条目

 6,设置别名(alias-as)

6.1列别名设置示例:

 6.2 查询表的记录数量,以别名显示

6.3 利用as,将查询的数据导入到另一个表内

 7,通配符查询

 二,子查询

1,select 查询

1.1 相同表查询

1.2 多表查询

 1.3 not取反,将子查询的结果,进行取反操作

1.4 结合as别名进行子查询

 2,insert 插入

 3,update更新

 4,delete删除

5,exists布尔输出 

三,mysql视图 

1,什么是视图

2,视图和表的区别与联系

3,单标创建视图

 4,多表创建视图

 五,NULL值

1,NULL值与空值区别

六,总结

常用查询,

子查询

视图


一,常用查询

1,order by按关键字排序

使用select语句可以将需要的数据从 mysql数据库中查询出来,如果对查询的结果进行排序,可以使用order by语句来对语句实现排序,并最终将排序后的结果返回给用户,这个语句的排序不光可以针对某一个字段,也可以针对多个字段。

语法

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

#查询结构以升序方式显示,asc可以省略

select 字段1.字段2....from 表名 order by 字段1,字段2........desc

#查询结构以降序的方式显示

  • ASC是按照升序进行排序,是默认的排序方式,即ASC可以省略
  • select语句中如果没有指定具体的排序方式,则默认按ASC进行排序
  • desc是安装降序方式进行排序
  • order by 前面也可以使用where子句对查询结果进一步过滤

1.1 升序排序

mysql> select id,nba,age from ky21 order by id asc;
#查询id,nba,age。字段的记录,并且以id进行升序

 

 1.2 降序排序

mysql> select id,nba,age from ky21 order by id desc;

查找id,nba,age字段,以id进行降序排序
desc(降序)

 1.3 结合where进行条件过滤再排序

mysql> select id,nba,score,addres from ky21 where addres='洛杉矶' order by score desc;

#查询,id,nab,score,address字段,再进行过滤出address=洛杉矶的字段,在进行score字段进行降序排序

 1.4多字段排序

order by 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再安装第二个字段进行排序,order by后面跟多个字段时,字段直接使用英文逗号隔开,优先级是安装优先级顺序而定,但是order by 之后的第一个参数只有在出现相同值的时候,第二个字段才有意义。

mysql> select id,nba,score from ky21 order by score,id desc;

此处做的实验是先升序排序再降序排序,也可以都降序排序或者都升序排序,这里就不做过多的例子了

 2,and和or判断

在大型数据库中,有事查询数据需要数据符合某些特点,“and”和“or” 表示“且”和“或”。

2.1 and和or的使用

mysql> select id,nba,age from ky21 where id>20;
查找id大于20的记录,并且只显示id,age,nba


mysql> select id,nba,age from ky21 where id>10 and id<30;
查找id大于10的记录并且小于30的记录


mysql> select id,nba,age from ky21 where id>1 or id<30;
查找id大于1 或者小于30的记录

 

 

 2.2 嵌套,多条件使用

mysql> select id,nba,age from ky21 where id <10 or (id>1 or id<30);
查找id小于10或者大于1和小于30之间的

mysql> select id,nba,age from ky21 where id <10 or (id>1 or id<30) order by id desc;
查找id小于10或者大于1和小于30之间的,并且以id进行降序排序

 

 3,distinct 查询不重复记录

select distinct 字段 from 表名;

  • distinct 必须放在最开头
  • distinct 只能使用需要去重的字段进行操作
  • distinct 去重多个字段时,含义是:几个字段同时重复时才能会过滤,会默认按左边第一个字段为依据。
mysql> select distinct age from ky21;
#使用distinct查询不重复记录,(相当于去重)

4,group by 对结果进行分组

通过sql查询出来的结果,还可以对其进行分组,使用group by语句来实现,group by通常都是结合集合函数来一起实现的。

常用的聚合函数包括:计数(count)、求和(sum)、求平均数(avg)、最大值(max)、最小值(min),group by 分组的时候可以按一个或多个字段对结果进行分组处理。、

  • 对于group by后面的字段的查询结果进行汇总分组,通常结合聚合函数一起使用的
  • group by 有一个原则,就是select 后面的所以列中,没有聚合函数的列必须出现在group by的后面

select 字段,聚合函数(字段) from 表名【where 字段 (匹配) 数值】group by 字段名;

mysql> select count(age),score from ky21 group by score;
#count(age): 记录age字段的数据出现的次数
group by score; 按照score相同的分数进行分组,


mysql> select count(age),score from ky21 where score<20 group by score;

mysql> select count(age),score,addres
  • 34
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 60
    评论
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKA|布鲁克林欧神仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值