SQL高级语法学习总结(一)
基础语法呢,就是简单的对行列进行增删改查,看上一篇。SQL基础语法学习总结,高级用法无非是条件更多,能实现的需求更多,其中涉及到非常多的关键字,本篇博客就进行一下总结。本文所有用法均在mysql环境下测试通过。其他数据库可能某些关键字会有不同。
SQL SELECT LIMIT 子句
SELECT LIMIT 子句用于规定要返回的记录的数目。
SELECT LIMIT 子句对于拥有数千上万条记录的大型表来说,是非常有用的。
SELECT column_name(s)
FROM table_name
LIMIT number;
SQL LIKE 语法
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SQL 通配符
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
通配符可用于替代字符串中的任何其他字符。
SELECT * FROM table_name
WHERE column_name LIKE 'pattern%';
查询出以pattern开头的数据。
SELECT * FROM table_name
WHERE column_name LIKE 'pattern_';
查询出以pattern开头,任意一个字符结尾的数据。
SQL IN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
IN 操作符允许您在 WHERE 子句中规定多个值。
SQL BETWEEN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL 别名
列的 SQL 别名语法
SELECT column_name AS alias_name
FROM table_name;
表的 SQL 别名语法
SELECT column_name(s)
FROM table_name AS alias_name;
通过使用 SQL,可以为表名称或列名称指定别名。
基本上,创建别名是为了让列名称的可读性更强。
SQL JOIN
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
不同的 SQL JOIN
四种不同的 SQL JOIN 类型:
- INNER JOIN:如果表中有至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:只要其中一个表中存在匹配,则返回行
SQL INNER JOIN 语法
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
INNER JOIN 关键字在表中存在至少一个匹配时返回行。注意:INNER JOIN 与 JOIN 是相同的哦。便于理解,逻辑关系如下图,简单的来说就是返回相交的部分。
SQL LEFT JOIN 语法
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。便于理解,逻辑关系如下图,简单来说就是返回整个左表,右表没有的话会返回NULL。
SQL RIGHT JOIN 语法
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。便于理解,逻辑关系如下图,刚好和LEFT JOIN 是相反的。
SQL FULL OUTER JOIN 语法
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。便于理解,逻辑关系如下,简单来说就是返回两个表的所有数据。
SQL UNION 操作符
SQL UNION 语法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SQL INSERT INTO SELECT 语法
我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2
SELECT * FROM table1;
或者我们可以只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
通过 SQL,可以从一个表复制信息到另一个表。
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。
貌似写起来东西有点多,我就分成两篇文章来写,看到这想接着看的点下面的标题。
SQL高级语法学习总结(一)相关推荐
- SQL基础语法学习总结
本篇博客对于sql的基础语法做一个总结,学的东西太多太杂,总是不能记住太多东西,所以很多东西,会用,但是背不下来,毕竟不可能把所有语法和关键字都背完啊,本篇文章呢就用通俗易懂的话做一个基础知识的总结. ...
- sql高级语法之窗口函数调用
sql高级语法之窗口函数调用 创建表 DENSE_RANK() RANK() ROW_NUMBER() LEAD() DENSE_RANK():为组内值生成连续排序号,其中,相同值具有相同序号 LAG ...
- sql高级语法之case语句
sql高级语法之case语句 1.创建数据库 2.创建表 3.CASE语句 语法格式1 示例 语法格式2 示例 1.创建数据库 create DATABASE advanced_prac; use a ...
- Oracle PL/SQL基础语法学习13:比较运算符
系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...
- sql高级语法之IF、IFNULL
IF语句 语法格式 IF(expr1,expr2,expr3) 当expr1为true,IF(expr1,expr2,expr3)返回结果为expr2,否则返回expr3 示例 sql语句 SELEC ...
- mysql 高级语法_3、sql高级语法(一)
1.规定要返回的数目 mysql中 #从websites表中返回5条记录,没有5条记录则返回全部 select * from websites limit 5; 2.like语法 #1 筛选出name ...
- linq to sql 行转列_SQL进阶:SQL高级编程语法实例
之前写过的文章: canhui87:Oracle数据统计必会语法知识zhuanlan.zhihu.com 主要是告诉大家学习SQL高级编程的参考路径,现在把书里简单的实例代码整理出来,方便以后随时查 ...
- Postgresql学习笔记-高级语法篇
Postgresql学习笔记-高级语法篇 Postgresql 约束 Postgresql约束用于规定表中的数据规则. 如果存在违反约束的数据行为,行为会被约束终止. 约束可以在创建表的时候就规定(通 ...
- sql azure 语法_在Azure Data Studio中学习用于SQL Notebook的Markdown语言
sql azure 语法 Microsoft supports SQL Notebooks in Azure Data Studio. It is an exciting feature that a ...
最新文章
- html div坐标定位,html div位置和显示
- 独家 | 将时间信息编码用于机器学习模型的三种编码时间信息作为特征的三种方法...
- 《R语言初学指南》一2.3 找到R脚本中的错误
- 【自动驾驶】毫米波雷达相关知识专题
- laravel5.8笔记六:公共函数和常量设置
- linux命令查找行数命令,Linux中用grep命令来搜索单词及统计匹配的行数
- 社交背水一战?校园日记背后,支付宝野心你真能懂?
- A customized combobox with JQuery
- Git常用命令——远程操作
- 数据增长率怎么算_2019 年“泰迪杯”数据分析职业技能大赛A题 超市销售数据分析...
- 20年薪水的经典忠告
- day31-python阶段性复习五
- input accept属性控制选择文件类型
- 移动端车牌识别,小功能大作用
- 网线 - RJ45接口线序
- android加音乐歌词代码,Android简易音乐播放器实现代码
- freeradius mysql nas_freeradius+mysql+交换机认证
- 安卓pdf阅读器_手把手教你选购电子书阅读器!(Kindle/掌阅电子纸/文石电子书/小米电纸书……)...
- mysql读写分离实现方式_MySQL实现读写分离的两种经典方案
- 轻量化神经网络专题文献综述