SQL笔记

来源:互联网 发布:行书笔顺演示软件 编辑:程序博客网 时间:2024/06/08 14:40
1.查询
SELECT [DISTINCT] 列 FROM 表格
[WHERE 条件]
[ORDER BY 列 [ASC, DESC]];

其中“条件”包括:
  1. 简单条件,如【列=值】、【列>值】、【列 IS NOT NULL】
  2. 复合条件,如【列1=值1 AND 列2=值2】、【列1>值1 OR 列2<值2】
  3. 条件集合,如【列 IN (值1, 值2)】
  4. 条件范围,如【列 BETWEEN 值1 AND 值2】
  5. 条件套式,如【列 LIKE {套式}】
“套式”包括:
  1. _代表任意单个字元,如【A_Z】等同于DOS通配符【A?Z】
  2. %代表任意多个字元,如【%AB%】等同于DOS通配符【*AB*】
排序依据可以是多个列,此时首先按第一列排序,第一列相同的项按第二列排序。ASC代表升序,DESC代表降序,缺省为ASC。此外,这里的列可以是列名也可以是序号。
DISTINCT代表不重复的资料。
SELECT可以选出多列,也可以从多个表格中选取。

2.函数
SELECT 函数名([DISTINCT] 列) FROM 表格
[GROUP BY 列]
[HAVING 函数条件];

函数包括:
  1. AVG:求平均值
  2. SUM:求和
  3. COUNT:计数
  4. MAX:最大值
  5. MIN:最小值
聚合函数不能使用WHERE。
加上DISTINCT可以仅将资料不重复的项目加入计算。
GROUP BY可以按该列分组,在组内进行计算。
HAVING代表仅选出符合该函数条件的,不一定和GROUP BY连用。例如:
SELECT Store_Name, SUM(Sales)
FROM Store_Information
GROUP BY Store_Name
HAVING SUM(sales) > 1500;
代表选出总营业额超过1500的店铺名称和营业额。

3.别名
SELECT 表格别名.栏目 栏目别名
FROM 表格名 表格别名;

用于增强表格的易读性,改变输出的表头。

4.连接
内部连接
SELECT 表1.列1, 表2.列2, ...
FROM 表1, 表2
WHERE 连接条件;

连接条件必须准确,如表1.列3=表2.列3,否则会产生笛卡尔连接。


5.并集、交集和补集
SELECT 列1 FROM 表1
UNION [ALL]
SELECT 列2 FROM 表2;

SELECT 列1 FROM 表1
INTERSECT
SELECT 列2 FROM 表2;

SELECT 列1 FROM 表1
MINUS
SELECT 列2 FROM 表2;

UNION表示求并集,若不加ALL,则重复项会自动合并。
INTERSECT表示求交集,重复项自动合并。
MINUS表示求补集。若一个条目在集合2中但不在集合1中,会被直接抛弃。重复项自动合并。

6.建立表格
CREATE TABLE 表格名
(列1 数据类型
列2 数据类型
..);

若需要创建带主键的表格,则Oracle和SQLServer的写法为:【主键名 integer PRIMARY KEY】,MySQL的写法为【主键名 integer, ..., PRIMARY KEY(主键名)】

7.修改表格
ALTER TABLE 表格名 改变方式;

改变方式包括:
  1. 插入一列:【ADD 列 数据类型】
  2. 删除一列:【DROP 列】
  3. 改变列名:【CHANGE 旧列名 新列名 新数据类型】
  4. 改变一列数据类型:【MODIFY 列 新数据类型】
8.删除和清除表格
DROP TABLE 表格名;
TRUNCATE TABLE 表格名;


9.插入数据
INSERT INTO 表格名 (列1, 列2, ...)
VALUES (值1, 值2, ...);

INSERT INTO 表1 (列1, 列2, ...)
SELECT 列3, 列4, ...
FROM 表2;

使用SELECT这种形式能一次插入多行,可以搭配任意的SQL语句,如WHERE等。

10.修改数据
UPDATE 表格名
SET 列1=值1, 列2=值2
WHERE 条件;

如果有多行符合条件的,则会一起被修改为新值。

11.删除数据
DELETE FROM 表格名
WHERE 条件;

同样,所有符合条件的行都会被删除。

12.建立视图和索引
CREATE VIEW 视图名 AS
SQL语句;

CREATE INDEX 索引名
ON 表格名(列名)

视图中的SQL语句一般是SELECT及其组合。