一、创建表
创建表:create table student(
name varchar2(20),
sex char(1),
age number(2),
birth date
);
使用子查询创建表:
create table student_bak as(
select name,sex from student
);
create table student_bak as(
select * from student
);
create table student_bak as(
select name,sex from student where age=18
);
外部表...
数据字典...
属于其他用户的表不会包含在您的方案中。如果需要使用不在自己方案中的表,可以将表所有者的姓名用作表名的前缀:
select * from mary.学生;
二、数据类型
字符值:char(固定大小, 最多2000 个字符);
varchar2(可变大小, 最多4000 个字符);
clob(可变大小, 最大128 兆兆字节)
数值:
number(可变大小, 最大精度38 位数)
日期和时间值:date、timestamp…、interval
二进制值(例如,多媒体:JPG、WAV 和MP3 等):
raw(可变大小, 最大2000 个字节);
blob(可变大小, 最大128 兆兆字节)
对于字符值,通常最好使用varchar2 或 clob,而不要使用char,因为这样可节省空间。
数值既可以是正数也可以是负数。例如,number(6,2) 可以存储从+9999.99 到–9999.99 之间的任何值。
timestamp 数据类型是DATE 数据类型的扩展,它允许存储小数形式的秒值。
如,timestamp(3) 允许在整秒后保留3 位数字。
TIMESTAMP WITH LOCAL TIME ZONE ...
三、修改表
添加列:alter table student add (stu_id number(8));
更改列的数据类型、大小和默认值:
alter table student modify (stu_id number(7),name varchar2(15));
设置默认值:
如:alter table 员工 add (聘用日期 date default sysdate);
删除列:
alter table student drop column sex;
将列设置为不使用:(比“删除列”有好处)
alter table student set unused(sex);
删除当前已标记为“不使用”的所有列:
alter table student drop unused columns;
只有当列中仅包含 Null 值或者不更改大小时,才能将char 列转换为varchar2 或者将varchar2 列转换为char 。
更改列的默认值只会影响表的后续插入行。
不能删除表的所有列;至少要保留一列。
一旦删除了列,将无法恢复其数据值。
一旦将列设置为“不使用”,则不能访问此列,也不能用DESCRIBE 语句显示其数据。永久删除,不能回退。
删除表:
drop table student_bak;
闪回表:(将删除的表从回收站中恢复)
flashback table student_bak to before drop;
只需查询数据字典视图 USER_RECYCLEBIN,即可知道有哪些对象可以恢复:
select 原始名称,操作,删除时间 from user_recyclebin;
更改表名称:
rename student_bak to student_backup;
截断表操作:(从表中删除所有行并释放该表所占用的存储空间)
truncate table student_bak;
(不能回退行删除操作。)
delete 语句也可以从表中删除行,但不释放存储空间。
comment on table ...(可为列、表或视图添加最多2000个字符的注释)
闪回查询 ...(查看数据在更改之前的状态)