1.基本表的创建
create table 表名(<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]]...
[,<表级完整性约条件>]
);
eg: create student(id int primary key, name varchar(20) not null , number varchar(10) unique);
//unique是完整性约束的一种,用来表示该列的值唯一
//distincet用在查询中,表示查询出来的结果中该列不会出现重复值
2.视图的创建(虚表,数据库的数据字典中只存在视图的定义,而不记录数据,数据的存储仍然在基本表中)
create view 视图名[<列名>[,<列名>]]
as 子查询
[with check option]
eg: create view as select name from student where number='101' with chek option
其中with check option表示对视图进行insert、update和delete操作时,要保证插入、更新和删除的行满足视图定义中谓词条件(即子查询中的条件表达式)
3.创建索引
create [unique] [cluster] index 索引名
on <表名>(<列名>[<次序>] [,<列名>[<次序>]]...)
eg: create index no_index on student(number)
//默认是按照列number升序ASC存放。
//DESC为降序排序
//索引可以建立在对应表的一列或者多列上
//unique 表示此索引值不能重复,对应唯一的数据记录。
//cluster表示要建立的索引是簇集索引,所谓的簇集索引,指索引项的顺序与表中记录的物理顺序相一致的索引组织。用户可以在查询频率最高的列上建立簇集索引,从而提高查询效率。由于簇集索引是将索引和表记录存放在一起存储,所以一张表最多只能建立一个簇集索引。但是由于更新列中数据时候会导致记录的物理顺序的变更,系统要为维护索引付出代价。
4.删除表、视图和索引
drop table 表名;
drop view 视图名;
drop index 索引名;
//删除表后,表中的数据和在表中定义的索引都会自动删除,要谨慎。有的系统中视图也会自动删除,但是Oracle中视图仍然保存在数据字典中。
//删除视图后,由该视图导出的其他视图仍然存在,需要继续drop
//建立索引后,由系统来维护他。如果数据被频繁的删除和修改,系统会花很多时间来维护该索引,因此可以删除一些不必要的索引
4.表的修改
alter table 表名
[add <新列名><数据类型>[<完整性约束>]]
[drop <完整性约束列名>]
[modify <列名><数据类型>];
eg:
alter table student add sex char not null //增加新列和新的完整性约束条件
alter table student drop unique(number)//删除指定的完整性约束
alter table student modify number int //修改原有的列定义
//这里SQL没有提供删除指定列的定义,用户只能通过间接的方法实现这一功能。首先将被删除表中要保留的列及其内容全部复制到一个新表中,然后删除原表,最后将新表重命名为原表的名字即可。