Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90978065
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-24 21:31:25

数据定义语言(DDL)
 
 
 
创建数据库
 
CREATE DATABASE 

创建数据库时,内部创建系统目录

语句选项
说明数据库所在的 DBSPACE, 缺省是ROOT DBSPACE
说明数据库使用的日志,有以下四种
无日志
缓冲日志
非缓冲日志
ANSI 日志
 
 
例子

CREATE   DATABASE  users
CREATE   DATABASE  users IN myspace
CREATE   DATABASE  users WITH LOG
CREATE   DATABASE  users WITH BUFFERED LOG
CREATE   DATABASE  users WITH LOG MODE ANSI
 
 
 

创建表
 
CREATE TABLE
 
表结构:
列名及数据类型
 
各种约束条件:
实体完整性:  说明主键
参照完整性:  说明实体之间的参照关系
缺省值:  说明缺省值
检查条件:说明检查条件
其它约束:非空、唯一性等
 

表所在的 DBSPACE,缺省是数据库所在的DBSPACE

区间大小, 缺省大小为8页

表的锁定级别: 页面级或行级,缺省是页面级
 
 
 
数据完整性
 
 

实体完整性
表中的每行有一个唯一的标识
 
语义完整性
列中的数据恰当地反映了设计列所要求存放的数据类型
 
引用完整性
强制维护表间的关系

例子
 
CREATE   TABLE users (
  user_num INTEGER PRIMARY KEY,
  user_type INTEGER,
  user_descr CHAR(50))
 
CREATE   TABLE sub_users (
  sub_user INTEGER PRIMARY KEY,
  ref_user_num INTEGER REFERENCES users (user_num),
         sub_user_descr CHAR(50))
 
 
CREATE TABLE DATE_CHECK(
                 id        integer           not null ,
                 month     integer           default -1    not null ,
                 week      integer           default -1    not null ,
                 day       integer           default -1    not null ,
                 hour      integer           default -1    not null ,
                 minute    integer           default -1    not null ,
                 check (((month >= 1 ) AND (month <= 12 ) ) OR (month = -1 ) ) ,
                 check (((week >= 0 ) AND (week <= 6 ) ) OR (week = -1 ) ) ,
                 check (((day >= 1 ) AND (day <= 31 ) ) OR (day = -1 ) ) ,
                 check (((hour >= 0 ) AND (hour <= 23 ) ) OR (hour = -1 ) ) ,
                 check (((minute >= 0 ) AND (minute <= 59 ) ) OR (minute = -1 ) ))

CREATE   TABLE users (
   user_num INTEGER DEFAULT  01,
  user_type INTEGER DEFAULT  02, 
  user_descr CHAR(50) NOT NULL,
  PRIMARY KEY( user_num,user_type ) ) LOCK MODE ROW
 
 
CREATE TABLE sub_users (
  sub_user INTEGER PRIMARY KEY,
  ref_user_num INTEGER REFERENCES users (user_num),
  ref_user_type INTEGER ,
  sub_user_descr CHAR(50),
  FOREIGN KEY( ref_user_num,ref_user_type) REFERENCES users  (user_num,user_type))
  IN myspace EXTENT SIZE 16 NEXT SIZE  8
 
 
修改表结构

ALTER TABLE TABLENAME
ADD/DROP/MODIFY COLUMNNAME TYPE

增加列、删除列、修改列
增加约束、删除约束
修改区间大小(NEXT SIZE)
改变锁定模式
ALTER TABLE 语句执行期间, 对整个表加互斥锁
如果要修改约束, 必须先删除, 而后增加。
 

创建索引
 
 
CREATE INDEX
索引可以建立在一列或多列上, 同样的列或多列不能有多个索引
用关键字UNIQUE 或 DISTINCT 创建唯一索引
用ASC 或 DESC 说明升序或降序, 缺省是升序
 
CREATE INDEX USERINDEX 
ON USER(USER_NUM)
CREATE INDEX UNI_NAME
ON USER (FNAME,LNAME DESC)
 
 
创建同义词

视图是表或视图的另外一个名字
CREATE SYSNONYM 
同义词不能与数据库名相同,不能创建同义词的同义词
同义词与别名的区别:
别名存在于SELECT 语句生命期内, 是临时的
同义词是数据库的对象,是永久的

例子

create   synonym   newusers    for  users
 
 
创建视图

CREATE VIEW VIEWNAME(column1,column2...) AS (SELECT 语句)

列名说明视图的列名,如省略,则视图列名与相应表的列名 相同。
定义视图的SELECT语句必须满足以下条件:
不能包含ORDER  BY语句
不能包含INTO TEMP语句
不能包含UNION 操作符
目的保证可更新性

对视图更新(修改、插入、删除)时, 其相应的SELECT 语句必须满足以下条件:
基表只能是一个
不能使用聚集函数
不能包含DISTINCT和UNIQUE 关键字
不能包含ORDER BY 子句
 

删除对象
 
DROP DATABASE 删除数据库
DROP TABLE  删除表
DROP VIEW   删除视图
DROP INDEX 删除索引
DROP SYNONYM 删除同义词
DROP PROCEDURE 删除存储过程
DRIO TRIGGER 删除触发器
阅读(518) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~