转自Github:enochtangg/quick-SQL-cheatsheet



目录

  1. 查找数据的查询
  2. 修改数据的查询
  3. 聚合查询
  4. 连接查询
  5. 视图查询
  6. 修改表的查询



1. 查找数据的查询

1.1 SELECT: 用于从数据库中选择数据

SELECT * FROM table_name;

1.2 DISTINCT: 用于过滤掉重复的值并返回指定列的行

 SELECT DISTINCT column_name;

1.3 WHERE: 用于过滤记录/行

 SELECT column1, column2 FROM table_name WHERE condition;

 SELECT * FROM table_name WHERE condition1 AND condition2;

 SELECT * FROM table_name WHERE condition1 OR condition2;

 SELECT * FROM table_name WHERE NOT condition;

 SELECT * FROM table_name WHERE condition1 AND (condition2 OR condition3);

 SELECT * FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);

1.4 ORDER BY: 用于结果集的排序,升序(ASC)或者降序(DESC)

 SELECT * FROM table_name ORDER BY column;

 SELECT * FROM table_name ORDER BY column DESC;

 SELECT * FROM table_name ORDER BY column1 ASC, column2 DESC;

1.5 SELECT TOP: 用于指定从表顶部返回的记录数

 SELECT TOP number columns_names FROM table_name WHERE condition;

 SELECT TOP percent columns_names FROM table_name WHERE condition;

 --并非所有数据库系统都支持SELECT TOP。 MySQL 中是LIMIT子句
SELECT column_names FROM table_name LIMIT offset, count;

1.6 LIKE: 用于搜索列中的特定模式,WHERE 子句中使用的运算符

% (percent sign) 是一个表示零个,一个或多个字符的通配符

_ (underscore) 是一个表示单个字符通配符

 SELECT column_names FROM table_nam
WHERE column_name LIKE pattern; pattern可以如下 LIKE ‘a%’ (查找任何以“a”开头的值) LIKE ‘%a’ (查找任何以“a”结尾的值) LIKE ‘%or%’ (查找任何包含“or”的值) LIKE ‘_r%’ (查找任何第二位是“r”的值) LIKE ‘a_%_%’ (查找任何以“a”开头且长度至少为3的值) LIKE ‘[a-c]%’(查找任何以“a”或“b”或“c”开头的值)

1.7 IN: 用于在 WHERE 子句中指定多个值的运算符

本质上,IN运算符是多个OR条件的简写

 SELECT column_names FROM table_name
WHERE column_name IN (value1, value2, …); SELECT column_names FROM table_name
WHERE column_name IN (SELECT STATEMENT);

1.8 BETWEEN: 用于过滤给定范围的值的运算符

 SELECT column_names FROM table_name
WHERE column_name BETWEEN value1 AND value2; SELECT * FROM Products
WHERE (column_name BETWEEN value1 AND value2) AND NOT column_name2 IN (value3, value4); SELECT * FROM Products WHERE column_name BETWEEN #01/07/1999# AND #03/12/1999#;

1.9 NULL: 代表一个字段没有值

 SELECT * FROM table_name
WHERE column_name IS NULL; SELECT * FROM table_name
WHERE column_name IS NOT NULL;

1.10 AS: 用于给表或者列分配别名

 SELECT column_name AS alias_name FROM table_name;

 SELECT column_name FROM table_name AS alias_name;

 SELECT column_name AS alias_name1, column_name2 AS alias_name2;

 SELECT column_name1, column_name2 + ‘, ‘ + column_name3 AS alias_name;

1.11 UNION: 用于组合两个或者多个 SELECT 语句的结果集的运算符

  • 每个 SELECT 语句必须拥有相同的列数
  • 列必须拥有相似的数据类型
  • 每个 SELECT 语句中的列也必须具有相同的顺序
 SELECT columns_names FROM table1
UNION SELECT column_name FROM table2;
  • UNION 仅允许选择不同的值, UNION ALL 允许重复

