五种基本子句查询

查询是mysql中最重要的一环,我们今天就来说一下select的五种子句中的where条件查询:

首先我们先建立一张商品表:goods

由于商品数目太多,我就不一一列举了。

在这里我说一下这些列名都是什么意思:

goods_id 主键;goods_name 商品名称;cat_id 商品所属栏目;goods_nummber 商品库存;shop_price 本店价格;market_pprice 市场价格;click_count 点击量。

我们取出主键为32的商品:

select * from goods where goods_id=32;select * from goods where goods_id=32;

我们注意,一定要把where表达式理解清楚,只要where后面的条件为真,那么语句就执行

我们看到主键为32的商品本店价格为3010,市场价格为3612,

那么我们也可以用

select * from goods where shop_price=3010 and market_price=3612;

来取出它

我们来取出商品栏目不等于3的商品:

select * from goods where cat_id !=3;

取出本店价格小于3000的商品:

select * from goods where shop_price<3000;

取出商品栏目是4和11的商品:

select * from goods where cat_id in (4,11);

取出商品本店价格在100到500之间的商品(含边界):

select * from goods where shop_price between 100 and 500;

取出商品栏目不在3和11的商品(用and和not in分别实现):

select * from goods where cat_id !=3 and cat_id !=11;

select * from goods where cat_id not in (3,11);

取出第三个栏目下面本店价格<1000或>3000,并且点击量>5的商品:

在这里我们使用括号来控制优先级:

select * from goods where cat_id=3 and (shop_price<1000 or shop_price>3000) and click_count>5;

模糊查询:like

%通配任意字符

_匹配单一字符

我们想查出名称以诺基亚为开头的商品:

select * from goods where goods_name like '诺基亚%';

我们想查出名称以诺基亚为开头,并且后面只有三个字符的商品:

select * from goods where goods_name like '诺基亚___';

把列当成变量,既然是变量,那就可以进行运算,比较

取出商品id,商品名,本店价格比市场价格省的钱:

select goods_id,goods_name,market_price - shop_price from goods ;

这种结果叫做广义投影。

我们还可以给列差价起个名字叫做discount,但是这个列并不在原表中存在,只存在于结果中:

select goods_id,goods_name,market_price-shop_price as discount from goods;

如果要对结果继续进行查询,需要用having:

比如我们想从上面的结果中取出差价大于200的商品:

select goods_id,goods_name,market_price-shop_price as discount from goods having discount>200;

一定注意这里的having不能换成where,否则会报错,因为我们是对结果进行再次查询,而不是从原来的表里面直接查询,因为原来的表里面没有discount这一列。

接下来我们用一道面试题来练习:

把下面表中[20,29]的值改为20,[30,39]的值改为30

这道题的核心在于我们要能想到把列当成一个变量来进行运算,对其除以10取模再乘10。

update mian set num=floor(num/10)*10 where num between 20 and 39;

再来做道练习题:把goods表中商品名为‘诺基亚xxxx’的商品名称显示为‘HTCxxxx’。

提示:用到两个函数,一个是截取字符串函数substring(),一个是连接字符串函数concat()。

select goods_name,concat('HTC',substring(goods_name,4)) from goods where goods_name like '诺基亚%' ;

mysql学习之基础篇04的更多相关文章

  1. mysql学习之基础篇01

    大概在一周前看了燕十八老师讲解的mysql数据库视频,也跟着学了一周,我就想把我这一周所学的知识跟大家分享一下:因为是第一次写博客,所以可能会写的很烂,请大家多多包涵.文章中有不对的地方还请大家指出来 ...

  2. mysql学习之基础篇08 UTF8编码

    这次我们来说一下在Mysql中的编码问题: 我们知道应用于计算机的最早的字符集是ASCII,它所组成的编码是ASCII编码:由于对于其他国家来说它所容纳的字符个数比较少,后来就出现了ANSI字符集,它 ...

  3. mysql学习之基础篇05

    mysql中的统计函数: 1. 查询商品价格中最高的价格: select max(shop_price) from goods; 2. 查询商品价格中最低的价格: select min(shop_pr ...

  4. mysql学习之基础篇03

    我们今天来进行建表的基本操作: 首先要建表就要了解列类型,因为建表就是声明列的过程,列声明完成了,表也就建好了. mysql中列分为三大类: 一.数值型 数值型又分为整型和浮点型两种. 先来看整型: ...

  5. MySQL学习之基础篇09-事务

    我们在建表的时候通常会在最后声明引擎类型,这次我们就来看看存储引擎都有哪些: 举个例子: --------------------------- 银行转账: 张三想给李四转500元钱: 张三-500 ...

  6. mysql学习之基础篇07

    视图:view 在查询的时候我们经常把查询到的结果当成一张临时表来看,其实view就可以看成一张虚拟表,是表通过某种运算得到的投影 那么如何创建视图?创建视图需要指定视图的列名和列类型吗? 答:不用, ...

  7. mysql学习之基础篇06

    子查询:又分为where型子查询,from型子查询,exists型子查询这三类. where型子查询:指把内层查询的结果作为外层查询的比较条件: 举个例子: 我们想查出goods_id最大的商品,要求 ...

  8. mysql学习之基础篇02

    我们来说一下表的增删改查的基本语法: 首先建立一个简单的薪资表: create table salary(id int primary key auto_increment,sname varchar ...

  9. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

随机推荐

  1. C++之future和promise

    future和promise的作用是在不同线程之间传递数据.使用指针也可以完成数据的传递,但是指针非常危险,因为互斥量不能阻止指针的访问:而且指针的方式传递的数据是固定的,如果更改数据类型,那么还需要 ...

  2. [LeetCode] 70. Climbing Stairs 爬楼梯

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  3. [LeetCode] 47. Permutations II 全排列 II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  4. Neo4j CQL基本使用

    Neo4j用CQL作为查询语言 CQL  Neo4j图形数据库的查询语言 是一种声明性模式匹配语言 遵循SQL语法 语法是非常简单且人性化.可读的格式 1.启动服务,打开浏览器 在数据浏览器中的美元提 ...

  5. Metricbeat 轻量型指标采集器

    一.介绍 用于从系统和服务收集指标.从 CPU 到内存,从 Redis 到 Nginx,Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据. 1.系统级监控,更简洁(轻量型指标采 ...

  6. python爬虫2

    学习任务 获取去哪儿网的出发地列表 获取旅游景点列表 获取景点产品列表 存储数据 1 获取出发地站点 (1)访问touch.qunar.com (2)按F12,单击自由行,在自由行页面点击搜索框 (3 ...

  7. Saltstack限制某些shell命令执行

    在cmdmod模块中cmd.run.cmd.run_all.cmd.run_stdout等都可以执行shell命令,要静止某些shell命令,可以修改_run()这个函数来彻底的静止调用这个命令. c ...

  8. SpringMVC的基本概念

    1.1关于三层架构和MVC 1.1.1 三层架构 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就 是浏览器服务器.在 JavaEE 开发中 ...

  9. mybatis 一对一 一对多 多对多

    一对一 一对多 多对多

  10. mysql 逻辑运算符

    NOT! 逻辑非. 如果操作数为 0,返回 1:如果操作数为非零,返回 0:如果操作数为 NOT NULL,返回 NULL. mysql> SELECT NOT 10; -> 0 mysq ...