Published on

SQL使用手册

简介

SQL是一种特定的查询语言,向 DBMS 发送查询请求,查询结构化数据库,DBMS 返回查询结果。

基本数据类型

  • 字符 - char、varchar、text
  • 整数 - smallint、integer
  • 浮点数 - number(n,d)、float(n,d)、
  • 日期 - date、datetime
  • 货币 - money

创建/删除数据库/表/索引

CREATE DATABASE <数据库名>;
DROOP DATABASE <数据库名>;

CREATE TABLE <表名>
(  <列名1>    <数据类型>  [列完整性约束],
   <列名1>    <数据类型>  [列完整性约束],
   <列名1>    <数据类型>  [列完整性约束],
   ……
);
DROP TABLE <表名>;

CREATE INDEX <索引名> ON <表名><(列名)>;
DROP INDEX <索引名>;

列完整性约束

  • 主键 - primary key
  • ``非空值` - not null
  • 空值 - null
  • 值唯一 - unique
  • 有效性检查 - check
  • 缺省值 - default

主键/复合主键/代理键/外键

CREATE TABLE plan
(   <列名1>    <数据类型>  [列完整性约束],
    CONSTRAINT <约束名> primary key(主键列)
);
CREATE TABLE plan
(   <列名1>    <数据类型>  [列完整性约束],
    CONSTRAINT <约束名> primary key(主键列, 主键列)
);
CREATE TABLE plan
(   <代理键列名>    <Serial数据类型>  not null,
    <列名2>    <数据类型>  [列完整性约束],
    CONSTRAINT <约束名> primary key(代理键列名)
);
CREATE TABLE register
(   <列名1>    <数据类型>  [列完整性约束],
    CONSTRAINT <约束名> foreign key(外键列)
);

修改表结构

ALTER TABLE <表名> ADD <新列名称><数据类型>|[完整性约束];
ALTER TABLE <表名> DROP COLUMN <列名>;
ALTER TABLE <表名> DROP CONSTRAINT <完整性约束名>;
ALTER TABLE <表名> RENAME TO <新表名>;
ALTER TABLE <表名> RENAME <原列名> TO <新列名>;
ALTER TABLE <表名> ALTER COLUMN <列名> TYPE<新的数据类型>;

数据操作语句

INSERT INTO <表名|视图名>[<列名表>] VALUES (列值表);
UPDATE <表名|视图名>
SET <列名1>=<表达式1> [, <列名2>=<表达式2...]
[WHERE <条件表达式>]
DELETE
FROM <表名|视图名>
[WHERE <条件表达式>];

查询数据语句

SELECT [ALL|DISTINCT] <目标列>[, <目标列> ...]
[INTO <新表>]
FROM <表名|视图名>[, <表名|视图名>...]
[WHERE <条件表达式>]
[GROUP BY <列名> [HAVING <条件表达式>]]
[ORDER BY <列名> [ASC|DESC]][, <列名> [ASC|DESC]]

Where子句

  • 取值范围 - between .. and ..
  • 通配符 - 下划线(_)通配符代表一个未指定的字符,百分号(%)通配符代表一个多个未指定的字符。
  • 逻辑运算符 - and、or、not、in、not in。

分组统计

SELECT 统计函数(目标列)
FROM <表名|视图名>[, <表名|视图名>...]
[WHERE <条件表达式>]
[GROUP BY <目标列>
[HAVING 条件]

内置函数

  • 聚合函数 - avg、count、min、max、sum
  • 算术函数
  • 字符串函数
  • 日期时间函数
  • 数据类型转换函数

内连接

SELECT <目标列>[, <目标列>...]
FROM <表名|视图名>
WHERE <条件中嵌套另一关系表的select查询结果集>
SELECT <目标列>[, <目标列>...]
FROM <表名1>, <表名2>, ..., <表名n>
WHERE <关系表之间的连接关联条件>
SELECT <目标列>[, <目标列>...]
FROM <表名1> JOIN <表名2> ON <连接条件>;

外连接

  • 左外连接 - left join
  • 右外连接 - right join
  • 全外连接 - full join

视图操作

CREATE VIEW <视图名>[(列名1),(列名2),...] AS <SELECT查询>;
DROP VIEW <视图名>;

数据控制操作

GRANT <权限列表> ON <数据库对象> TO <用户或角色> [ WITH GRANT OPTION];

REVOKE <权限列表> ON <数据库对象> FROM <用户或角色>;

DENY <权限列表> ON <数据库对象> TO <用户或角色>;