再跟SQL谈一谈--高级篇(一)
①TOP
②LIKE
③IN
1.SELECT KEYWORD
①TOP 語法: SELECT TOP number|percent column_name FROM table_name
number|percent:返回记录的个数或百分比,|:二选一。
column_name:列名,全部列用*、多个列用逗号隔开;
・从“Person”表里选取头两条记录 ⇒ SELECT TOP 2 * FROM Person
・从“Person”表里选取50%的记录 ⇒ SELECT TOP 50 PERCENT * FROM Person
②LIKE 語法: SELECT column_name FROM table_name WHERE column_name LIKE|NOT LIKE pattern
LIKE|NOT LIKE:筛选列中的指定模式,或筛选指定模式之外的列。
pattern:匹配列内容的指定模式。
⇒% :替代一个或多个字符 例: abc% 以abc为开头的内容 如:abcd abcde abcec abc
%abc 以abc为结尾的内容 如:daabc ddabc abc
⇒_ : 仅替代一个字符 例: ab_ 以ab开头加任一字符的内容 如:abc abd abg
_bc 第一个字符之后是以bc结尾的内容 如:abc hbc nbc
⇒[charlist] : 字符列中的任何单一字符 例: _[abc] 两个字符,第一个字符之后是abc其中一个字符的内容 如:db da hc ja
[abc]_ 两个字符,第一个字符是abc中的一个后续接任一字符的内容 如:ad an bd ca
[abc]__ 三个字符,第一个字符是abc中的一个后续接任意两个字符的内容 如:add and bod cad
%[abc] 以abc任一字符结尾的内容 如:asdfa qwerb zxcvc
[abc]% 以abc任一字符开头的内容 如:azxcv basdf cqwere
⇒[^charlist] | [!charlist]:不在字符列中的任何单一字符 例: _[^abc] 两个字符 后一字符不可为abc中的字符
[^abc]_ 两个字符 前一字符不可为abc中的字符
[^abc]__ 三个字符 第一个字符不可为abc中的字符
%[^abc] 不可以abc中的内容结尾的内容
[^abc]% 不可以abc中的内容开头的内容
③IN 語法: SELECT column_name FROM table_name WHERE column_name IN (value1,value2,...)
・从"Person"表中选取姓氏为 Adams 和 Carter 的人 ⇒ SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')
④BETWEEN...AND 操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
語法: SELECT column_name FROM table_name WHERE column_name BETWEEN minValue AND maxValue
・以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人 ⇒ SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND
'Carter'
・显示"Adams"和 "Carter"之外的人,请使用 NOT 操作符 ⇒ SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'
⑤ALIAS 为列名称和表名称指定别名
・SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p
, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
・SELECT LastName AS Family
, FirstName AS Name
FROM Persons
2.SELECT JOIN
①JOIN | INNER JOIN 根据两个或多个表中的列之间的关系,从这些表中查询数据
Persons表:
Id_P | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
Orders表:
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
※INNER JOIN 与 JOIN 是相同的
②LEFT JOIN 会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
SELECT column_name FROM table_name1
LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
例:LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Bush | George |
③RIGHT JOIN 会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
SELECT column_name FROM table_name1
RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
例:RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
34764 |
④FULL JOIN 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行
SELECT column_name FROM table_name1
FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
例:RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
FULL JOIN Orders ON Persons.Id_P=Orders.Id_P
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Bush | George | |
34764 |
3.SELECT INTO & UNION
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中、常用于创建表的备份复件或者用于对记录进行存档。
制作 "Persons" 表的备份复件 ⇒ SELECT
* INTO
Persons_backup FROM Persons
IN 子句可用于向另一个数据库中拷贝表 ⇒ SELECT
* INTO
Persons IN
'Backup.mdb' FROM Persons
创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息 ⇒
SELECT
Persons.LastName,Orders.OrderNo INTO
Persons_Order_Backup FROM
Persons INNER JOIN
Orders ON
Persons.Id_P=Orders.Id_P
UNION &
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION ALL
列出所有在中国和美国的不同的雇员名 ⇒ SELECT E_Name FROM Employees_China UNION
SELECT E_Name FROM Employees_USA
再跟SQL谈一谈--高级篇(一)的更多相关文章
- 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景
大家好,我是melo,一名大三后台练习生 专栏回顾 索引的原理&&设计原则 欢迎关注本专栏:MySQL高级篇 本篇速览 在我们上一篇文章中,讲到了索引的原理&&设计原则 ...
- 当谈 SQL 优化时谈些什么?
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:孙银行 背景 Mysql数据库作为数据持久化的存储系统,在实际业务中应用广泛.在应用也经常会因为SQL遇 ...
- SQL注入攻击三部曲之高级篇
SQL注入攻击三部曲之高级篇 经过了入门篇和进阶篇的学习,相信诸位想要破解一般的网站是没有什么问题了,但是先别得意.正所谓学海无涯,技术的进步也是没有止境的.SQL注入是一个看起来简单,但是变数很多的 ...
- sql之浅谈视图的作用
[数据库]☆★sql之浅谈视图的作用 在一个项目的实际开发过程中牵涉到复杂业务的时候,我们不可避免的须要使用中间表来进行数据连接,有的同学就说了,我能够採用Hibernate进行主外键进行关联啊?多对 ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...
- 【转载】Spark性能优化指南——高级篇
前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...
- ORM查询语言(OQL)简介--高级篇(续):庐山真貌
相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...
- ORM查询语言(OQL)简介--高级篇:脱胎换骨
相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...
- 【转】【技术博客】Spark性能优化指南——高级篇
http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...
随机推荐
- C#中使用DLL文件
首先,我们需要在C++程序中导出DLL文件.我使用的是Visual Studio开发,把项目"属性"中的“配置类型”改为"动态库dll",然后添加如下导出代码: ...
- 问题-File not "controls.res"(XE2+Win7虚拟机)
问题现象:我在Win7的虚拟机中安装XE2,前提是原来的系统上有D2007,安装后,新建个工程,F9报"File not controls.res".百思不得其解. 问题原因:因为 ...
- bzoj3261 可持久化trie
容易想到题解. 总结一下区间异或和题: 1.转化成trie 2.注意空间稍微开大 3.不要一个数右移31位 4.考虑开头要不要插一个零 5.注意可持久get的时候区间是左开右闭,但这样会变成x-2,x ...
- Android 命名规范和编码规范
简明概要 多写注释 一.关于命名规范 对于开发项目来说肯定是要有统一的规范,然而命名规范需要做到哪几点呢? 答: 首先,不能反人类. 再来就是,要望文而知其意. 下面就来说说具体该怎么去规范我们的代 ...
- EASYUI- EASYUI左移右移 GRID中值
EASYUI左移右移 GRID中值 $("#addAll").click(function(){ var ids = []; var names = []; var srcrows ...
- R语言-Knitr包的详细使用说明
R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...
- (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录 (Map)在原有世界杯Map 的基础上,增加如下功能: 读入一支球队的名字,输出该球队夺冠的年份列表。 例如,读入“巴西”,应当输出 1958 1962 1970 1
package homework001; import java.util.HashMap; import java.util.Scanner; public class Map { public s ...
- jeewx的使用_01 接入和验证
jeewx是java语言的用于开发微信公共平台的一个框架,有人说很臃肿,但个人感觉还不错,仁者见仁智者见智吧, 下面简单介绍工作原理: 1.下载 要使用jeewx需要先下载其源码 jeewx介绍:ht ...
- IOS开发常用技术网站
IOS常用网站: 1.http://www.cocoachina.com 2.http://oschina.net 3.http://code4app.com
- .NET世界各成员之间的关系
相信看到这篇文章的人,心中肯定有这样的想法:ODBC.OLEDB.ADO.ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来. 先说ODBC,官方的 ...