数据库总结——语法归纳

语法模板

数据库操纵具有不少语法,使用时又是灵活多变的,俗话说:“好记性不如烂键盘”,虽然有道是“熟能生巧”,但人脑记不了也没必要记住如此繁多的语句,因此对语句进行总结是必不可少的,以方便以后随去随用。

DDL(Data Definition Language 数据定义语言)

定义了对数据库模式、基本表、视图和索引结构的创建、修改和删除语法
| 对象 | 创建 | 修改 | 删除 |
|:----------|:-------------|:----------|:----------|
|模式(schema)|CREATE | |DROP |
|基本表(table)|CREATE |ALTER |DROP |
|视图(view)|CREATE | |DROP|
|索引(index)|CREATE |ALTER |DROP |
*DROP语句一般后跟CASCADE和RESTRICT,两者选其一:CASCADE为级联,直接删除该模式及其下属的数据库;RESTRICT为限制,当该模式下有数据库对象时无法删除该模式

具体语法
模式
  • 创建语法

    CREATE SCHEMA <模式名> AUTHORIZATION<用户名>;
    
  • 删除语法

    DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
    
基本表
  • 创建语法

    CREATE TABLE<表名>( <列名><数据类型> [<CONSTRAINT<约束名>CHECK(完整性约束条件)|PRIMARY KEY|UNIQUE|NOT NULL>,] ... <列名><数据类型> [<CONSTRAINT<约束名>CHECK(完整性约束条件)|PRIMARY KEY|UNIQUE|NOT NULL>,] [PRIMARY KEY(列名),] [FOREIGN KEY(列名) ON 参照表名(参照列名)] );

  • 修改语法

    ALTER TABLE <表名>( [ALTER COLMUN<列名><数据类型>,] [ADD <新列名><数据类型> [<CONSTRAINT<约束名>CHECK(完整性约束条件)|PRIMARY KEY|UNIQUE|NOT NULL>,]] [ADD CONSTRAINT 约束名>CHECK(完整性约束条件)|PRIMARY KEY|UNIQUE|NOT NULL>,] [DROP <列名> CASCADE|RESTRAICT] [DROP CONSTRAINT CASCADE|RESTRAICT] );

  • 删除语法

    DROP TABLE<表名> CASCADE|RESTRICT;

视图
  • 创建语法

    CREATE VIEW <视图名>  (列名1,列名2...)
    AS <子查询>
    [WITH CHECK OPTION];
    

    *WITH CHECK OPTION是保证进行增删改时仍使用子查询的谓词条件

  • 删除语法

    DROP VIEW <视图名> [CASCADE];
    
索引
  • 创建语法

    CREATE UNIQUE|CLUSTER INDEX<索引名> ON <表名>(列名1[次序1],列名2[次序2]);

  • 修改语法:仅能更改索引名,原因也好理解——一个基本表可以建立若干个索引,如果对已建立的某个索引有问题,仅需删除该索引并重新添加索引即可,不影响基本表同时也减少了语法设计开销。

    ALTER INDEX <旧索引名> RENAME TO <新索引名>

  • 删除语法

    DROP INDEX<索引名>;

DML(Data Manipulation Language 数据操纵语言)

定义了对基本表和视图元组的增删改操作语法

插入语句(insert)

INSERT INTO <表名|视图名> (<列名1>,<列名2>,...) VALUES (<值1>,<值2>,...);

  • 当值排列与基本表列排列一致时,INSERT语句中列名排列可以省略
  • 只有建立在纯净基本表查询(没有连接和投影)的视图才能执行插入操作 并且操作会自动影响相关的基本表
修改语句(update)

UPDATE <表名|视图名> SET <列名1> = <新值1>[,<列名2> = <新值2>...] WHERE<条件表达式>;

  • 只有建立在纯净基本表查询(没有连接和投影)的视图才能执行修改操作,并且操作会自动影响相关的基本表
删除语句(delete)

DELETE FROM <表名|视图名> [WHERE <条件表达式>];

  • 只有建立在纯净基本表查询(没有连接和投影)的视图才能执行删除操作,并且操作会自动影响相关的基本表
DQL(Data Query Language 数据查询语言)

定义了对基本表和视图元组的查询操作语法

SELECT [DISTINCT|ALL][聚集函数|函数]<列名1>[别名1],[DISTINCT|ALL][聚集函数|函数]<列名2>[别名2]... FROM <视图名1|基本表名1>[别名1],<视图名2|基本表名2>[别名2]...|<SELECT查询语句>[AS]<别名> [WHERE <条件表达式>] [GROUP BY <列名1>,<列名2>...[HAVING <条件表达式>]] [ORDER BY <列名1>,<列名2>...[ASC|DESC]];

  • WHERE条件表达式可选形式

    ·属性列名 <比较符> 属性列名|常量|SELECT语句)
    ·属性列名[NOT] BETWEEN (属性列名|常量| SELECT语句))AND (属性列名|常量|(SELECT语句))
    ·属性列名 [NOT] IN (属性列名|常量| [ANY|ALL] (SELECT语句))
    ·属性列名 [NOT] LIKE (%_通配字符)
    ·属性列名 IS [NOT] NULL
    ·属性列名 [NOT] EXISTS (SELECT语句)
    ·<条件表达式> AND|OR <条件表达式> AND|OR <条件表达式>

  • DISTINCT:删除重复列;ALL:允许存在重复列

  • 如果连接的基本表有多个,每个表都起别名的连接查询为内连接查询,否则为叉积连(笛卡儿积连接)

  • 聚集函数不能用在WHERE条件表达式中,原因也很容易理解:聚集函数是对GROUPBY后的结果集进行处理,因此要求WHERE条件表达式比聚集函数更先被执行,所以聚集函数不能用在WHERE条件表达式中

DCL(Database Control Language 数据库控制语言)

定义了对数据库角色权限授予、回收的语法以及对事务的控制语法

权限语句
授予语句(grant)

GRANT <操作名>,<操作名>…
ON <表名|视图名><列名1><列名2>[,<表名|视图名><列名1><列名2>…]
TO <用户名>[,<用户名>…]
[WITH GRANT OPTION];

  • WITH GRANT OPTION表示被授权用户可以授予该权限给其他用户
收回语句(revoke)
REVOKE <操作名>,<操作名>...
ON <表名|视图名><列名1><列名2>[,<表名|视图名><列名1><列名2>...]
FROM <用户名>[,<用户名>...][CASCADE|RESTRICT];
  • CASCADE表示强制收回被授权用户授予其他用户的权限
  • RESTRICT表示当被授权用户授予其他用户的权限未被收回时,拒绝本次收回操作
角色语句

角色实际上是权限的集合

创建语句(create)

CREATE <角色名>

  • WITH ADMIN OPTION表示被授权用户可以授予该权限给其他用户
  • 角色实际上时权限的集合
授予语句(grant)

GRANT <角色名>,<角色名>... TO <用户名>[,<用户名>...] [WITH ADMIN OPTION];

  • WITH ADMIN OPTION表示被授权用户可以授予该权限给其他用户
收回语句(revoke)

REVOKE <角色名>,<角色名>... FROM <用户名>[,<用户名>...]

事务语句

事务实际上是一次不可被拆分的操作集合,具有原子性(Automatic不可分割)、一致性(consistency一次性更新)、隔离性(isolation不相互影响)、持续性(Durability更新永久存在),主要目的在于消除由于逐个操作时出错带来的脏数据,保持数据一致性和完整性。

BEGIN TRANSACTION

开始事务的所有操作

COMMIT

将事务的操作带来的更新写进数据库

ROLLBACE TRANSACTION

事务执行出错,回滚所有更新操作,即将更新从数据库消除以恢复到事务开始前的状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值