Duangw

SQL语句参考

索引:

  1. 建立数据库
  2. 关闭数据库
  3. 删除数据库
  4. 重命名数据库
  5. 创建索引
  6. 删除索引
  7. 索引重聚类
  8. 授予库级权限
  9. 授予表级权限
  10. 授予存储过程权限
  11. 回收库级权限
  12. 回收表级权限
  13. 创建表
  14. 修改表
  15. 定义字段缺省值(例)
  16. 修改字段缺省值(例)
  17. 自定义约束名(例)
  18. 使用检查约束(例)
  19. 使用UNIQUE约束(例)
  20. 定义主键(例)
  21. 定义外键(例)
  22. 定义键的别的形式(例)
  23. 为表增加/修改键的定义(例)
  24. 定义级联删除约束(例)
  25. 增加级联删除约束(例)
  26. 定义约束检查时机
  27. 设置隔离级别
  28. 设置锁机制

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为:

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;

页级锁和行级锁

在建表时,若没有指定加锁模式,缺省值为页级锁。

如果要处理的记录与聚类索引的顺序相同,或者处理顺序与物理存储顺序相同,则使用页级锁,否则使用行级锁。