SELECT 语句

SELECT检索表数据,必须至少给出两条信息--------想选择什么,以及从什么地方选择。

检索一个列

SELECT prod_name FROM products;

上述语句利用SELECT语句从products表中检索一个名为prod_name的列

检索多个列

SELECT prod_id,prod_name,prod_price FROM products;

检索所有的列

SELECT  * FROM products;

检索不同的行

SELECT vend_id FROM products;

select返回了14行,但是表中只有4个供应商,因为products表中列出了14个产品,如何检索有不同值的列表

SELECT DISTINCT vend_id FROM products;

限制结果

SELECT prod_name FROM products LIMIT 5;

SELECT prod_name FROM products LIMIT 5 , 5;

从第五行开始输出5行

第一个数位开始位置,第二个数为检索的行数

SELECT prod_name FROM products LIMIT 4 OFFSET 3;

从第三行开始,输出四行

使用完全限定输出表名

SELECT products.prod_name FROM products;

排序检索数据

排序数据

SELECT prod_name FROM products ORDER BY prod_name;

mysql对prod_name列以字母顺序排序

按多个排序

SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price , prod_name;

首先按照价格然后按照名称排序     作用,当价格相同的时候,会再按照名称来排序。

如果prod_price列中的数据所有值都是唯一的,则不会按照prod_name来排序

制定排序方向

ORDER BY默认是按照升序的方式排列,如果进行降序排列,就必须标出 DESC;

SELECT prod_id , prod_price ,prod_name FROM products ORDER BY prod_price DESC;

SELECT prod_id , prod_price ,prod_name FROM products ORDER BY prod_price DESC, prod_name;

先按照价格从高到底排序,价格相同的再按照名称升序排列。

与DESC相反的是ASC,ASC没有多大作用,因为默认就是ASC升序排列。

SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 2;

找出两个最贵的物品的值

过滤数据

使用where子句

SELECT prod_name ,prod_price FROM products WHERE prod_price = 2.50;

查询价格等于2.50的商品名字和价格

      操作符           说明
      =           等于
     <>          不等于
     !=          不等于
      <           小于
      >           大于
      <=           小于等于
      >=           大于等于
     BETWEEN           在制定的两个值之间

检查单个值

SELECT prod_name ,prod_price FROM products WHERE prod_name = 'fuses';

SELECT prod_name,prod_price FROM products WHERE prod_price <10;

SELECT vend_id , prod_name FROM products WHERE vend_id <> 1003;

查询供应商不是1003制造的所有产品

SELECT prod_name , prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;

查询价格在5和之间的商品名称和价格

数据过滤

组合where子句

SELECT prod_id , prod_price ,prod_name FROM products WHERE vend_id =1003 AND prod_price <=10;

SELECT prod_id , prod_price ,prod_name FROM products WHERE vend_id =1002 OR vend_id = 1003;

计算次序

SELECT prod_name , prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >=10;

从上面的结果来看,有两个值的结果小于10,显然返回的结果未按照预期的进行过滤,为什么会这样呢,原因是在于计算的次序,SQL在处理OR操作符前,优先处理AND操作符,当SQL看到上述where子句时,它理解为由供应商1003制造的任何价格都为10美元以上,包含10美元,或者由供应商1002提供的产品,不管价格。换句话说,由于AND的计算次序中优先级更高,操作符被错误的组合了。正确的操作方法:

SELECT prod_name , prod_price FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >=10;

IN 操作符

IN操作符来制定条件范围,范围中的每个条件都可以进行匹配。

SELECT prod_name , prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name;

IN和OR的用法有点类似,上面也可以这样写:

SELECT prod_name , prod_price FROM products WHERE vend_id=1002 OR vend_id=1003 ORDER BY prod_name;

NOT操作符

where子句中的not操作符的用法只有一个,那就是否定后它之后所有的任何条件

SELECT prod_name , prod_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;

上面用到的所有查询命令

SELECT prod_name FROM products;
SELECT prod_id,prod_name,prod_price FROM products;
SELECT * FROM products;
SELECT vend_id FROM products;
SELECT DISTINCT vend_id FROM products;
SELECT prod_name FROM products LIMIT ;
SELECT prod_name FROM products LIMIT , ;
SELECT prod_name FROM products LIMIT , ;
SELECT prod_name FROM products LIMIT OFFSET ;
SELECT products.prod_name FROM products;
SELECT prod_name FROM products ORDER BY prod_name;
SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price , prod_name;
SELECT prod_id , prod_price ,prod_name FROM products ORDER BY prod_price DESC;
SELECT prod_id , prod_price ,prod_name FROM products ORDER BY prod_price DESC, prod_name;
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT ;
SELECT prod_name ,prod_price FROM products WHERE prod_price = 2.50;
SELECT prod_name ,prod_price FROM products WHERE prod_name = 'fuses';
SELECT prod_name,prod_price FROM products WHERE prod_price <;
SELECT vend_id , prod_name FROM products WHERE vend_id <> ;
SELECT prod_name , prod_price FROM products WHERE prod_price BETWEEN AND ;
SELECT prod_id , prod_price ,prod_name FROM products WHERE vend_id = AND prod_price <=;
SELECT prod_id , prod_price ,prod_name FROM products WHERE vend_id = OR vend_id = ;
SELECT prod_name , prod_price FROM products WHERE vend_id = OR vend_id = AND prod_price >=;
SELECT prod_name , prod_price FROM products WHERE (vend_id = OR vend_id = ) AND prod_price >=;
SELECT prod_name , prod_price FROM products WHERE vend_id IN (,) ORDER BY prod_name;
SELECT prod_name , prod_price FROM products WHERE vend_id= OR vend_id= ORDER BY prod_name;
SELECT prod_name , prod_price FROM products WHERE vend_id NOT IN (,) ORDER BY prod_name;

