1.SELECT KEYWORD

  ①TOP

  ②LIKE

  ③IN

  ④BETWEEN...AND

  ⑤ALIAS

2.SELECT JOIN

  ①JOIN | INNER JOIN

  ②LEFT JOIN

  ③RIGHT JOIN

  ④FULL JOIN

3.SELECT INTO & UNION


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 ALL  UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

列出所有在中国和美国的不同的雇员名 ⇒ SELECT E_Name FROM Employees_China
                       UNION
                                   SELECT E_Name FROM Employees_USA

再跟SQL谈一谈--高级篇(一)的更多相关文章

  1. 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景

    大家好,我是melo,一名大三后台练习生 专栏回顾 索引的原理&&设计原则 欢迎关注本专栏:MySQL高级篇 本篇速览 在我们上一篇文章中,讲到了索引的原理&&设计原则 ...

  2. 当谈 SQL 优化时谈些什么?

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:孙银行 背景 Mysql数据库作为数据持久化的存储系统,在实际业务中应用广泛.在应用也经常会因为SQL遇 ...

  3. SQL注入攻击三部曲之高级篇

    SQL注入攻击三部曲之高级篇 经过了入门篇和进阶篇的学习,相信诸位想要破解一般的网站是没有什么问题了,但是先别得意.正所谓学海无涯,技术的进步也是没有止境的.SQL注入是一个看起来简单,但是变数很多的 ...

  4. sql之浅谈视图的作用

    [数据库]☆★sql之浅谈视图的作用 在一个项目的实际开发过程中牵涉到复杂业务的时候,我们不可避免的须要使用中间表来进行数据连接,有的同学就说了,我能够採用Hibernate进行主外键进行关联啊?多对 ...

  5. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  6. (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...

  7. 【转载】Spark性能优化指南——高级篇

    前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...

  8. ORM查询语言(OQL)简介--高级篇(续):庐山真貌

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  9. ORM查询语言(OQL)简介--高级篇:脱胎换骨

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  10. 【转】【技术博客】Spark性能优化指南——高级篇

    http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...

随机推荐

  1. hdu5785--Interesting(manacher)

    题意:求给定字符串的三元组(I,J,K)  使得S[i..j] 和 S[j+1..k] 都是回文串.求所有满足条件的三元组 ∑(i*k) 题解:求出以j为结尾的回文串起始位置的和记为lv[j],和以j ...

  2. 局域网Internet的共享

    局域网接入Internet,之后,在服务器安装共享代理软件,可以使客户机通过代理软件接入Internet. 局域网接入Internet 而目前几乎所有的浏览器.下载软件.信件收发软件都支持代理服务器. ...

  3. php获取post中的json数据的实现方法

    最近用到腾讯微博与PHP交互,腾讯把json数据post给PHP(腾讯推送数据时,每条数据是一个json格式的数据包,作为post的数据体(请注意post数据体没有参数,不是key=value形式,整 ...

  4. python 继承和多态

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...

  5. 转载Sql 获取数据库所有表及其字段名称,类型,长度

    转载原地址 http://www.cnblogs.com/Fooo/archive/2009/08/27/1554769.html SELECT (case when a.colorder=1 the ...

  6. 压缩UI深度的代码实现

    记录一下,或许同样使用深度的NGUI以后会用到. 目前的项目的UI是用Stage3D实现的,采用了类似NGUI填写深度来确定覆盖关系,但同时可以使用的深度是有一个固定范围的,导致的问题是如果UI过多深 ...

  7. 多年的.NET开发,也只学会了这么几招

    折腾了这么多年的.NET开发,也只学会了这么几招 软件开发不是生活的全部,但是好的生活全靠它了   随着工作年龄逐渐增加,身边的重担也越来越多.以前可以在公司加班到晚上10点,现在不行了.以前可以通宵 ...

  8. shuffle 过程

    Shuffle描述着数据从map task输出到reduce task输入的这段过程(Shuffle的正常意思是洗牌或弄乱). 以下是官网的流程图: 从最基本的要求来说,我们对Shuffle过程的期望 ...

  9. 剑指OFFER之从1到n中出现1的次数(九度OJ1373)

    题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他.问题是:求出1~13的整数中1出现的次数,并算出100~130 ...

  10. js获取上传文件内容(未完待续)

    js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...