SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的
语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
使用 DISTINCT 关键词
如需从 Company" 列中仅选取唯一不同的值,我们需要使用 select distinct 语句:(也就是去重)
select distinct Company from Orders
WHERE 子句
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 在某些版本的 SQL 中,操作符 <> 可以写为 !=。 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录
出现在where后面
ORDER BY 语句用于对结果集进行排序。
order by
语句用于根据指定的列对结果集进行排序。
order by
语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
select Company, OrderNumber from Orders order by
Company (
以字母顺序显示公司名称)
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
select Company, OrderNumber from Orders order by Company DESC, OrderNumber ASC
INSERT INTO 语句
insert into 语句用于向表格中插入新的行。
insert into table_name (列1, 列2,...) values(值1, 值2,....)
Update 语句
Update 语句用于修改表中的数据。
update Person set FirstName = 'Fred' WHERE LastName = 'Wilson' (为 lastname 是 "Wilson" 的人添加 firstname)
DELETE 语句
delete from 表名称 where 列名称 = 值
SQL TOP 子句
Persons 表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
SQL Server 的语法:
select top number|percent column_name(s) from table_name
select
top 2
* from Persons
MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的
select * from Persons limit 5 (MySql的语句)
select * from Persons where rownum <= 5 (Oracle的语句)
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
从 "Persons" 表中选取居住在以 "N" 开始的城市里的人:
select * from Persons where City like 'N%'
SQL 通配符
SQL 通配符可以替代一个或多个字符。
SQL 通配符必须与 LIKE 运算符一起使用。
select * from Persons where City like 'Ne%'
从 "Persons" 表中选取居住在包含 "lond" 的城市里的人:
select * from Persons where City like '%lond%'
IN 操作符
in操作符允许我们在 where 子句中规定多个值。
select * from Persons where LastName in ('Adams','Carter') (从上表中选取姓氏为 Adams 和 Carter 的人)
BETWEEN 操作符
操作符 between... and会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
select * from Persons where LastName between
'Adams' and
'Carter'
例子显示范围之外的人,请使用 NOT 操作符:
select * from Persons where LastName not between 'Adams' and 'Carter'
SQL Alias
通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
表的 SQL Alias 语法
select column_name(s) FROM table_name as alias_name
列的 SQL Alias 语法
select column_name as alias_name from table_name
SQL JOIN
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
Join 和 Key
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每 个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起
1、可以通过引用两个表的方式,从两个表中获取数据
select Persons.LastName, Persons.FirstName, Orders.OrderNo FROM
Persons, Orders where Persons.Id_P = Orders.Id_P
2、也可以使用关键词 JOIN 来从两个表中获取数据。 http://www.w3school.com.cn/sql/sql_join_inner.asp
select Persons.LastName, Persons.FirstName, Orders.OrderNo from
Persons INNER join Orders
on Persons.Id_P = Orders.Id_P order by Persons.LastName
1、是笛卡尔积的形式,
不同的 SQL JOIN
除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 http://www.w3school.com.cn/sql/sql_join_left.asp
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 http://www.w3school.com.cn/sql/sql_join_right.asp
- FULL JOIN: 只要其中一个表中存在匹配,就返回行 http://www.w3school.com.cn/sql/sql_join_full.asp
SQL UNION 和 UNION ALL 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中 的列的顺序必须相同。
select column_name(s) from table_name1 union select column_name(s) from table_name2
UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
select column_name(s) from table_name1 union all select column_name(s) from table_name2
SQL SELECT INTO 语句可用于创建表的备份复件。
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
常用于创建表的备份复件或者用于对记录进行存档。
SQL CREATE DATABASE 语法
CREATE DATABASE database_name(创建数据库)