SQL笔记

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/52296732

SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。

  • DML(Data Manipulation Language)数据操作语言,用于检索或者修改数据
  • DDL(Data Definition Language)数据定义语言,用于定义数据的结构, 比如 创建、修改或者删除数据库对象。
  • DCL(Data Control Language)数据控制语言,用于定义数据库用户的权限

DML

  • SELECT
  • INSERT
  • UPDATA
  • DELETE

DDL

  • CREATE TABLE
  • ALTER TABLE
  • DROP TABLE
  • DROP INDEX

DCL

  • ALTER PASSWORD
  • GRANT
  • REVOKE
  • CREATE SYNONYM

SELECT语句

GROUP BY

集中所有的行在一起,它包含了指定列的数据及允许聚合函数来计算一个列或者多个列。

SELECT MAX(salary), dept FROM employee GROUP BY dept

HAVING

允许你为每一组指定条件,换句话说,可以根据你指定的条件来选择行。如果使用它,应该处在GROUP BY子句之后。

SELECT dept, avg(salary) FROM emplyee GROUP BY dept HAVING avg(salary) > 20000

ORDER BY

ASC = Ascending order —-这个是缺省的 DESC =Descending order 多列进行排序,列于列之间加上逗号。

组合条件和布尔运算符

  • AND/OR
  • IN/BETWEEN 相对应 NOT IN / NOT BETWEEN

JOIN子句

join允许你从两个表或者更多的表连接进行数据检索,而只需要用一个SELECT语句

SELECT customer_info.firstname, customer_info.lastname,purchase.itme FROM customer_info INNER JOIN purchase ON
customer_info.customer_number = purchase.customer_number
  • INNER JOIN

生成同时匹配表A和表B的record

  • FULL OUTER JOIN

生成表A和表B里的记录全集,包括两边都匹配的记录。如果有一边没有匹配的,缺失的这一边为null

  • left outer join

生成表A的所有记录,包括在表B里匹配的记录。如果没有匹配的,右边将是null

有篇很好的文章用韦恩图讲解join语句http://blog.jobbole.com/40443/,如图

索引

索引允许DBMS更快地访问数据,当查询以列为索引的时候搜索行,这样查询会快很多。

DISTINCT和排除复制

对于一个人买多件物品的只显示一行即可

SELECT DISTINCT SELLERID,OWNERLASTNAME, OWNERFIRSTNAME FORM ANTIQUES,ANTIQUEOWNERS WHERE SELLERID = OWNERID
ORDERBY OWNERLASTNAME,OWNERID

EXISTS 和 ALL

UNION 和 外部连接

显示多个查询的结果,组合他们的输出,使用UNION关键字。

SELECT buyerid FROM antiqueowners UNION SELECT ownerid FROM orders

使用UNION会进行自动复制排除,并且列数据类型匹配才能查询

SQL语句的执行顺序

FROM - WHERE - GROUP BY - HAVING - SELECT - DISTINCT - UNION - ORDER BY

SELECT A.x + A.y AS z
FROM A
WHERE z = 10 -- z 在此处不可用,因为SELECT是最后执行的语句!

SELECT语句规则: - 你仅能够使用那些能通过表引用而得来的字段; - 如果你有 GROUP BY 语句,你只能够使用 GROUP BY 语句后面的字段或者聚合函数; - 当你的语句中没有 GROUP BY 的时候,可以使用开窗函数代替聚合函数; - 当你的语句中没有 GROUP BY 的时候,你不能同时使用聚合函数和其它函数; - 有一些方法可以将普通函数封装在聚合函数中;

集合运算( set operation)

  • DISTINCT 在映射之后对数据进行去重
  • UNION将两个子查询拼接起来并去重
  • UNION ALL将两个子查询拼接起来但不去重
  • EXCEPT 将第二个子查询的结果中从第一个子查询中去掉
  • INTERSECT 保留两个子查询都有的结果并去重

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的知识天地

阿里员工揭秘:很多程序员离职,在小公司当领导,只动嘴不动手!

阿里巴巴是中国知名的互联网公司,每个人或多或少的都从淘宝上购买的物品,自从1998年成立到现在,里面人才济济,里面的程序员不仅工资非常的高,不少程序员年收入竟然...

16420
来自专栏java一日一条

华为、腾讯、阿里、网易员工下班时间大曝光,为什么赢不了他们

这年头,不加班都不好意思说自己是上班族的。但有一种行业的疯狂加班程度,已经逐渐成为加班领域的一颗新星——互联网行业从事者!

14430
来自专栏java一日一条

博君一笑

9520
来自专栏java一日一条

编程,从来都不晚:来自日本的82岁APP开发者

82岁的若宮正子第一次工作时,还是使用算盘来进行计算——而如今,她是世界上年纪最大的iPhone应用开发者之一,也是使得智能手机走入老年人生活的先驱者。

14920
来自专栏金融民工小曾

电商平台分账交易是怎么做的?

另一篇文章讲到了电商平台的“二清”模式,在实际中,很多互联网电商平台需要分账给上面的平台商户或者其他角色,如果从严格的“二清”界定上来讲部分是属于违规进行了“信...

28510
来自专栏java一日一条

盲式出轨,上流社会边缘人士,2018朋友圈流行词,哪个词说中了你?

11530
来自专栏java一日一条

面试中单例模式有几种写法

纠结单例模式有几种写法有用吗?有点用,面试中经常选择其中一种或几种写法作为话头,考查设计模式和coding style的同时,还很容易扩展到其他问题。这里讲解几...

12170
来自专栏程序员的知识天地

这些拍案惊奇的智障桥段,分明是在蔑视我作为程序员的debug

作为在网络高速发展的时代背景下成长起来的一代人,网络文学几乎伴随着我们的整个青春。

12920
来自专栏java一日一条

华为加班到底有多恐怖?

“我先说一下我的吧。昨天晚上好不容易11点之前搞完上线回到家,刚开门媳妇就叫到:你TMD给我站到阳台去!”

1.3K20
来自专栏java一日一条

我的编码习惯 - 参数校验和国际化规范

今天我们说说参数校验和国际化,这些代码没有什么技术含量,却大量充斥在业务代码上,很可能业务代码只有几行,参数校验代码却有十几行,非常影响代码阅读,所以很有必要把...

12310

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励