一:基础内容
可以把 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 - 删除索引
二:基础使用
1:SELECT
select 列名 from 表名 where 查询条件
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
SELECT DISTINCT 列名称 FROM 表名称
2:INSERT INTO
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
3:UPDATE
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
多列时中间用,分割
4:DELETE
DELETE FROM 表名称 WHERE 列名称 = 值
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者:DELETE * FROM table_name
三:高级使用
1:top
TOP 子句用于规定要返回的记录的数目。并非所有的数据库系统都支持 TOP 子句。
MySQL 语法
SELECT column_name(s) FROM table_name LIMIT number
Oracle 语法
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
SQL Server 的语法:
SELECT TOP number|percent column_name(s) FROM table_name
SELECT TOP 50 PERCENT * FROM Persons(选取前百分之五十的记录)
2:like
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一字符 |
3:between
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
如需使显示范围之外的人,请使用 NOT 操作符:
SELECT column_name(s) FROM table_name WHERE column_name NOT BETWEEN value1 AND value2
4:Alias(别名)
SELECT column_name(s) FROM table_name AS alias_name
SELECT column_name AS alias_name FROM table_name
5:join
用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
JOIN: 如果表中有至少一个匹配,则返回行
INNER JOIN(内连接)INNER JOIN 与 JOIN 是相同的。
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
6:union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
SQL Statement 1 UNION ALL SQL Statement 2
7: select into
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
把所有的列插入新表:
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
把希望的列插入新表:
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename