DDL语言
- create table命令
用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等;
语法结构:create table 表名( [字段名] [类型] [约束] ……….. PRIMARY KEY(column1,column2), FOREIGN KEY(column1,column2,…..column_n), REFERENCES tablename(column1,column2,…..column_n) );
例子:
create table student( stuNo char(32) primary key,--主键约束 stuName varchar2(20) not null,--非空约束 cardId char(20) unique,--唯一约束 sex char(2) check(sex='男' or sex='女'),--检查约束 address varchar2(100) default '地址不详'--默认约束 ); create table mark( mid int primary key,--主键约束 stuNo char(32) not null, courseName varchar2(20) not null,--非空约束 score number(3) not null check(score>=0 and score<=100), --非空约束,检查约束 foreign key(stuno) references student(stuNo) --表级外键约束 );
- alter table命令
对已经存在的表进行修改,可以新增或删除字段,修改字段名或其类型和类型长度。--修改表名 alter table old_table rename to new_table --修改字段名 alter table table_name rename column old_column to new_column --添加字段 alter table table_name add (new_column varhcar2(200) default ‘null’,new_column2 number) --修改数据类型 alter table table_name modifiy (filedname varchar2(100)) --删除字段 alter table table_name drop column column_name --添加主键 alter table table_name add constraint pk_name primary key(column_id) --删除主键 alter table table_name drop constraint pk_name --添加外键,检查,唯一约束 alter table table_name add constraint fk_name foreign key(column_id) references 主表(主键) --添加检查约束 alter table stu add constraint ck_sname check(length(sname)>=2) --添加唯一约束 alter table stu add constraint uq_sname unique(sname) --删除外键 alter table table_name drop constraint fk_name
- drop table命令
用于从数据库中删除表及全部数据,语法:
drop table table_name [purge];--purge:清除缓存
- truncate table命令
可以快速删除表的记录并释放空间,不使用事务处理,速度快且效率高,但无法回滚事务。语法:truncate table table_name;
-
其他create命令
CREATE INDEX:创建数据表索引 CREATE PROCEDURE:创建存储过程 CREATE FUNCTION:创建用户函数 CREATE VIEW:创建视图 CREATE TRIGGER:创建触发程序 CREATE SEQUENCE;
-
SEQUENCE(序列号)
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。语法:例子:CREATE SEQUENCE sequence_marks INCREMENT BY 1 --每次加几个 START WITH 1 --从1开始计数 NOMAXVALUE --不设置最大值 NOCYCLE --一直累加,不循环 CACHE 10 --使序列号预分配,默认NOCACHE
删除:SELECT sequence_marks.currval from dual insert into table_name values(sequence_marks.nextval);
drop sequence sequence_marks;