本系列内容为http://www.w3cschool.cn/sql 教程的自学笔记
- SQL,指结构化查询语言,全称是 Structured Query Language。
RDBMS
RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
您需要在数据库上执行的大部分工作都由 SQL 语句完成。
下面的 SQL 语句从 "Customers" 表中选取所有记录:
SELECT * FROM Customers;
- SQL 对大小写不敏感:SELECT 与 select 是相同的。
一些最重要的 SQL 命令
- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
| 数据类型 | 描述 |
|---|---|
| CHARACTER(n) | 字符/字符串。固定长度 n。 |
| VARCHAR(n) 或CHARACTER VARYING(n) | 字符/字符串。可变长度。最大长度 n。 |
| BINARY(n) | 二进制串。固定长度 n。 |
| BOOLEAN | 存储 TRUE 或 FALSE 值 |
| VARBINARY(n) 或BINARY VARYING(n) | 二进制串。可变长度。最大长度 n。 |
| INTEGER(p) | 整数值(没有小数点)。精度 p。 |
| SMALLINT | 整数值(没有小数点)。精度 5。 |
| INTEGER | 整数值(没有小数点)。精度 10。 |
| BIGINT | 整数值(没有小数点)。精度 19。 |
| DECIMAL(p,s) | 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。 |
| NUMERIC(p,s) | 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) |
| FLOAT(p) | 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 |
| REAL | 近似数值,尾数精度 7。 |
| FLOAT | 近似数值,尾数精度 16。 |
| DOUBLE PRECISION | 近似数值,尾数精度 16。 |
| DATE | 存储年、月、日的值。 |
| TIME | 存储小时、分、秒的值。 |
| TIMESTAMP | 存储年、月、日、小时、分、秒的值。 |
| INTERVAL | 由一些整数字段组成,代表一段时间,取决于区间的类型。 |
| ARRAY | 元素的固定长度的有序集合 |
| MULTISET | 元素的可变长度的无序集合 |
| XML | 存储 XML 数据 |
SQL 数据类型快速参考手册
然而,不同的数据库对数据类型定义提供不同的选择。
下面的表格显示了各种不同的数据库平台上一些数据类型的通用名称:
| 数据类型 | Access | SQLServer | Oracle | MySQL | PostgreSQL |
|---|---|---|---|---|---|
| boolean | Yes/No | Bit | Byte | N/A | Boolean |
| integer | Number (integer) | Int | Number | IntInteger | IntInteger |
| float | Number (single) | FloatReal | Number | Float | Numeric |
| currency | Currency | Money | N/A | N/A | Money |
| string (fixed) | N/A | Char | Char | Char | Char |
| string (variable) | Text (<256)Memo (65k+) | Varchar | VarcharVarchar2 | Varchar | Varchar |
| binary object | OLE Object Memo | Binary (fixed up to 8K)Varbinary (<8K)Image (<2GB) | LongRaw | BlobText | BinaryVarbinary |
来自 W3CSchool 的 SQL 快速参考
| SQL 语句 | 语法 |
|---|---|
| AND / OR | SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition |
| ALTER TABLE | ALTER TABLE table_name ADD column_name datatypeorALTER TABLE table_name DROP COLUMN column_name |
| AS (alias) | SELECT column_name AS column_aliasFROM table_nameorSELECT column_nameFROM table_name AS table_alias |
| BETWEEN | SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2 |
| CREATE DATABASE | CREATE DATABASE database_name |
| CREATE TABLE | CREATE TABLE table_name(column_name1 data_type,column_name2 data_type,column_name2 data_type,...) |
| CREATE INDEX | CREATE INDEX index_nameON table_name (column_name)orCREATE UNIQUE INDEX index_nameON table_name (column_name) |
| CREATE VIEW | CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition |
| DELETE | DELETE FROM table_nameWHERE some_column=some_valueorDELETE FROM table_name (**Note: Deletes the entire table!!)DELETE * FROM table_name (Note: **Deletes the entire table!!) |
| DROP DATABASE | DROP DATABASE database_name |
| DROP INDEX | DROP INDEX table_name.index_name (SQL Server)DROP INDEX index_name ON table_name (MS Access)DROP INDEX index_name (DB2/Oracle)ALTER TABLE table_nameDROP INDEX index_name (MySQL) |
| DROP TABLE | DROP TABLE table_name |
| GROUP BY | SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name |
| HAVING | SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value |
| IN | SELECT column_name(s)FROM table_nameWHERE column_nameIN (value1,value2,..) |
| INSERT INTO | INSERT INTO table_nameVALUES (value1, value2, value3,....)orINSERT INTO table_name(column1, column2, column3,...)VALUES (value1, value2, value3,....) |
| INNER JOIN | SELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
| LEFT JOIN | SELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
| RIGHT JOIN | SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
| FULL JOIN | SELECT column_name(s)FROM table_name1FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
| LIKE | SELECT column_name(s)FROM table_nameWHERE column_nameLIKE pattern |
| ORDER BY | SELECT column_name(s)FROM table_nameORDER BY column_name [ASC|DESC] |
| SELECT | SELECT column_name(s)FROM table_name |
| SELECT * | SELECT *FROM table_name |
| SELECT DISTINCT | SELECT DISTINCT column_name(s)FROM table_name |
| SELECT INTO | SELECT INTO new_table_name [IN externaldatabase]FROM old_table_nameor*SELECT column_name(s)INTO new_table_name [IN externaldatabase]FROM old_table_name |
| SELECT TOP | SELECT TOP number|percent column_name(s)FROM table_name |
| TRUNCATE TABLE | TRUNCATE TABLE table_name |
| UNION | SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2 |
| UNION ALL | SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2 |
| UPDATE | UPDATE table_nameSET column1=value, column2=value,...WHERE some_column=some_value |
| WHERE | SELECT column_name(s)FROM table_nameWHERE column_name operator value |