mysql学习之基础篇06
子查询:又分为where型子查询,from型子查询,exists型子查询这三类。
where型子查询:指把内层查询的结果作为外层查询的比较条件:
举个例子:
我们想查出goods_id最大的商品,要求不能用排序:
select goods_id,goods_name,cat_id,shop_price from goods where goods_id=(select max(goods_id)from goods);
我们还想查出每个栏目下goods_id最大的商品,要求使用where型子查询:
select goods_id,goods_name,cat_id,shop_price from goods where goods_id in (select max(goods_id)from goods group by cat_id);
from型子查询:
内层sql的查询结果当成一张临时表,供外层sql再次查询
举个例子,我们想查询上面那张表中shop_price在20到100之间的商品:
select t1.goods_id,t1.goods_name,t1.cat_id,t1.shop_price from(select goods_id,goods_name,cat_id,shop_price from goods where goods_id in (select max(goods_id)from goods group by cat_id)) as t1 where t1.shop_price between 20 and 100;
exists 型子查询:
把外层的查询结果拿到内层进行测试,如果内层存在,则输出外层
我们还有一张category表:
我们现在想取出category栏目下有商品的栏目:
select * from category
where exists (select * from goods where category.cat_id=goods.cat_id);
对null的理解:
建表时列后面not null default ''/not null default 0 是什么意思?
答:就是让这个列的值不为nul,就算某个列确实没有填值,也不让它为null
为什么?
答:null是空,它的比较要用到特殊的比较符is null,is not null ,效率不高而且会影响索引效果
左连接:
假设A表在左,不动,有一张B表在A右边滑动,A表与B表之间通过一个关系来筛选B表的行。
A left join B on 条件。 条件为真,则B表中对应的行被取出。
上面的category表有一列cat_name,我们把它跟goods表左连接看看效果:
select goods_id,goods_name,shop_price,goods.cat_id,cat_name
from goods left join category on goods.cat_id=category.cat_id;
我们可以看到category表中的cat_name列与goods表连接在了一起
右连接也是类似,不过处于移植性和兼容性方面考虑,我们通常使用左连接。
我们有两个表t,m:
我们想把它显示为以下的效果:
该怎么做?提示:使用两次左连接
select t1.tname,mres,t2.tname,matime
from m left join t as t1 on t1.tid=m.hid
left join t as t2 on t2.tid=m.gid
where matime between '2006-06-01' and '2006-07-01';
union:
合并两条或多条sql语句的结果
语法:sqlA union sqlB
要求查询价格低于100元和价格高于4000元的商品(不能用or):
(select goods_id,goods_name,cat_id,shop_price from goods where shop_price<100)
union
(select goods_id,goods_name,cat_id,shop_price from goods where shop_price>4000);
使用union时默认去重,如果不想去掉重复数据可以用union all
mysql学习之基础篇06的更多相关文章
- mysql学习之基础篇01
大概在一周前看了燕十八老师讲解的mysql数据库视频,也跟着学了一周,我就想把我这一周所学的知识跟大家分享一下:因为是第一次写博客,所以可能会写的很烂,请大家多多包涵.文章中有不对的地方还请大家指出来 ...
- mysql学习之基础篇08 UTF8编码
这次我们来说一下在Mysql中的编码问题: 我们知道应用于计算机的最早的字符集是ASCII,它所组成的编码是ASCII编码:由于对于其他国家来说它所容纳的字符个数比较少,后来就出现了ANSI字符集,它 ...
- mysql学习之基础篇05
mysql中的统计函数: 1. 查询商品价格中最高的价格: select max(shop_price) from goods; 2. 查询商品价格中最低的价格: select min(shop_pr ...
- mysql学习之基础篇04
五种基本子句查询 查询是mysql中最重要的一环,我们今天就来说一下select的五种子句中的where条件查询: 首先我们先建立一张商品表:goods 由于商品数目太多,我就不一一列举了. 在这里我 ...
- mysql学习之基础篇03
我们今天来进行建表的基本操作: 首先要建表就要了解列类型,因为建表就是声明列的过程,列声明完成了,表也就建好了. mysql中列分为三大类: 一.数值型 数值型又分为整型和浮点型两种. 先来看整型: ...
- MySQL学习之基础篇09-事务
我们在建表的时候通常会在最后声明引擎类型,这次我们就来看看存储引擎都有哪些: 举个例子: --------------------------- 银行转账: 张三想给李四转500元钱: 张三-500 ...
- mysql学习之基础篇07
视图:view 在查询的时候我们经常把查询到的结果当成一张临时表来看,其实view就可以看成一张虚拟表,是表通过某种运算得到的投影 那么如何创建视图?创建视图需要指定视图的列名和列类型吗? 答:不用, ...
- mysql学习之基础篇02
我们来说一下表的增删改查的基本语法: 首先建立一个简单的薪资表: create table salary(id int primary key auto_increment,sname varchar ...
- iOS系列 基础篇 06 标签和按钮 (Label & Button)
iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...
随机推荐
- 【Linux】数据流重定向
数据流重定向(redirect)就是将某个命令执行后应该要出现在屏幕上的数据,给它传输到其他的地方,例如文件或设备(打印机之类的).这玩意在Linux的命令行模式下很重要,尤其是想要将某些数据存储下来 ...
- vue+element-ui+ajax实现一个表格的实例
<!DOCTYPE html> <html> <head> <script src="js/jquery-3.2.1.js">< ...
- java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式)
java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式) * TCP* 特点:面向连接,点对点的通信,效率较低,但安全可靠* UDP:用户数据报协议,类似 ...
- 函数vs方法
举例 python代码示例: class A(): def method_demo(): print("我是一个方法,在类内") def function_demo(): prin ...
- ehcache和redis的区别及适用场景
区别: (1)Redis 独立程序,是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案 (2)Ehcache 直接在jvm虚拟机中缓存,速 ...
- 【视频开发】GPU编解码:GPU硬解码---DXVA
GPU编解码:GPU硬解码---DXVA 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解码可分四级:VLD,控制BitStream;IDCT,反 ...
- QT笔记--checkbox
1 复选框 一般用来表示“是/否”.: 2 属性有哪些 如果需要默认选中,那么设置QAbstractButton->checked 3 哪些操作函数 需要判断是否选中.也就是isChecked( ...
- Oracle Spatial分区应用研究之一:分区与分表查询性能对比
1.名词解释 分区:将一张大表在物理上分成多个分区,逻辑上仍然是同一个表名. 分表:将一张大表拆分成多张小表,不同表有不同的表名. 两种数据组织形式的原理图如下: 图 1分表与分区的原理图 2.实验目 ...
- Spring中的@ImportResource
简介 这个注解很简单,就是导入spring的xml配置文件 直接来看spring官方文档: In applications where @Configuration classes are the p ...
- spring框架学习(四)——注解方式AOP
注解配置业务类 使用@Component("s") 注解ProductService 类 package com.how2java.service; import org.spri ...