oracle 数据库基本操作——数据定义语言
Posted 醉风晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据库基本操作——数据定义语言相关的知识,希望对你有一定的参考价值。
熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引。
- (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。
create table student (sno char(5), sname varchar2(8), sage number(2) check(age between 12 and 60), sdept char(2), sclass char(2), constraint student_pk primary key(sno));
create table course (cno char(3) not null primary key, cname char(16), ctime number(3));
create table score ( Sno char(5), cno char(3), grade number(3), constraint score_pk primary key(sno,cno), constraint s_sno_fk foreign key(sno) references student(sno), constraint s_cno_fk foreign key(cno) references course(cno), constraint score_ck1 check (grade >= 0 and grade <= 100));
create table teach ( tname char(16) not null, tsex char(3) not null, cno char(3) not null , tdate date not null, tdept char(2) not null, constraint teach_pk primary key(cno), constraint teach_cno_fk foreign key(cno) references course(cno));
- (修改数据库表) 在Student表中增加SEX(C,2) 字段。
alter table student add(sex char(2));
- (修改列名) 将Student表中列名SEX修改为SSEX。
alter table student rename column sex to ssex;
modify(ssex char(2) check(ssex in (\'男\',\'女\'))); - (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。
alter table student modify(sname char(10)not null);
- (建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。
create index sc_grade on score(cno,grade desc);
- (删除索引) 删除索引SC_GRADE。
drop index sc_grade;
- (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
create table s1(
sno char(5) not null,
sname char(10) not null unique,
sd char(2),sa number(2)); - (修改数据库表) 删除成绩表Score的参照完整性约束关系。
alter table score drop constraint s_sno_fk;
alter table score drop constraint s_cno_fk; - (修改数据库表) 添加成绩表Score的参照完整性约束关系。
alter table Score add(constraint s_sno_fk foreign key(sno) references student(sno), constraint s_cno_fk foreign key(cno) references course(cno));
-
(修改数据库表名) 将数据库表S1改名为Student_Temp。
rename S1 to student_temp;
- 查看表的约束条件
select constraint_name, table_name, r_owner, r_constraint_name from all_constraints where table_name = \'score\';
- 删除表中的列
alter table student drop column spec;
- 查看用户下所有的表名
select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select table_name from dba_tables; //包括系统表 select * from user_indexes //可以查询出所有的用户表索引
- 查看表中所有的列名
-
select column_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where table_name=\'STUDENT\';//表名必须大写
//或者
desc student;
在定义外键约束条件时,不能把其他表中没有的属性定义在本表的外键中,否则会生成一个错误;
在建表时,因为约束条件的名称被重复定义,导致表建不起来:改进方法,将课本上的约束条件名称家上表名前缀,避免重复性定义问题;
经常会遗漏分号,导致cmd中格式脏乱;
在设置一个属性的类型时,如果设置为not null则不能再更改它的属性为null;
在oracle中汉字占得是三个字节,所以姓名出现四个字就超出了范围,需要修改其范围,性别应该修改为3个字节;
姓名不可以设置为not null unique ,如果出现重名就会发生错误,因为当时设置了unique最后还得重建表,删除此约束条件;
删除表数据有两种方法:delete和truncate。
delete的用法如下:
delete from <表名> [where条件]
truncate的用法如下:
truncate table <表名>
delete和truncate的区别如下:
1、delete可以删除表中的一条或多条数据,也可以删除全部数据;而truncate只能将表中的全部数据删除。
2、delete删除表数据后,标识字段不能复用。也就是说如果你把id=10(假如id是标识字段)的那行数据删除了,你也不可能再插入一条数据让id=10.
3、truncate删除表数据后,标识重新恢复初始状态。默认为初始值为1,也就是说,truncate之后,再插入一条数据,id=1.
但是在使用truncate删除数据时可能受到外键的限制,必须从子集开始删除,才可以删除数据;
参考:http://www.cnblogs.com/laipDIDI/articles/2615210.html
http://www.jb51.net/article/82660.htm
以上是关于oracle 数据库基本操作——数据定义语言的主要内容,如果未能解决你的问题,请参考以下文章