1.12 ANY|ALL: 用于检查 WHERE 或 HAVING 子句中使用的子查询条件的运算符

  • ANY 如果任何子查询值满足条件,则返回 true。
  • ALL 如果任何子查询值满足条件,则返回 true。
 SELECT columns_names FROM table1
WHERE column_name operator (ANY|ALL) (SELECT column_name FROM table_name WHERE condition);

1.13 GROUP BY: 通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,用于将结果集分组为一列或多列

 SELECT column_name1, COUNT(column_name2) FROM table_name
WHERE condition
GROUP BY column_name1
ORDER BY COUNT(column_name2) DESC;

1.14 HAVING: HAVING 子句指定 SELECT 语句应仅返回聚合值满足指定条件的行。它被添加到 SQL 语言中,因为WHERE关键字不能与聚合函数一起使用。

 SELECT COUNT(column_name1), column_name2 FROM table
GROUP BY column_name2
HAVING COUNT(column_name1) > 5;



2. 修改数据的查询

2.1 INSERT INTO: 用于在表中插入新记录/行

 INSERT INTO table_name (column1, column2) VALUES (value1, value2);

 INSERT INTO table_name VALUES (value1, value2 …);

2.2 UPDATE: 用于修改表中的现有记录/行

 UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition; UPDATE table_name
SET column_name = value;

2.3 DELETE: 用于删除表中的现有记录/行

 DELETE FROM table_name
WHERE condition; DELETE * FROM table_name;



3. 聚合查询

3.1 COUNT: 返回出现次数

 SELECT COUNT (DISTINCT column_name);

3.2 MIN() and MAX(): 返回所选列的最小/最大值

 SELECT MIN (column_names) FROM table_name
WHERE condition; SELECT MAX (column_names) FROM table_name
WHERE condition;

3.3 AVG(): 返回数字列的平均值

SELECT AVG (column_name) FROM table_name
WHERE condition;

3.4 SUM(): 返回数值列的总和

 SELECT SUM (column_name) FROM table_name
WHERE condition;



4. 连接查询

4.1 INNER JOIN: 内连接,返回在两张表中具有匹配值的记录

 SELECT column_names
FROM table1 INNER JOIN table2
ON table1.column_name=table2.column_name; SELECT table1.column_name1, table2.column_name2, table3.column_name3
FROM
(
(table1 INNER JOIN table2 ON relationship)
INNER JOIN
table3
ON relationship
);

4.2 LEFT (OUTER) JOIN: 左外连接,返回左表(table1)中的所有记录,以及右表中的匹配记录(table2)

 SELECT column_names
FROM table1 LEFT JOIN table2
ON table1.column_name=table2.column_name;

4.3 RIGHT (OUTER) JOIN: 右外连接,返回右表(table2)中的所有记录,以及左表(table1)中匹配的记录

 SELECT column_names
FROM table1 RIGHT JOIN table2
ON table1.column_name=table2.column_name;

4.4 FULL (OUTER) JOIN: 全外连接,全连接是左右外连接的并集. 连接表包含被连接的表的所有记录, 如果缺少匹配的记录, 以 NULL 填充。

 SELECT column_names
FROM table1 FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

4.5 Self JOIN: 自连接,表自身连接

 SELECT column_names
FROM table1 T1, table1 T2
WHERE condition;



5. 视图查询

5.1 CREATE: 创建视图

 CREATE VIEW view_name
AS
SELECT column1, column2
FROM table_name WHERE condition;

5.2 SELECT: 检索视图

 SELECT * FROM view_name;

5.3 DROP: 删除视图

 DROP VIEW view_name;



6. 修改表的查询

6.1 ADD: 添加字段

 ALTER TABLE table_name ADD column_name column_definition;

6.2 MODIFY: 修改字段数据类型

 ALTER TABLE table_name MODIFY column_name column_type;

6.3 DROP: 删除字段

 ALTER TABLE table_name DROP COLUMN column_name;



