Oracle-10 创建和维护表


创建表

创建一张表名为person的表:
create table person (
id number(4),
cname varchar2(20),
birthday date,
heigth number(3),
weigth number(5, 2),
country_code char(2) default ‘01’
);

插入默认值
insert into person(id,cname,birthday,heigth,weigth) values(1,’Tom’,sysdate,180,250);
insert into person(id,cname,birthday,heigth,weigth,country_code) values(2,’Marry’,sysdate,180,250,’03’);

使用默认值修改
update person set country_code=default where id=2;

学校想做一个选课系统,其中涉及到课程表,学生表,请分别创建这两个表,自己思考表中应有的列及数据类型。
–课程表
create table course(
cid number(4), –课程编号
cname varchar(50),–课程姓名
ctypeID number(4), –课程类型
score number(1), –学分
chour number(2) –课时
);

–学生表
create table student(
sid char(10), –学生编号 2016003004
–个人基本信息
sname varchar2(20), –学生姓名
sex char(4) default ‘不详’, –性别
telephone varchar2(15), –联系地址 其他个人信息略….
–院系信息
collegeID number(4),–学院
majorID number(4), –专业
classID number(4), –班级
inDate date –入学日期
);

用子查询语法创建表
默认复制所有列
使用子查询创建表dept10,且将部门10的员工数据复制到该表
create table dept10 as select * from emp where deptno=10;

复制指定列
使用子查询创建表dept20,且将部门20的员工的编号、姓名、职位复制到该表
create table dept20(empno,ename,job) as select empno,ename,job from emp where deptno=20;

引用另外一个用户的表
select * from tom.course;
–如果无法查询,需tom用户给scotts授权当前表的查询权限select
grant select on tom.course to scott;

修改表(添加列或修改列):
alter table add | modify [列 列类型(长度) default 默认值]

注意:
1. 修改数据类型:已有的行数据必须为空
2. 修改长度原则:
–数值型修改长度:当长度向小改时,已有行的数该列必须为空;当长度向大改时,可以随意修改。
–字符型修改长度:当长度向小改时,只要修改后的值能容纳下当前已有数据的最大值即可,当长度向大改时,可以随意修改。
3.修改列的默认值:默认值的修改不会影响已经存在的行,只影响新增加的行

在person表上增加性别字段
alter table person add(sex char(2));

将姓名为MARRY的用户sex列数据类型修改为varchar2(4);
insert into person(id,cname,birthday,heigth,weigth,sex) values(2,’marry’,sysdate,180,250,’男’);
alter table person modify(sex varchar2(4));

添加默认值
给person表的sex列添加默认值’不详’
alter table person modify(sex default ‘不详’);
insert into person(id,cname,birthday,heigth,weigth) values(3,’jack’,sysdate,180,250);


删除列
alter table 表名 drop column 列名;
alter table 表名 drop (列名1,[列名2….]);

原则:
1. 列可以有也可以没有数据。
2. 表中至少保留一列。
3. 列被删除后,不能再恢复。
4. 被外键引用的列,不能被删除。

删除单列
将person表中的sex列删除
alter table person drop column sex;

删除多列
将person表中的heigth,weigth列删除
alter table person drop(heigth,weigth);

表中必须至少保留一列
alter table person drop(id,cname,birthday,country_code);–错误 无法删除表中的全部列

被外键引用的列,不能被删除
alter table dept drop (deptno);–无法删除父项关键字列 deptno被emp表的deptno所关联


重命名
将表person的表名修改为person20180731
rename person to person20180731;


截断表
truncate为DDL语句,删除表中所有数据,释放存储空间,且无法撤回,默认提交事务
delete为DML语句,可以删除指定数据行,不释放存储空间,需使用commit或rollback控制事务结束

截断表person
truncate table person; – 删除所有数据
delete from person; – 删除所有数据


数据字典

查看当前用户下所有的表
select * from user_tables;

通过desc命令查看表结构
desc emp;

猜你喜欢

转载自blog.csdn.net/qq_36090002/article/details/81395057