SQL语言类型

数据定义:create/alter/drop table/trigger/index/function/存储过程/约束/…
数据操纵:select/update/insert/delete
数据控制:grant/revoke

增删改查

INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

例子

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

DELETE FROM 表名称 WHERE 列名称 = 值

例子

DELETE FROM Person WHERE LastName = 'Wilson'

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

例子

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'

SELECT 列名称 FROM 表名称
SELECT * FROM 表名称

查select

distinct 去除重复项

SELECT DISTINCT 列名称 FROM 表名称

例子
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:

SELECT Company FROM Orders

"Orders"表:

Company     OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953

结果:

Company
IBM
W3School
Apple
W3School

请注意,在结果集中,W3School 被列出了两次。
如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:

SELECT DISTINCT Company FROM Orders

结果:

Company
IBM
W3School
Apple

现在,在结果集中,"W3School" 仅被列出了一次。
参考:http://www.w3school.com.cn/sql/sql_distinct.asp

where

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
eg.
数值:

SELECT * FROM Persons WHERE Year>1965

文本值:

SELECT * FROM Persons WHERE FirstName='Bush'

and/or

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

order by + desc,asc + top,percent

eg.

SELECT TOP 2 * FROM Persons         --查询前2个
SELECT TOP 50 PERCENT * FROM Persons --查询前百分之五十

like/not like+通配符

in+()

eg.

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')

between and

模板

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

eg.

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'

Alias =as 别名,查询列名或者搜索表名的别名 可省略

eg.

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

join on

join=inner join

在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

left join

从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
eg.

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

right join

从右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

full join

只要其中某个表存在匹配(左右表匹配全部返回),FULL JOIN 关键字就会返回行。
eg.我们希望列出所有的人,以及他们的订单,以及所有的订单,以及定购它们的人。(人一张表,订单一张表)

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

结果集:

LastName    FirstName   OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George
34764

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行
如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
转载自:http://www.w3school.com.cn/sql/sql_join_full.asp

表连接 join

1)内连接:只连接匹配的行

select A.c1,B.c2 from A join B on A.c3 = B.c3;

2)左外连接:包含左边表的全部行(不管右边的表中是否存在与它们匹配的行)以及右边表中全部匹配的行

select A.c1,B.c2 from A left join B on A.c3 = B.c3;

3)右外连接:包含右边表的全部行(不管左边的表中是否存在与它们匹配的行)以及左边表中全部匹配的行

select A.c1,B.c2 from A right join B on A.c3 = B.c3;

4)全外连接:包含左、右两个表的全部行,不管在另一边的表中是否存在与它们匹配的行

select A.c1,B.c2 from A full join B on A.c3 = B.c3;

5)非等连接:使用等值以外的条件来匹配左、右两个表中的行

select A.c1,B.c2 from A join B on A.c3 != B.c3;

6)交叉连接:生成笛卡尔积——它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行一一匹配

select A.c1,B.c2 from A,B;

union/union all

用于合并两个或多个 SELECT 语句的结果集
Union和Union All的区别之一在于对重复结果的处理,Union All会保留重复结果
转载自:http://www.w3school.com.cn/sql/sql_union.asp

select into

从一个表中选取数据,然后把数据插入另一个表中
常用于创建表的备份复件或者用于对记录进行存档
转载自:http://www.w3school.com.cn/sql/sql_select_into.asp

(auto) increment 自增长

null

NULL 值是遗漏的未知数据。
默认地,表的列可以存放 NULL 值。
eg.

SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL

having

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

eg.
我们拥有下面这个 "Orders" 表:

O_Id    OrderDate   OrderPrice  Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

结果集类似:
Customer SUM(OrderPrice)
Carter 1700
现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。
转载自:http://www.w3school.com.cn/sql/sql_having.asp

sql 不区分大小写

SQL基础 关键字的更多相关文章

  1. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  2. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  3. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  4. 第一章 SQL基础

    第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...

  5. (大数据工程师学习路径)第四步 SQL基础课程----select详解

    准备 在正式开始本内容之前,需要先从github下载相关代码,搭建好一个名为mysql_shiyan的数据库(有三张表:department,employee,project),并向其中插入数据. 具 ...

  6. [SQL基础教程] 4-1 数据的插入(INSERT)

    [SQL基础教程] C4 数据更新 4-1 数据的插入(INSERT) INSERT INSERT INTO <表名>(列1,列2...) VALUES(值1,值2...); 清单 用() ...

  7. [SQL基础教程] 2-1 SELECT语句基础

    [SQL基础教程] 2-1 SELECT语句基础 列的查询 Syntax SELECT<列名>,..... FROM<表名>; SELECT col_1, col_2 FROM ...

  8. [SQL基础教程] 1-5 表的删除和更新

    [SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...

  9. [SQL] SQL 基础知识梳理(七)- 集合运算

    SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

随机推荐

  1. RocketMQ 安装详细说明

    原文:RocketMQ 安装详细说明 目录 本文导读 环境说明 RocketMQ 下载 从 Apache 下载 从 GitHub 下载 RocketMQ 安装 文件上传 项目解压 编译部署 Rocke ...

  2. RSA公钥验签

    1.业务场景,公司做理财业务,但是可能有第三方合作.与第三方合作获得更多客户流量.别人可以在第三方进行购买理财产品.那么怎么保证交易信息的安全性那,我们这里给出rsa加密实现原理. 2.工具类rsa: ...

  3. 《iOS Human Interface Guidelines》——Edit Menu

    编辑菜单 用户能够显示一个编辑菜单来在文本视图.网页视图和图像视图运行诸如剪切.粘贴和选择的操作. 你能够调整一些菜单的行为来在你的app中给用户给多的内容控制.比方你能够: 指定哪一个标准菜单命令对 ...

  4. 设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹

    原文:设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/the_victory/artic ...

  5. 网络异常与SQL Server事务

    SQL Server事务遭遇网络异常时的处理机制浅析 SQL Server数据库中,如果应用程序正在执行一个事务的时候突然遭遇了网络异常,例如网络掉包,网络中断等,那么这个事务会怎么样? SQL Se ...

  6. 三天打渔,俩天晒网(C++实现)

    #include <iostream> using namespace std; int leap (int a) {     if (a%4==0%a%100!=0||a%400==0) ...

  7. js进阶 9-10 html中如何遍历下拉列表

    js进阶 9-10  html中单选框和多选框如何遍历下拉列表 一.总结 一句话总结: 1.select元素的options.length可以获取选择长度,然后用options[i]精确定位到选项,用 ...

  8. 机房重构所遇问题&quot;未能载入文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件&quot;的解决的方法集锦

    敲七层登录的时候.忽然间认为敲三层搞清的思路瞬间又凌乱了.花了一天的时间边敲边梳理,最终整完了,执行的时候弹出了这种错误:未能载入文件或程序集"DAL"或它的某一个依赖项. 系统找 ...

  9. URLDecoder和URLEncoder的使用总结

    其实,这两个类的使用并不复杂,URLDecoder和URLEncoder它的作用主要是用于普通字符串和application/x-www-form-rulencoded MIME字符串之间的转换,一般 ...

  10. Eclipse Che安装依赖

    java Java 用于运行Che的服务器和用于创建Plug-in包的SDK工具,所以需要安装Java Jdk 1.8 如果只是运行Che的话下载JRE就足够了,但是加入你需要从源代码编译的话你还需要 ...