1.SQL语法

(1)查询

  SQL查询是使用最多的,需要凭借结构、索引和字段类型等因素。大多数据库含有一个优化器(optimizer),把用户查询转换为可选形式,以提高查询效率。

基本语法为:

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
  [DISTINCT | DISTINCTROW | ALL]
  select_expression,...
  [INTO {OUTFILE | DUMPFILE} ’file_name’ export_options]
  [FROM table_references
  ][WHERE where_definition]
  [GROUP BY col_name,...]
  [HAVING where_definition]
  [ORDER BY {unsigned_integer | col_name | formula} ][ASC | DESC] ,...]
  [LIMIT ][offset,] rows]
  [PROCEDURE procedure_name] ]

  WHERE 从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:

  字段名操作表达式
  字段名操作字段名
  在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_condition中的操作可能选以下几种:
  = 检查是否相等
  != 检查是否不等

  > (或>=) 检查左边值是否大于(或大于等于)右边值
  < (或<=) 检查左边值是否小于(或小于等于)右边值
  [not] between 检查左边值是否在某个范围内
  [not] in 检查左边是否某个特定集的成员
  [not] like 检查左边是否为右边的子串
  is [not] null 检查左边是否为空值

可以用通配符_代表任何一个字符,%代表任何字符串。

(2)修改数据

  添加:insert [into] table_name [(column(s))]values (expression(s))

(3)UNION

union 指令表示将多个表合并显示,并不是连接显示。union只是把结果集并集起来,而不是交集出来。

union的限制是多个表的列必须是相同的种类

union 并起来的结果集自动执行distincd,去除重复的列。

union all 则把重复列保留,完整显示多个结果集的并集

实例如下:

执行:select date from t1 union all  select date from t2

date
2011-01-05 00:00:00.000
2011-01-07 00:00:00.000
2011-01-08 00:00:00.000
2011-01-08 00:00:00.000
2011-01-07 00:00:00.000
2011-01-10 00:00:00.000
2011-01-11 00:00:00.000
2011-01-12 00:00:00.000 可以看出完整的现实了8个行

  

(4)连接查询

左连接:LEFT JOIN 或 LEFT OUTER JOIN,返回左表的所有行和右表连接列所匹配的行。

右连接:RIGHT JOIN 或 RIGHT OUTER JOIN,返回右表的所有行和左表连接列所匹配的行。

内连接:典型的连接运算,使用=或<>之类的比较运算符,也叫相等连接和自然连接。仅返回匹配行。

全连接:也叫笛卡尔积和交叉连接。返回左表和右表所有的行组合。

例子:

假设有A,B两个表。  

