SQL-Oracle06表的管理

来源:互联网 发布:jenkins 数据库配置 编辑:程序博客网 时间:2024/06/15 03:02


创建表
CREATE TABLE person(
 pid   VARCHAR2(18) ,
 name  VARCHAR2(200),
 age   VARCHAR2(3),
 birthday NUMBER(3),
 sex   VARCHAR2(2) DEFAULT '男'
);

eg:向表中添加数据
INSERT INTO person(pid,name,birthday,sex) VALUES
('111111111111111111','张三',30,TO_DATE('1976-02-13','yyyy-mm-dd'),'女') ;
INSERT INTO person(pid,name,birthday) VALUES
('222222222222222222','李四',31,TO_DATE('1986-02-13','yyyy-mm-dd')) ;
select * from person;
set linesize 100;
select * from person;

删除表  DROP TABLE 表名称;

修改表结构  : 增加列,修改列。

表的修改

ALTER 指令,可增加新的列。

 

ALTER语法:
ALTER TABLE 表名称 ADD(列的名称 列的类型  DEFAULT 默认值 ,列的名称列的类型 DEFAULT 默认值,...)

ALTER TABLE person ADD(address VARCHAR(200) DEFAULT '暂无地址');


修改表结构的语法:
ALTER TABLE person MODIFY(列的名称 列的类型 DEFAULT 默认值)
   但是再修改表结构的时候,如果假设数据库中对应的字段里有一个很长的数据,则
   无法将表的长度缩小,eg:name字段中存在一个长度为20个字符的字母,原本的name可容纳200个内容
   ,但是此时要将name字段的长度修改为10,则肯定无法实现。


eg:修改person表中的name列,加入默认值,修改大小。
ALTER TABLE person MODIFY(name VARCHAR2(20) DEFAULT '无名氏')
eg:在向表中插入数据,但是不插入姓名的内容
INSERT INTO person(pid,age,birthday) VALUES
('333333333333333333',32,TO_DATE('1986-02-13','yyyy-mm-dd'));
以上插入内容的时候没有插入姓名
SET LINESIZE 300 ;
select * from person ;
以上的操作结果中也可以发现,身份证编号重复了,这是表中没有约束的原因。

在一般的数据库程序开发中,很少去修改表结构,这一点在IBM DB2数据库中就没有
提供ALTER TABLE 职工员,所以在建表的时候一定要考虑到位。

为表重命名

在Oracle中提供了rename命令,可以为表重新命名,但是此语句只能在Oracle中使用。
语法格式
RENAME 旧的表名称 TO 新的表名称 ;
eg : 将person表重新命名为tperson
RENAME person TO tperson ;


截断表
如果现在将person表中的一条数据使用DELETE语句删除了,则可以通过rollback进行回滚,
如果现在假设要想清空一张表的数据,但是同时又不需要回滚,
可以立刻释放资源就需要使用截断表语法:
TRUNCATE TABLE 表名称 ;
eg:截断tperson表

SELECT * FROM person ;
TRUNCATE TABLE tperson ;
select * from tperson ;
rollback ;
select * from tperson ;//未选定行

0 0