时间:2021-07-01 10:21:17 帮助过:14人阅读
之前学习过复制表的语法--------------------------------------------------
CREATE TABLE 表名称 AS (子查询)
--如果现在子查询写的是 select * from emp,表示将表结构和表内容一起复制
--如果现在子查询、写的是 select * from emp where1=2,加入了一个永远不可能成立的条件,则此时表示的只是复制表结构,但是不复制表内容
CREATE TABLE tmp AS(SELECT * FROM emp WHERE 1=2);
SELECT * FROM tmp;
例子:创建表
CREATE TABLE person
(
pid VARCHAR2(18),
NAME VARCHAR2(200),
age NUMBER(3),
birthday DATE,
sex VARCHAR2(2) DEFAULT ‘男‘
);
SELECT * FROM person;
像表中插入数据
INSERT INTO person(pid,NAME,age,birthday,sex)VALUES
(‘1111111111‘,‘张三‘,30,to_date(‘1976-02-13‘,‘yyyy-mm-dd‘),‘女‘);
SELECT * FROM person;
SELECT to_date(‘1889-09-12‘,‘yyyy-mm-dd‘) from dual;
INSERT INTO person(pid,NAME,age,birthday) VALUES
(‘22222222‘,‘李四‘,31,to_date(‘1975-02-13‘,‘yyyy-mm-dd‘));--sex默认了,两下都不要写
如果现在希望在表中增加一个address的字段,则可以将表先删除之后再重新创建
3.1.3表的删除--(重点)
DROP TABLE 表名称
例子:删除person表
DROP TABLE person;
重新编写新的脚本
CREATE TABLE person
(
pid VARCHAR2(18),
NAME VARCHAR2(200),
age NUMBER(3),
birthday DATE,
sex VARCHAR2(2) DEFAULT ‘男‘,
adress VARCHAR(200)
);
SELECT * FROM person;
如果现在假设一个表中已经存在了大量的记录,再删除的话,是不是很麻烦,
所以在SQL语句之中提供了专门修改表结构的命令。增加列,修改列。
3.1.4表的修改(了解)
--在一般的数据库程序开发中,很少去修改表结构,这一点在IBM DB2数据库中就没有
--提供alter table指令,所以在建表的时候一定要考虑到位
在SQL语法操作中,提供了ALTER指令,通过ALTER指令就可以增加新的列。
例如:为最早的person表中增加一个address列
--数据库脚本指删除,创建,测试数据
DROP TABLE person;
CREATE TABLE person
(
pid VARCHAR2(18),
NAME VARCHAR2(200),
age NUMBER(3),
birthday DATE,
sex VARCHAR2(2) DEFAULT ‘男‘
);
INSERT INTO person(pid,NAME,age,birthday,sex)VALUES
(‘1111111111‘,‘张三‘,30,to_date(‘1976-02-13‘,‘yyyy-mm-dd‘),‘女‘);
INSERT INTO person(pid,NAME,age,birthday) VALUES
(‘22222222‘,‘李四‘,31,to_date(‘1975-02-13‘,‘yyyy-mm-dd‘));
ALTER TABLE 表名称 ADD(列的名称 列的类型 DEFAULT 默认值,列的名称 列的类型 DEFAULT 默认值,。。。)
ALTER TABLE person ADD(address VARCHAR2(200 ) DEFAULT ‘暂无地址‘ )
现在假设修改person中name字段的值,为name的长度修改为50,默认值为”无名氏“
ALTER TABLE 表名称 MODIFY(列的名称 列的类型 DEFAULT 默认值)
--但是在修改表结构的时候。如果假设数据库中对应的字段里有一个很长的数据,则无法将表的长度缩小
--例如现在name字段中存在一个长度为20个字符的字母,原本的name可以容纳200个内容,但是此时要将name字段的长度修改为10,则肯定无法实现
例子:修改person表中的name列,加入默认值,修改大小
ALTER TABLE person MODIFY (NAME VARCHAR2(20)DEFAULT ‘无名氏‘);
例子:再向表中插入数据,但是不插入姓名和内容
INSERT INTO person(pid,age,birthday) VALUES
(‘22222222‘,31,to_date(‘1975-02-13‘,‘yyyy-mm-dd‘));
--从以上的操作结果中发现身份证编号重复了,是因为没有约束条件
3.1.5为表重命名(了解)
--在Oracle中提供了rename命令,可以为表重新进行命名,但是此语句只能在Oracle照片那个使用
RENAME 旧的表名称 TO 新的表名称;
例子:将person表重命名为tperson
RENAME person TO tperson;
SELECT * FROM tperson;
3.1.6截断表
如果现在person表中的一条数据使用delete语句删除了,即可通过rollback进行回滚,如果现在假设想要清空一张
表的数据,但是同时又不需要回滚,可以立刻释放资源就需要使用截断
TRUNCATE TABLE 表名称;
例子:截断tperson表
TRUNCATE TABLE tperson;--立刻释放资源
SELECT * FROM tperson;
Oracle笔记-表的管理
标签: