SQL语句参考
索引:
- 建立数据库
- 关闭数据库
- 删除数据库
- 重命名数据库
- 创建索引
- 删除索引
- 索引重聚类
- 授予库级权限
- 授予表级权限
- 授予存储过程权限
- 回收库级权限
- 回收表级权限
- 创建表
- 修改表
- 定义字段缺省值(例)
- 修改字段缺省值(例)
- 自定义约束名(例)
- 使用检查约束(例)
- 使用UNIQUE约束(例)
- 定义主键(例)
- 定义外键(例)
- 定义键的别的形式(例)
- 为表增加/修改键的定义(例)
- 定义级联删除约束(例)
- 增加级联删除约束(例)
- 定义约束检查时机
- 设置隔离级别
- 设置锁机制
1.建立数据库
CREATE DATABASE database_name [ IN dbspacename ] \ [ WITH [ BUFFER ] LOG ] [ MODE ANSI ]
2.关闭数据库
CLOSE DATABASE
3.删除数据库
DROP DATABASE database_name
4.重命名数据库
RANAME DATABASE
5.创建索引
CREATE [UNIQUE] [CLUSTER] INDEX index_name ON \ table_name([column_name ASC/DESC],...)
6.删除索引
DROP INDEX index_name
7.索引重聚类
ALTER INDEX index_name TO CLUSTER
8.授予库级权限
GRANT {DBA|RESOURCE|CONNECT} TO {PUBLIC|USER_LIST}
9.授予表级权限
GRANT TAB-PRIVILEGE ON {table_name|view_name} TO \ {PUBLIC|USER_LIST} [WITH GRANT OPTION] [ AS [USER]]
其中:TAB-PRIVILEGE有ALTER、DELETE、INDEX、SELECT、UPDATE、INSERT、REFERENCES、ALL。在有些选项后面还可以加上表字段列表。
10.授予存储过程权限
GRANT EXECUTE ON proc_name TO {PUBLIC|USER_LIST}
11.回收库级权限
REVOKE {DBA|RESOURCE|CONNECT} FROM {PUBLIC|USER_LIST}
12.回收表级权限
REVOKE TAB-PRIVILEGE ON {table_name|view_name} FROM \ {PUBLIC|USER_LIST}
13.创建表
CREATE TABLE table_name(column_name datatype,...)\ [extent size number][next size number]\ [lock mode {row/page}][IN dbspacename]
14.修改表
ALTER TABLE table_name {ADD (newcol-name newcol_type \ [BEFORE oldcol_name],...)/DROP (col-name,...)\ /MODIFY (oldcol-name,newcol-type [NOT NULL],...)}
15.定义字段缺省值(例)
CREATE TABLE def_tbl ( col01 INTEGER DEFAULT 1 NOT NULL, col02 CHAR(2) DEFAULT 'ca', col03 DATE DEFAULT TODAY, col04 CHAR(10) DEFAULT USER, col05 DATETIME HOUR TO MINUTE DEFAULT CURRENT HOUR TO MINUTE );
16.修改字段缺省值(例)
ALTER TABLE def_tbl MODIFY col01 INTEGER DEFAULT 2 NOT NULL;
17.自定义约束名(例)
CREATE TABLE orders ( order_num INTEGER UNIQUE CONSTRAINT order_num_uq, order_date DATE DEFAULT TODAY NOT NULL \ CONSTRAINT order_date_un );
18.使用检查约束(例)
CREATE TABLE customer ( customer_num SERIAL, state CHAR(2) CHECK( state IN ( 'ca', 'az' ) ), quantity INTEGER ); ALTER TABLE customer ADD CONSTRAINT \ CHECK( quantity >= 1 AND quantity <=10 );
19.使用UNIQUE约束(例)
CREATE TABLE un_tbl ( call_type CHAR(1) UNIQUE, call_desc CHAR(30) );
20.定义主键(例)
CREATE TABLE pk_customer ( customer_num SERIAL, fname CHAR(20), PRIMARY KEY (customer_num) CONSTRAINT pk_cnum );
21.定义外键(例)
CREATE TABLE fk_orders ( order_num SERIAL, customer_num INTEGER, FOREIGN KEY (customer_num) REFERENCES pk_customer \ CONSTRAINT fk_cnum );
可以更改关联的键字段名:
FOREIGN KEY (customer_no) REFERENCES pk_customer(customer_num) \ CONSTRAINT fk_cnum
22.定义键的别的形式(例)
CREATE TABLE pk_customer1 ( customer_num SERIAL PRIMARY KEY CONSTRAINT pk_cnum1, fname CHAR(20) );
23.为表增加/修改键的定义(例)
ALTER TABLE pk_customer ADD CONSTRAINT PRIMARY KEY \ (customer_num) CONSTRAINT pk_cnum; ALTER TABLE fk_orders ADD CONSTRAINT FOREIGN KEY (customer_num) \ REFERENCES pk_customer; ALTER TABLE pk_customer MODIFY customer_num SERIAL PRIMARY KEY \ CONSTRAINT pk_cunm; ALTER TABLE fk_orders MODIFY customer_num INTEGER \ REFERENCES pk_customer CONSTRAINT fk_cnum;
24.定义级联删除约束(例)
CREATE TABLE fk_orders1 ( order_num SERIAL, customer_num INTEGER, FOREIGN KEY (customer_num) REFERENCES pk_customer \ ON DELETE CASCADE );
25.增加级联删除约束(例)
ALTER TABLE fk_orders DROP CONSTRAINT fk_cnum, ADD CONSTRAINT ( FOREIGN KEY (customer_num) REFERENCES pk_customer ON DELETE CASCADE \ CONSTRAINT orders_fk1);
要增加一个级联删除约束,必须先删除原来的相关约束。
informix7.x 不支持级联更新ON UPDATE CASCADE。
26.定义约束检查时机
SET CONSTRAINTS constraint_list modename;
其中,modename为:
- IMMEDIATE:立即执行约束检查(缺省);
- DEFFERRED:延迟执行约束检查;
- DETACHED:分开执行约束检查。
Constraint_list约束列表可以用ALL表示所有约束。
27.设置隔离级别
SET ISOLATION TO { DIRTY READ | COMMITTED READ | CURSOR STABILITY | REPEATABLE READ }
使用这四个隔离级别,必须保证数据库是有日志的。ANSI模式的缺省值为可重复读,非ANSI模式的缺省值为提交读。
隔离级别的说明如下:
序号 | 隔离级 | 注释 | 说明 |
---|---|---|---|
1 | DIRTY READ | 脏读 | 读取时连同脏数据一其选中 |
2 | COMMITTED READ | 提交读 | 读取时滤掉了脏数据 |
3 | CURSOR STABILITY | 游标稳定读 | 在读取中不允许其他过程改变当前行 |
4 | REPEATABLE READ | 可重复读 | 在事务完成前不允许其他过程改变事务中读取的任何一行数据 |
28.设置锁机制
库级锁
加锁:
DATABASE database_name EXCLUSIVE;
解锁:
CLOSE DATABASE;
表级锁
加锁:
LOCK TABLE table_name IN {SHARE|EXCLUSIVE} MODE;
其中,SHARE:共享锁;EXCLUSIVE:排它锁。
解锁:
UNLOCK TABLE table_name;
设置封锁模式
等待:
SET LOCK MODE TO WAIT;
不等待:
SET LOCK MODE TO NOT WAIT;
限时等待:
SET LOCK MODE WAIT TIME;
页级锁和行级锁
在建表时,若没有指定加锁模式,缺省值为页级锁。
如果要处理的记录与聚类索引的顺序相同,或者处理顺序与物理存储顺序相同,则使用页级锁,否则使用行级锁。