MYSQL学习笔记(六)之子查询
2015-07-13 16:05
645 查看
子查询的位置:SELECT中,FROM后,WHERE后,GROUP BY和ORDER BY 中无实用意义。
分类:
可以按子查询返回的结果进行分类:
标量子查询,返回的结果是一个标量,字符,字符串或非字符串
行子查询:返回的结果是一行记录
列子查询:返回的结果是某字段的一组值
表子查询:返回的结果是一张表的值
可以使用的操作符有> < >= <= <> (!=)
可以使用的关键字有ANY,SOME,IN,ALL,EXISTS,NOT EXISTS等等。
(1)ANY关键字是任意意思,ALL关键字是全部的意思。
假设ANY内部的查询语句返回的结果个数是3个,
SELECT ...FROM...WHERE a>ANY(....)
等价于SELECT...FROM...WHERE a>result1 or b>result2 or c>result3;
返回的结果一定是大于结果中最小值的。
ALL关键字和ANY关键字类似,只不过上面的OR(逻辑或)改为AND(逻辑与)那么返回的结果一定是大于结果中的最大值。
SOME,ANY,IN关键字的使用的功能一样。
(2)子查询实例
在MYSQL中创建一张电脑商品表,表名为tdb_goods,代码如下:
创建表并显示表的结构如下:
往表中插入记录:
代码如下:
把记录插入到表中,查询可得:
分类:
可以按子查询返回的结果进行分类:
标量子查询,返回的结果是一个标量,字符,字符串或非字符串
行子查询:返回的结果是一行记录
列子查询:返回的结果是某字段的一组值
表子查询:返回的结果是一张表的值
可以使用的操作符有> < >= <= <> (!=)
可以使用的关键字有ANY,SOME,IN,ALL,EXISTS,NOT EXISTS等等。
(1)ANY关键字是任意意思,ALL关键字是全部的意思。
假设ANY内部的查询语句返回的结果个数是3个,
SELECT ...FROM...WHERE a>ANY(....)
等价于SELECT...FROM...WHERE a>result1 or b>result2 or c>result3;
返回的结果一定是大于结果中最小值的。
ALL关键字和ANY关键字类似,只不过上面的OR(逻辑或)改为AND(逻辑与)那么返回的结果一定是大于结果中的最大值。
SOME,ANY,IN关键字的使用的功能一样。
(2)子查询实例
在MYSQL中创建一张电脑商品表,表名为tdb_goods,代码如下:
CREATE TABLE IF NOT EXISTS tdb_goods( goods_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, goods_name VARCHAR(150) NOT NULL, goods_cate VARCHAR(40) NOT NULL, brand_name VARCHAR(40) NOT NULL, goods_price DECIMAL(15,3) UNSIGNED NOT NULL DEFAULT 0, is_show BOOLEAN NOT NULL DEFAULT 1, is_saleoff BOOLEAN NOT NULL DEFAULT 0 );
创建表并显示表的结构如下:
往表中插入记录:
代码如下:
INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('R510VC 15.6英寸笔记本','笔记本','华硕','3399',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Y400N 14.0英寸笔记本电脑','笔记本','联想','4899',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('G150TH 15.6英寸游戏本','游戏本','雷神','8499',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('X550CC 15.6英寸笔记本','笔记本','华硕','2799',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('X240(20ALA0EYCD) 12.5英寸超极本','超级本','联想','4999',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('U330P 13.3英寸超极本','超级本','联想','4299',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('SVP13226SCB 13.3英寸触控超极本','超级本','索尼','7999',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('iPad mini MD531CH/A 7.9英寸平板电脑','平板电脑','苹果','1998',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版)','平板电脑','苹果','3388',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(' iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版)','平板电脑','苹果','2788',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('IdeaCentre C340 20英寸一体电脑 ','台式机','联想','3499',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Vostro 3800-R1206 台式电脑','台式机','戴尔','2899',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('iMac ME086CH/A 21.5英寸一体电脑','台式机','苹果','9188',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux )','台式机','宏碁','3699',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Z220SFF F4F06PA工作站','服务器/工作站','惠普','4288',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('PowerEdge T110 II服务器','服务器/工作站','戴尔','5388',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Mac Pro MD878CH/A 专业级台式电脑','服务器/工作站','苹果','28888',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(' HMZ-T3W 头戴显示设备','笔记本配件','索尼','6999',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('商务双肩背包','笔记本配件','索尼','99',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('X3250 M4机架式服务器 2583i14','服务器/工作站','IBM','6888',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('玄龙精英版 笔记本散热器','笔记本配件','九州风神','',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(' HMZ-T3W 头戴显示设备','笔记本配件','索尼','6999',DEFAULT,DEFAULT); INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('商务双肩背包','笔记本配件','索尼','99',DEFAULT,DEFAULT);
把记录插入到表中,查询可得:
相关文章推荐
- Mysql sql声明召回2 --正则表达式
- utf-8的mysql表笔记
- MySql中LongBlob类型字段分次读取生成本地文件
- Mac下安装MySQL
- MySql中in和exists效率对比
- mysql创建用户、授权、导入sql脚本
- MySQL 配置优化
- 支持连接池和结果集缓存的MySQL数据库JDBC通用框架的轻量级封装(一)——粗略实现
- sqlite导入mysql
- mysqldump使用语法
- sql学习笔记:navicat for mySql是使用
- mysql系统搭建互备DB(双主)记录
- mysql innodb 性能优化
- 解决mysql“Access denied for user 'root'@'IP地址'
- MySQL启动错误:Error writing file '/var/run/mysqld/mysqld.pid'
- MySQL乱码问题以及utf8mb4字符集---utf8mb4和utf8有什么区别? emoji表情与utf8mb4
- MySQL 中NULL和空值的区别
- MySQL学习笔记——安装及配置环境
- Mysql数据表导出数据为excel
- Bitnami WordPress无法修改MySQL root的默认密码的解决方法?