mysql

子查询:内查询,嵌套查询

select。。。(select)

括号里面的查询语句会先于主查询语句执行。然后再把子查询的结果作为条件返回给主查询条件进行过滤

子查询返回的结果只能是1列

where条件in什么,子查询的列就是什么

select id,name,score from info where id in (select id from ky32);

多表联查,不要超过三张

select id,name,score from info where name in (select name from ky32);

取反:select id,name,score from info where id not in (select id from info where score > 70);

子查询语句还可以用在insert update delete

插入数据,要求按地址,包含南京的插入到test

根据info表,查询出大于80分的同学,然后统计有多少个

select count(*) from info a where exists(select id from info where score > 80 and info.id=a.id);

视图:mysql当中的视图 view

视图再mysql当中是一个虚拟表。基于查询结果得出的一个虚拟表。

在工作当中,我们查询的表未必是真表。有可能是基于真表查询结果的一个虚拟表

好处:

1、可以简化负载的查询语句,隐藏表的细节。

2、提供安全的数据访问

创建视图表可以是一张表的结果集,也可以是多个表共同的查询的结果集

视图表和真表之间的区别:

  1. 存储方式不一样的,真标存储实际数据,真正写在磁盘当中的。视图不存储任何数据,仅仅是一个查询结果集的虚拟表
  2. 数据更新:表可以增 删 改 查,但是视图一般情况下只能用于查,是展示数据的
  3. 占用空间,真标真实占用空间,视图不占用数据库空间的

查看当前库的视图表:show full tables in kgc where table_type like 'view';

删除视图:drop view test2

原表的数据发生变化,视图表数据同步更新

更新视图表,原表的数据也会发生变化

真表占了80%,视图适用于安全性要求比较高的场景,对外访问,基本都是视图

null值和空值

null就是真空

空值 空气

null是不被统计的,空值可以被统计

连接查询:

内连接:是把两张表或者多张表(不超过三张),同时符合特定条件的数据记录的组合。

一个或者多个列的相同值才会有查询的结果

select a.id,a.name from test01 a inner join kgc b on a.name=b.name;

左连接:左外连接,在left join关键字来表示。在左连接当中,在左侧表示基础表,接收左边的所有行,然后和右表(参考表)记录进行匹配

匹配坐标当中的所有行,以及右表中符合条件的行。不匹配的部分记录null值

select * from test01 a left join kgc b on a.name=b.name;

右连接:右外连接,right join 以右侧表为基础,接收右侧表的所有记录,匹配的记录,不匹配的记录null值

你可能感兴趣的:(数据库)