mysql-3 检索数据(1)的更多相关文章

  1. Mysql必知必会 检索数据

    检索数据 SELECT 语句 为了使用SELECT检索表数据,必须至少给出两条信息--想选择什么,以及从什么地方选择 功能 语句 备注 检索单个列 SELECT col_1 FROM table_na ...

  2. MySQL 检索数据(SELECT)

    检索单个列  mysql> SELECT  列名  FROM  表名; 如下,从表products中检索prod_name列 mysql> SELECT  prod_name  FROM  ...

  3. MySQL 检索数据及提高检索速度的方法

    检索数据 mysql> SELECT [DISTINCT] 表名.列名,表名.列名,表名.列名 -- 使用通配符*表示所有列 DISTINCT表示返回不同的值 -> FROM 数据库名.表 ...

  4. MySQL必知必会 读书笔记三:检索数据和数据排序

    检索数据 SELECT语句 它的用途是从一个或多个表中检索信息. 为了使用SELECT检索表数据,必须至少给出两条信息--想选择什 么,以及从什么地方选择. 检索单个列 SELECT col_1 FR ...

  5. 《MySQL必知必会》检索数据,排序检索数据(select ,* ,distinct ,limit , . , order by ,desc)

    <MySQL必知必会>检索数据,排序检索数据 1.检索数据 1.1 select 语句 为了使用SELECT检索表数据,必须至少给出两条信息一想选择什 么,以及从什么地方选择. 1.2 检 ...

  6. mysql必知必会(四、检索数据,五、排序检索数据,六、过滤数据,七、数据过滤)

    四.select语句 1.检索单个列 select prod_name from products; 2.检索多个列 select prod_name, prod_price from product ...

  7. MySQL学习笔记(二)——检索数据与过滤数据

    检索数据和过滤数据也就是平时用到最多的增删改查里面的查了. 一.数据检索 检索单个列: select column from table; 检索多个列:     select colunm1,colu ...

  8. MySQL之对数据库库表的字符集的更改

    数据字符集修改步骤: 对于已有的数据库想修改字符集不能直接通过 "alter database character set *"或 "alter table tablen ...

  9. Vusual C++连接Mysql和从MySql中取出数据的API介绍

    .1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const ...

随机推荐

  1. 【Java每日一题】20161114

    package Nov2016; import java.io.Serializable; // V1.0版 public class Ques1114 implements Serializable ...

  2. [译]WebVR技术方案草案

    注:基于官方的.bs规范专用格式进行了翻译,但结果发现无法编译成html格式,所幸基本兼容.markdown格式. 中文翻译项目地址:https://github.com/web3d/webvr-sp ...

  3. 由select * from table where 1=1中的1=1说开数据库

    众多网站都有select * from table where 1=1此类语句的介绍,并且,针对该类语句,讲得实在是让人越看越迷茫(一个抄袭一个的,简直不像话),不知道是在说什么,导致很多新手不得要领 ...

  4. Glide.js:响应式 & 触摸友好的 jQuery 滑块插件

    Glide.js 是一款响应式和对触摸友好的 jQuery 滑块.基于 CSS3 转换实现,并在低版本浏览器降级处理.Glide.js 简单,重量轻,快速,适用于智能手机,平板电脑和台式机.它支持 s ...

  5. go语言条件语句 if else

    示例: if a < 5 { return 0 } else { return 1 } 关于条件语句,需要注意以下几点:  条件语句不需要使用括号将条件包含起来():  无论语句体内有几条语 ...

  6. Hybrid框架UI重构之路:一、师其长技以自强

    这两年在支撑公司的Hybrid框架的运维发展,让人确认这种移动开发方式确实是一条不错的路.混合应用这种开发方式降低开发难度,极大的提高开发效率,最重要的一点效果可以接近原生应用.框架的本身是需要持续不 ...

  7. HTML 文本格式化实例

    一,文本格式化:此例演示如何在一个 HTML 文件中对文本进行格式化. <html> <body> <b>This text is bold</b> & ...

  8. Ruby学习心得之 Linux下搭建Ruby环境

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Ruby学习心得之 Linux下搭建Ruby环境1.前言2.Linux下安装Ruby环境 一 ...

  9. Eclipse CDT Linux下内存分析 补记

    常用工具汇总 http://www.ibm.com/developerworks/cn/linux/l-cn-memleak/ 常用的内存分析工具 http://en.wikipedia.org/wi ...

  10. Android悬浮窗实现 使用WindowManager

    Android悬浮窗实现 使用WindowManager WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得  ...