表A记录如下:
aID aNum
a20050111
a20050112
a20050113
a20050114
a20050115 表B记录如下:
bID bName
2006032401
2006032402
2006032403
2006032404
2006032408 --------------------------------------------
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID 结果如下:
aID aNum bID bName
a20050111 1 2006032401
a20050112 2 2006032402
a20050113 3 2006032403
a20050114 4 2006032404
a20050115 NULL NULL (所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID 结果如下:
aID aNum bID bName
a20050111 1 2006032401
a20050112 2 2006032402
a20050113 3 2006032403
a20050114 4 2006032404
NULL NULL 8 2006032408 (所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID 结果如下:
aID aNum bID bName
a20050111 1 2006032401
a20050112 2 2006032402
a20050113 3 2006032403
a20050114 4 2006032404 结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------
PS:
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。 语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误 注:left和right是外连接,Inner是内连接。

  

SQL总结手册的更多相关文章

  1. SQL PL/SQL语法手册

    SQL  PL/SQL语法手册 目   录 第一部分  SQL语法部分 3 一. CREATE TABLE 语句 3 二. CREATE SEQUENCE语句 5 三. CREATE VIEW语句 6 ...

  2. PowerDesigner15.1创建模型及生成带注释sql操作手册

    转自:http://blog.csdn.net/huiwenjie168/article/details/7824029 一.创建模型 操作:file-->new Model… 快捷键:ctrl ...

  3. oracle 常用SQL语法手册

    Select 用途: 从指定表中取出指定的列的数据 语法: SELECT column_name(s) FROM table_name 解释: 从数据库中选取资料列,并允许从一或多个资料表中,选取一或 ...

  4. Oracle PL/SQL 编程手册(SQL大全)

    一.SQLPLUS 1引言 SQL命令 以下17个是作为语句开头的关键字: alterdroprevoke auditgrantrollback* commit*inse ...

  5. SQL注入手册

    英文版:链接: https://sqlwiki.netspi.com/ 中文版:链接: https://pan.baidu.com/s/1WWmjvYYnLC6_nItMVvUVig 密码: e98r ...

  6. 几个较好的SQL速查手册网址

    微软 SQL server 数据库开发手册 数据库设计 Transact-SQL 速查手册 数据库设计 MySQL 中文参考手册速查 结构化查询语言 SQL 学习手册速查 转自:http://www. ...

  7. sql server 数据库模型 备份 恢复 总结 备份脚本

    事务日志是可以基于时间点恢复的,必须在full或bulk_logged模式下 Alter database [DBName] set recover bulk_logged , then the fo ...

  8. SQL Server 127个SQL server热门资料汇总

      SQL Server 127个SQL server热门资料汇总     最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLSer ...

  9. sql学习书籍

    SQL 入门 在准备成为MySQL DBA之前,能熟练的编写SQL是一个必要条件.exists 和 join之间的等价转换:基本的行列转换:SQL 循环等的熟练掌握对之后的运维和调优工作都有很大的帮助 ...

随机推荐

  1. 错误:You can't specify target table 'xxx' for update in FROM clause的解决

    问题: 今天在MySQL数据库删除重复数据的时候遇到了一个问题.如下脚本: DELETE FROM tempA WHERE tid IN ( SELECT MAX(tid) AS tid FROM t ...

  2. android Android SDK Manager遇到的问题

    打开Android SDK Manager 1点击左上角的tools-->options:将Proxy Settings 里的HTTP Proxy Server和HTTP Proxy Port分 ...

  3. nginx把POST转GET请求解决405问题

    405重定向,然后把POST转GET upstream local { server 10.0.1.11:81; } server { listen 81; server_name testf.xxx ...

  4. windows Apache服务器配置

    Apache 64位可以而32位不可以 安装Apache服务 注意: 如果没有自己设置Apache服务名,后面都可不跟-n "服务名",即采用默认的服务名称. 必须用管理员提示符打 ...

  5. 手工搭建基于ABP的框架 - 工作单元以及事务管理

    一个业务功能往往不只由一次数据库请求(或者服务调用)实现.为了功能的完整性,我们希望如果该功能执行一半时出错,则撤销前面已执行的改动.在数据库层面上,事务管理实现了这种完整性需求.在ABP中,一个完整 ...

  6. hdu 5730 Shell Necklace [分治fft | 多项式求逆]

    hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治 ...

  7. SPOJ DIVCNT2 [我也不知道是什么分类了反正是数论]

    SPOJ DIVCNT2 - Counting Divisors (square) 题意:求 \[ \sum_{i=1}^n\sigma_0(i^2) \] 好棒啊! 带着平方没法做,考虑用其他函数表 ...

  8. iterator和for of 循环

    JavaScript 原有的表示"集合"的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就有了四种数据集合,用户还可以组合使用它们, ...

  9. create-react-app搭建的项目中添加bootstrap

    react-bootstrap是一个非常受欢迎的针对react封装过的bootstrap,它本身不包含css,所以也是需要使用bootstrap原生库. 在create-react-app建的项目目录 ...

  10. python脚本0b文件处理

    要处理的文件: 此处处理将00的数据干掉. 处理python脚本: dir_fd = open('abc.yuv','rb+') tmp_fd = open('tmp.yuv','wb+') whil ...