mysql的学习笔记(五)
1.子查询,出现在其他SQL语句的SELECT子句
SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);
第一个SELECT称为外层查询,第二个称为子查询,嵌套在内部的查询。称为子查询。可以包含多个关键字或条件
DISTINCT,GROUP BY.ORDER BY,LIMIT,函数等。子查询可以返回值可以是标量,一行,一列或子查询。
外层查询可以是SELECT,INSERT,UPDATE,SET或DO
(1).比较运算符的子查询。
=,>,<,>=,<=,<>,!=,<=>
SELECT * FROM t1 WHERE price>=(SELECT AVG(price) t1 )
(2).ANY SOME ALL子查询在返回多个结果时可用修饰
(3).IN的子查询
SELECT * FROM t1 WHERE price IN (SELECT * FROM t1 WHERE price>5000)
2.INSET.....SELECT插入
INSET t1(cate_names) SELECT goods_cate FROM tdb_goods_cate GROUP BY goods_cate
3.多表的更新
UPDATE table_references SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]..[WHERE where_condition]
UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate= cate_name SET goods_cate=cate_id;
4.多表更新一步到位
CREATE TABLE tdb_goods_brands( brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, brand_name VARCHAR(40) NOT NULL ) SELECT brand_name FROM tdb_goods GROUP BY brand_name;
5.连接,mysql在SELECT语句,多表更新,多表删除语句中支持JOIN操作。有相同字段的名字,起别名
(1).内连接 INNER JOIN。仅显示符合连接的记录。
使用ON关键字来设定连接条件,也可用WHERE来代替
SELECT goods_id,goods_name FROM tdb_goods t INNER JOIN tdb_goods_cate g ON t.cate_id= g.cate_id
(2).左外连接,显示左边的全部记录及右表符合连接条件的记录
SELECT goods_id,goods_name FROM tdb_goods t LEFT JOIN tdb_goods_cate g ON t.cate_id= g.cate_id
(3).右外连接,显示右表的全部记录及左表符合连接条件的记录
SELECT goods_id,goods_name FROM tdb_goods t RIGHT JOIN tdb_goods_cate g ON t.cate_id= g.cate_id
6.多表连接
SELECT goods_id,goods_name,cate_name,brand_name FROM tdb_goods g INNER JOIN tdb_goods_cates c ON g.cate_id=c. cate_id INNER JOIN tdb_goods_brands b ON g.brand_id=b.brand_id
7.自连接,顾名思义自己连接自己
数据准备
INSERT tdb_goods_types(type_name,parent_id) VALUES('家用电器',DEFAULT); INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑、办公',DEFAULT); INSERT tdb_goods_types(type_name,parent_id) VALUES('大家电',1); INSERT tdb_goods_types(type_name,parent_id) VALUES('生活电器',1); INSERT tdb_goods_types(type_name,parent_id) VALUES('平板电视',3); INSERT tdb_goods_types(type_name,parent_id) VALUES('空调',3); INSERT tdb_goods_types(type_name,parent_id) VALUES('电风扇',4); INSERT tdb_goods_types(type_name,parent_id) VALUES('饮水机',4); INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑整机',2); INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑配件',2); INSERT tdb_goods_types(type_name,parent_id) VALUES('笔记本',9); INSERT tdb_goods_types(type_name,parent_id) VALUES('超级本',9); INSERT tdb_goods_types(type_name,parent_id) VALUES('游戏本',9); INSERT tdb_goods_types(type_name,parent_id) VALUES('CPU',10); INSERT tdb_goods_types(type_name,parent_id) VALUES('主机',10);
SELECT s.type_id,s.type_name,t.type_name FROM tdb_goods_types s LEFT JOIN tdb_goods_types t ON s.parent_id=t.type_id;
8.多表删除
DELETE t1 FROM tdb_goods t1 LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_name)>=2) t2 ON t1.goods_name=t2.goods_name WHERE t1.goods_id>t2.goods_id
mysql的学习笔记(五)的更多相关文章
- MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)
知识点六:MySQL函数的创建(13) 内置函数: 自定义函数: 首先查看是否已经开启了创建函数的功能: SHOW VARIABLES LIKE ‘%fun%’; 如果变量的值是OFF,那么需要开启 ...
- MYSQL初级学习笔记五:连接查询!(视频序号:初级_37-41)
知识点七:连接查询(37-41) 什么是连接查询: 连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据.连接查询是同时查询两个或两个以上的表时使用的.当不同的表中存在相同意义的字段时 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
随机推荐
- 连接Redis后执行命令错误 MISCONF Redis is configured to save RDB snapshots
今天在redis中执行setrange name 1 chun 命令时报了如下错误提示: (error) MISCONF Redis is configured to save RDB snapsho ...
- Python3 requests与http.cookiejar的使用(cookie的保存与加载)
在学习Python之余,发现Python2与Python3 有很大的变化,之前使用urllib和cookielib来保存cookie,发现很繁琐,于是改用requests.发现cookielib在3. ...
- Java 读书笔记 (十五) Java 异常处理
捕获异常 使用try 和catch关键字可以捕获异常.try/catch 代码块放在异常可能发生的地方. try/catch 代码块中的代码称为保护代码 ,使用try/catch的语法如下: try ...
- Django—models相关操作
一.在django后台admin管理页面添加自己增加的表结构 通过终端命令:python3 manage.py makemigrations, python3 manage.py migrate 我们 ...
- CentOS7 安装Redis Cluster集群
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...
- 如何在ST官网下载STM32固件库
1.首先要注册一个ST账号,下载的时候需要. 2.找到工具与软件 3.进去之后选"产品列表" 4.在产品列表里选STM32微控制器软件,直接点下图标号2,不要点左边的加号 5.进去 ...
- 【CTF 攻略】CTF比赛中关于zip的总结
[CTF 攻略]CTF比赛中关于zip的总结 分享到: --> 本文首发于安全客,建议到原地址阅读,地址:http://bobao.360.cn/ctf/detail/203.html 前言 ...
- MATLAB——画图(经典)
今天我发现一个非常奇怪的事情,如果你喜欢一样东西或者说是要干一件事,并不一定要把它所在领域的所有都做好, 只要做好你喜欢的就可以了,正如现在的我,突然想学习MATLAB(想画图)那么你只要把一些基础的 ...
- solr6.6 导入索引数据
1.什么是core core是solr的一个索引库,可以理解为一个数据库,core可以根据需要,创建多个. 2.创建core 例如,创建一个core,名字叫mycore,就可以用一下命令: E:\so ...
- Spring Boot之WebSocket
一.项目说明 1.项目地址:https://github.com/hqzmss/test01-springboot-websocket.git 2.IDE:IntelliJ IDEA 2018.1.1 ...