/*2014.11.02
*根据几份手上文档整理而来,只作为初稿,难以详尽,会尽快扩充。
*任何建议请在评论区尽情提出,或者如发现有误请及时指出,感激万分。
*/
SQL简介
SQL全称Structured Query Language(结构化查询语言)。
SQL是一门ANSI的标准计算机语言。
SQL可用来访问和操作Oracle,Sybase,Microsoft SQL Server,DB2,Access,MySQL,PostgreSQL以及其他数据库系统中的数据。
SQL可以对数据库进行添加、删除、更新、查询操作。
SQL简单易学。
SQL基本语法表
语法结构 | 说明 |
数据库操作 | |
CREATE DATABASE database_name | 创建一个数据库 |
DROP DATABASE database_name | 删除某个数据库 |
数据表操作 | |
CREATE TABLE "table_name" ("column_1" "data_type_for_column_1", "column_2" "data_type_for_column_2", …) |
在数据库中创建一个表 |
ALTER TABLE table_name ADD column_name datatype | 在已存在的表中新加一列 |
ALTER TABLE table_name DROP column_name datatype | 在已存在的表中删除某一列 |
DROP TABLE table_name | 删除某个表 |
索引操作 | |
CREATE INDEX index_name ON table_name (column_name_1,column_name_2,…) |
在表上创建一个简单索引 |
CREATE UNIQUE INDEX index_name ON table_name (column_name_1,column_name_2,…) |
在表上创建一个唯一索引 |
DROP INDEX table_name.index_name | 删除索引 |
数据操作 | |
INSERT INTO table_name VALUES(value_1,value_2,…) |
在表中新增一行数据 |
INSERT INTO table_name(column_1,column_2,…) VALUES(value_1,value_2,…) |
在表中新增一行数据 |
UPDATE table_name SET column_name_1=new_value_1, column_name_2=new_value_2 WHERE column_name=some_value |
更新一列或者多列的数据 |
DELETE FROM table_name WEHRE column_name=some_value |
在表中删除某一行或某些行 (DML语言,可以有选择删除) |
TRUNCATE TABLE table_name |
删除该表中所有数据 (DDL语言,默认表中所有数据都删除) |
SELECT | |
SELECT column_name(s) FROM table_name | 查询表中(一列或多列的)数据 |
SELECT * FROM table_name | 查询表中的所有数据 |
SELECT DISTINCT column_name(s) FROM table_name |
查询表中不重复的数据 |
SELECT column_name(s) FROM table_name WEHRE column operator value AND column operator value OR column operator value AND(…OR…) … |
根据条件查询表中的数据 (operator表示等于=,不等于<>, 大于>,小于<,不小于>=,不大于<=, 范围BETWEEN,近似LIKE等操作符) (操作符及用法会单独用表列出) |
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…) |
查询某个字段值为IN后括号内任何一个值的数据 (column_name IN (value1,value2,…) 等价于column_name=value1 OR column_name=value2 …) |
SELECT column_name(s) FROM table_name ORDER BY row_1,row_2 DESC,row_2 ASC,… |
将对某个表的查询结果排序 (ASC,Ascend,按照字母和数字正序排列(默认,可不写), DESC,Descend,按照字母和数字倒序排列) |
SELECT column_1,…,SUM(group_column_name) FROM table_name GROUP BY group_column_name |
GROUP BY可根据一个或多个列对结果集进行分组 |
SELECT column_1,…,SUM(group_column_name) FROM table_name GROUP BY group_column_name HAVING SUM(group_column_name) condition value |
与WHERE语句的用法相同。 因为WHERE 关键字无法与合计函数一起使用,因此在SQL中 添加了HAVING子句 condition表示等于=,不等于<>,大于>,小于<等操作符 |
Alias(别名) | |
SELECT column_name AS column_alias FROM table_name |
列名别名 |
SELECT table_alias.column_name FROM table_name AS table_alias |
表名别名 |
Join | |
SELECT column_1_name,column_2_name,… FROM first_table_name INNER JOIN second_table_name ON first_table_name.keyfield =second_table_name.foreign_keyfield |
在第一个表和第二个表中 存在至少一个匹配时,INNER JOIN 关键字返回匹配的行 |
SELECT column_1_name,column_2_name,… FROM first_table_name LEFT JOIN second_table_name ON first_table_name.keyfield =second.table_name.foreign_keyfield |
LEFT JOIN 关键字会从第一个表 (first_table_name) 那里返回所有的行 即使在第二个表 (second_table_name) 中没有匹配的行 |
SELECT column_1_name,column_2_name,… FROM first_table_name RIGHT JOIN second_table_name ON first_table_name.keyfield =second.table_name.foreign_keyfield |
RIGHT JOIN 关键字会从第二个表 (second_table_name)) 那里返回所有的行 即使在第一个表 (first_table_name) 中没有匹配的行 (与LEFT JOIN相反) |
UNION | |
SELECT column_name(s) FROM table_name_1 UNION SELECT column_name(s) FROM table_name_2 |
UNION用于合并两个或多个 SELECT 语句的结果集 这些SELECT语句列数必须相同,每列的数据类型也必须相同 默认选取不重复的值 |
SELECT column_name(s) FROM table_name_1 UNION ALL SELECT column_name(s) FROM table_name_2 |
同上,选取不重复的值 |
SELECT INTO/IN | |
SELECT column_name(s) INTO new_table_name FROM source_table_name WHERE query |
从一个表中选取数据,然后把数据插入另一个表中 (常用于创建表的备份复件或者用于对记录进行存档) |
SELECT column_name(s) IN external_database_name FROM source_table_name WHERE query |
从一个表中选取数据,然后把数据插入另一个数据库的表中 |
CREATE VIEW(创建视图) | |
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition |
根据查询的结果来创建一个数据视图 |
数据类型
数据类型 | 数据类型描述 |
INTEGER(SIZE) INT(SIZE) SMALLINT(SIZE) TINYINT(SIZE) |
存放整型数据,其最大值在括号内标出 |
DECIMAL(SIZE,D) NUMERIC(SIZE,D) |
存放带有小数的数据,SIZE表示其最大值,D表示小数位数 |
CHAR(SIZE) | 存放固定长度为SIZE的字符串,可包括字母,数字和特殊字符等 |
VARCHAR(SIZE) | 存放最大长度为SIZE的可变长度的字符串,可包括字母、数字和特殊字符等 |
DATE(yyyymmdd) | 存放日期类型的数据 |
操作符
操作符 | 操作符描述 |
= | 相等 |
<> | 不相等 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
BETWEEN | 在一个范围之间 |
LIKE |
用于在 WHERE 子句中搜索列中的指定模式 通配符: “%”可用来替代一个或多个字符 “_”仅替代一个字符 “[…]”替代字符列中的单一字符 “[^…]”或“[!…]”替代不在字符列中的任何单一字符 |
一些合计函数
函数 | 函数描述 |
AVG(column) | 返回该字段的平均值 |
COUNT(column) | 返回某列不为NULL值的总数量 |
MAX(column) | 返回某列的最大值 |
MIN(column) | 返回某列的最小值 |
SUM(column) | 返回某列的所有值的和 |