《SQL必知必会》总结
第2章 检索数据
第3章 排序检索数据
第4章 过滤数据
第5章 高级数据过滤
第6章 用通配符进行过滤
第7章 创建计算字段
第8章 使用数据处理函数
第9章 汇总数据
第10章 分组数据
第11章 使用子查询
第12章 联结表
第13章 创建高级联结
第14章 组合查询
第15章 插入数据
第16章 更新和删除数据
第17章 创建和操作表
第18章 使用视图
第19章 使用存储过程
第20章 管理实务处理
第21章 使用游标
第22章 了解高级SQL特性
// 从Products表中检索一个名为prob_name的列
SELECT prob_name FROM Products;
// 从Products表中检索多列
SELECT prob_name, prob_id, prob_price
FROM Products;
// 从Products表中检索所有的列
SELECT *
FROM Products;
第三章 排序检索数据
子句(clause): SQL语句由子句构成,通常由一个关键字加上所提供的数据组成
可用ORDER BY子句明确地排序用SELECT语句检索出的数据。应保证ORDER BY子句是SELECT语句中最后一条子句。
SELECT prob_name
FROM Products
ORDER BY prob_name;
按多个列排序:
// 首先按价格排序,然后按名称排序
SELECT prob_id, prob_price, prob_name
FROM Products
ORDER BY prob_price, prob_name;
按列的位置排序:
SELECT prob_id, prob_price, prob_name
FROM Products
ORDER BY 2,3;
指定排序方向:(默认升序ASC, 降序使用DESC关键字)
SELECT prob_id, prob_price, prob_name
FROM Products
ORDER BY prob_price DESC; SELECT prob_id, prob_price, prob_name
FROM Products
ORDER BY prob_price DESC, prob_name;
SELECT prod_name, prob_price
FROM Products
WHERE prob_price=3.49;
WHERE子句操作符:
SELECT prob_name, prob_price
FROM Products
WHERE prob_price<=10; SELECT prob_name, vend_id
FROM Products
WHERE vend_id <> 'DLL01'; SELECT prob_name, prob_price
FROM Products
WHERE prob_price BETWEEN 5 AND 10; SELECT prob_name,
FROM Products
WHERE prob_price IS NULL;
第5章:高级数据过滤
组合WHERE子句:以AND子句的方式或OR子句的方式使用
SELECT vend_id,prob_price, prob_name
FROM Products
WHERE vend_id='DLL01' AND prob_price<=4; SELECT vend_id,prob_price, prob_name
FROM Products
WHERE vend_id='DLL01' OR vend_id='BRS01'; // 悠闲处理AND操作符
SELECT prob_price, prob_name
FROM Products
WHERE vend_id='DLL01' OR vend_id='BRS01'
AND prob_price<=4; SELECT prob_price, prob_name
FROM Products
WHERE (vend_id='DLL01' OR vend_id='BRS01' )
AND prob_price<=4;
IN操作符指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值得有逗号分隔的清单,全都在圆括号中。功能与OR相当。优点:
SELECT prob_name, prob_price
FROM Products
WHERE vend_id IN ('DLL01','BES01')
ORDER BY prob_name;
SELECT prob_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prob_name;
第六章 用通配符进行过滤
LIKE操作符:在搜索子句中使用通配符
通配符(wildcard):用来匹配值的一部分的特殊字符
搜索模式(search pattern)由字面值、通配符或两者组合构成的搜索条件
1)百分号(%)通配符:任何字符出现任意次数
SELECT prob_id, prob_name
FROM Prducts
WHERE prob_name LIKE 'Fish%';
2)下划线(_)通配符:只匹配单个字符;(%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少)
SELECT prob_id, prob_name
FROM Prducts
WHERE prob_name LIKE '__ inch';
3)方括号([])通配符:指定一个字符集,必须匹配指定位置的一个字符
// [JM]匹配任何以J或M开都的字符串
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact; //可以使用前缀字符^否定
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%'
ORDER BY cust_contact;
第7章 创建计算字段
//返回表中客户的总数
SELECT COUNT(*) AS num_cust
FROM Customers; //只对具有电子邮件地址的客户计数
SELECT COUNT(cust_email) AS num_cust
FROM Customers;
MAX() 函数:返回指定列中的最大值
SELECT MAX(prob_price) AS max_price
FROM Products;
SELECT MIN(prob_price) AS min_price
FROM Products;
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num=20005;
组合聚集函数:
SELECT cust_id, COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*) >=2;
SELECT cust_id
FROM Orders
WHERE order_num IN (SELECT order_num
FROM OrderItems
WHERE prob_id='RGAN01');
作为计算字段使用子查询
SELECT cust_name,
cust_state,
(SELECT COUNT(*)
FROM Orders
WHERE Orders.cust_id=Customers.cust_id) AS
orders
FROM Customers
ORDER BY cust_name;
SELECT vend_name, prob_name, prob_price
FROM Vendors, Products
WHERE Vendors.vend_id=Products.vend_id;
SELECT prob_name, vend_name, prod_price,quantity
FROM OrderItems, Products, Vendors
WHERE Products.vend_id=Vendors.vend_id
AND OrderItems.prob_id=Products.prob_id
AND order_num=20007;
SELECT cust_name, cust_contact
FROM Customers AS C, Order AS O, OrderItems AS OI
WHERE C.cust_id=0.cust_id
AND OI.order_num=O.order_num
AND prob_id='RGAN01';
使用不同类型的联结:自联结、 自然联结、外部联结
1)自联结:
问题: 发送一封信件给为JIM Jones所在的公司工作的所有客户,需要首先找出Jim Jones工作的公司,然后找出为此公司工作的客户.
方法一:子查询,返回Jim Jones工作的公司的cust_name
SELECT cust_id, cust_name, cust_contact
FROM Customers
WHERE cust_name=(SELECT cust_name
FROM Customers
WHERE cust_contact='Jim Jones');
SELECT c1.cust_id, c1.cust_name, c1.cust_contact
FROM Customers AS c1, Customers AS c2
WHERE c1.cust_name=c2.cust_name
AND c2.cust_contact='Jim Jones';
《SQL必知必会》总结的更多相关文章
- 《FLASH PROGRAMMING 那些事》总结
注明来自 http://www.ssdfans.com/?p=5589 以MLC为例: 对FGF(Floating Gate Flash)技术的,MLC programming一般分两步走:先prog ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- [原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法
MDK开发环境从V4升级到V5后,支持包不再是集成到开发环境当中,而是封装在PACK中,需要自行安装,比较麻烦. 搭建MDK开发环境以及破解的方法,在前面的文章中有详细说明,这里不再赘述,有兴趣的可以 ...
- Turtelizer 2 provide JTAG Flash programming and debugging of ARM based boards via USB
http://www.ethernut.de/en/hardware/turtelizer/ Introducing Turtelizer 2 Overview Turtelizer 2 had be ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...
- Programming Internal Flash Over the Serial Wire Debug <SWD> Interface -- EFM32
1 Debug Interface Overview 1.1 Serial Wire Debug Serial Wire Debug (SWD) is a two-wire protocol for ...
- Error:Flash Download Failed-"Cortex-M3"
Error:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/H ...
- STM32F4读写内部FLASH【使用库函数】
STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多.平时写的代码,烧写完之后还有大量的剩余.有效利用这剩余的FLASH能存储不少数据.因此研究了一下S ...
- Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...
- Stm32_调试出现 Error:Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...
随机推荐
- 在ASPNETCORE中获得所有Action
在ASPNETCORE中获得所有Action 本文旨在记录自己在aspnetcore工作中需要获取所有Action,在查询了资料后进行了几种方法的记录.后期有发现其它方式再进行追加. 一.通过 反射 ...
- [转]Install ASP.NET MVC 4 for Visual Studio 2010
本文转自:https://docs.microsoft.com/en-us/aspnet/mvc/mvc4
- WebStorm 用法集合
1. 图片宽高提示.<img src="https://pic4.zhimg.com/8345475b687c83a71e0564419b0ac733_b.jpg" ...
- Vue指令(二)--数组的变动
1.数组更新数据,引起视图更新 数据驱动:数据发生变化,引起视图的变化 Vue在检测数组变化的时候,并不是直接重新渲染整个列表,而是最大化的复用Dom元素. 替换的数组中,含有相同元素的项是不会被重新 ...
- 关于eclipse的编码注释等Code Template设置
啥也不说直接放东西: 首先进入eclipse的preferences里的java 点击Insert variable可以自己设置需要的 1. 设置Files:点击edit, /** * <p&g ...
- Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))
在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...
- Hql语句转化为sql语句中文乱码问题
刚刚学习Hql语句就出现这一的问题,百度半天终于解决了,总结一下解决的方案: 出现中文乱码最可能的原因是hibernate配置文件配置的问题 1.检查url路径是否指定字符集为UTF-8 <pr ...
- null id in com.rocky.** entry 错误处理
1. 概述 使用hibernate往mysql数据库插入记录出错如下 10:37:57,364 ERROR [AssertionFailure] an assertion failure occure ...
- 新手必需用!大道至简的前端编辑器Sublime Text
很多人在进入学习前端的时候(包括我自己),除了选择学习合适的技术,还需要一个得(自)心(己)应(喜)手(欢)的开发工具,一个得心应手的开发工具除了可以令你的效率大大提高,也可以令你在写代码的时候,心情 ...
- 10分钟学会Less开发环境搭建与初体验
Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Le ...