mysql-3 检索数据(1)
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)的更多相关文章
- Mysql必知必会 检索数据
检索数据 SELECT 语句 为了使用SELECT检索表数据,必须至少给出两条信息--想选择什么,以及从什么地方选择 功能 语句 备注 检索单个列 SELECT col_1 FROM table_na ...
- MySQL 检索数据(SELECT)
检索单个列 mysql> SELECT 列名 FROM 表名; 如下,从表products中检索prod_name列 mysql> SELECT prod_name FROM ...
- MySQL 检索数据及提高检索速度的方法
检索数据 mysql> SELECT [DISTINCT] 表名.列名,表名.列名,表名.列名 -- 使用通配符*表示所有列 DISTINCT表示返回不同的值 -> FROM 数据库名.表 ...
- MySQL必知必会 读书笔记三:检索数据和数据排序
检索数据 SELECT语句 它的用途是从一个或多个表中检索信息. 为了使用SELECT检索表数据,必须至少给出两条信息--想选择什 么,以及从什么地方选择. 检索单个列 SELECT col_1 FR ...
- 《MySQL必知必会》检索数据,排序检索数据(select ,* ,distinct ,limit , . , order by ,desc)
<MySQL必知必会>检索数据,排序检索数据 1.检索数据 1.1 select 语句 为了使用SELECT检索表数据,必须至少给出两条信息一想选择什 么,以及从什么地方选择. 1.2 检 ...
- mysql必知必会(四、检索数据,五、排序检索数据,六、过滤数据,七、数据过滤)
四.select语句 1.检索单个列 select prod_name from products; 2.检索多个列 select prod_name, prod_price from product ...
- MySQL学习笔记(二)——检索数据与过滤数据
检索数据和过滤数据也就是平时用到最多的增删改查里面的查了. 一.数据检索 检索单个列: select column from table; 检索多个列: select colunm1,colu ...
- MySQL之对数据库库表的字符集的更改
数据字符集修改步骤: 对于已有的数据库想修改字符集不能直接通过 "alter database character set *"或 "alter table tablen ...
- Vusual C++连接Mysql和从MySql中取出数据的API介绍
.1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const ...
随机推荐
- Linux环境下安装Tigase XMPP Server
Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...
- [译]WebVR技术方案草案
注:基于官方的.bs规范专用格式进行了翻译,但结果发现无法编译成html格式,所幸基本兼容.markdown格式. 中文翻译项目地址:https://github.com/web3d/webvr-sp ...
- Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...
- Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)
利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...
- Close与Dispose的区别
Close与Dispose的区别: Close 是停业整顿,停业了,可以通过公关,再重开,物还是原来的物:只是关闭而已,没有释放真正的释放资源,可以重新打开:Close是关门Dispose是破产: D ...
- 网站开发中很实用的 HTML5 & jQuery 插件
这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...
- 使用 Promises 编写更优雅的 JavaScript 代码
你可能已经无意中听说过 Promises,很多人都在讨论它,使用它,但你不知道为什么它们如此特别.难道你不能使用回调么?有什么了特别的?在本文中,我们一起来看看 Promises 是什么以及如何使用它 ...
- 12款免费的响应式 WordPress 主题下载
响应式和现代设计风格的多用途 WordPress 主题能够非常灵活的适应所有设备.而高级主题能够更轻松定制,您可以从主题选项中禁用/启用响应模式.多用途的响应式设计的主题是最适合杂志网站,博客网站,想 ...
- sizzle源码分析 (3)sizzle 不能快速匹配时 选择器流程
如果快速匹配不成功,则会进入sizzle自己的解析顺序,主要流程如下: 总结流程如下: (1)函数sizzle是sizzle的入口,如果能querySelectAll快速匹配,则返回结果 (2)函数S ...
- JavaScript 开发者经常忽略或误用的七个基础知识点(转)
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...