Review: Basic Knowledge about SQL的更多相关文章

  1. Review: Basic Knowledge about JavaScript 1

    JavaScript shanzm

  2. Review: Basic Knowledge about WebForm

    Asp.net shanzm

  3. NLP related basic knowledge with deep learning methods

    NLP related basic knowledge with deep learning methods  2017-06-22   First things first >>> ...

  4. Python基础知识(Basic knowledge)

    Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...

  5. Bat:Basic knowledge(同时运行多条命令,连接SqlServer执行sql,单个bat打开多个tomcat,cmd切换命令行编码,根据PID结束端口号)

    1.Windows7环境下命令行一次运行多条命令 Windows7命令行(cmd)下,如果想一次运行多条命令可能用到的连接符个人了解到的有三个:&&,||和&. aa & ...

  6. 计算机基础知识 一 Basic knowledge of computers One

    计算机硬件由CPU(Central Processing Unit).存储器.输入设备.输出设备组成. CPU通常由控制单元(控制器)和算数逻辑单元(运算器)组成. 运算器:负责进行算数运算和逻辑运算 ...

  7. Android Studio accelerator key(shortcut)& Basic knowledge

    shift + F6 重构(选文件,ok->下面的控制台,do refactor option + return 快速修复 Activity@Extra() Intent: @FragmentA ...

  8. NoSql basic knowledge

    The big picture to keep in mind first is: There are lots of articles and resources out there: http:/ ...

  9. [Tango] Basic Knowledge

    Project Tango类设备能够给开发者在哪些领域带来机会. 室内导航*:室内GPS信号的缺失,使得Project Tango设备会成为室内导航重要应用场景之一.有了它,你就不会在不熟悉的室内商场 ...

随机推荐

  1. [Swift]LeetCode940. 不同的子序列 II | Distinct Subsequences II

    Given a string S, count the number of distinct, non-empty subsequences of S . Since the result may b ...

  2. 使用(POI)SAX处理Excel大文件,防止内存溢出

    POISAXReader h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-chi ...

  3. Python爬虫入门教程 27-100 微医挂号网专家团队数据抓取pyspider

    1. 微医挂号网专家团队数据----写在前面 今天尝试使用一个新的爬虫库进行数据的爬取,这个库叫做pyspider,国人开发的,当然支持一下. github地址: https://github.com ...

  4. Zookeeper~Linux环境下的部署

    介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  5. 从0打卡leetcode之day 3 -- 最大子序列和

    前言 就有要把leetcode的题刷完,每天一道题,每天进步一点点 从零打卡leetcode之day 3 题目描述: 给定一个int类型的数组,求最大子序列的和. 也就是说,从这个数组中截取一个子数组 ...

  6. Chapter 5 Blood Type——12

    I blinked, my mind going blank. Holy crow, how did he do that? 我眨着眼睛,心里一片空白.天哪,他是怎么做到的? "Er, wh ...

  7. Tapestry3.0开发概论

    一.TAPESTRY技术的综述. tapestry是平行于struts/Spring MVC/webwork /jsf等开发工具的语言.tapestry是基于组件的开发工具.它具有组件的可重用性.因为 ...

  8. Magicodes.NET框架之路——产品之路(谈谈产品管理)

    虽然Magicodes.NET现在还不属于产品,但是却不妨碍她想成为产品的心. 为什么突然有了此篇,这篇不是空穴来风,而是我思考良久的结果: 为了让大家知道我在干什么,我想干什么,我将要干什么还有我干 ...

  9. Python机器学习笔记 异常点检测算法——Isolation Forest

    Isolation,意为孤立/隔离,是名词,其动词为isolate,forest是森林,合起来就是“孤立森林”了,也有叫“独异森林”,好像并没有统一的中文叫法.可能大家都习惯用其英文的名字isolat ...

  10. mysql数据插入前判断是否存在

    今天在对一些抓取到的数据做插入的时候,因为使用了定时器,每间隔几分钟会抓取一次,导致很多数据插入的是重复数据,为了解决这个问题, 一般是在插入之前先通过一个标识去查询表数据看是否已经有了,没有再执行插 ...