Oracle --- 创建和管理表

本文详细介绍了在 Oracle 数据库中创建和管理表的各种操作,包括遵循的命名规则、CREATE TABLE 语句的使用、通过子查询复制表结构、ALTER TABLE 语句用于追加、修改、删除列及重命名列的操作。此外,还涵盖了清空表、改变对象名称、数据插入、更新、删除以及回滚等数据处理方法。

创建和管理表

开发工具与关键技术:Oracle
作者:吴东梅
撰写时间:2019-04-10

命名规则
表名和列名:
•必须以字母开头
•必须在 1–30 个字符之间
•必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
•必须不能和用户定义的其他对象重名
•必须不能是Oracle 的保留字

CREATE TABLE 语句
创建表 (这是根据自己的需求去创建表)
创建了一个名叫test 的表,里面的字段有id,name,hire_date。
create table test(id number(6),name varchar2(10),hire_date date);
执行完上面语句之后,把这张表可以查询出来就证明已经创建成功了,如下图:
在这里插入图片描述
使用子查询创建表(也可以在子查询加上where条件,复制自己想要的数据或表结构)
例如:
复制现有的表:
1、创建一个名叫emp1 的表,里面的列名和数据是从employees表复制过去的。
create table emp1 as select * from employees;
执行上面的语句成功之后,再把这张新表的数据查询出来,你便会发现这张表的数据跟employees 表的所有表结构和数据是一样的。
在这里插入图片描述
2、如果要创建一个表名为emp2,要其表结构跟employees表一样,就用子查询创建,如下:
create table emp2 as select * from employees where 1=2;
执行完上面的语句成功之后,在查询出这张表,你会发现这张表拥有着和employees 表的一模一样的表结构,因为在后面加了一个无须有的条件。
在这里插入图片描述
ALTER TABLE 语句
使用 ALTER TABLE 语句可以:
•追加新的列
•修改现有的列
•为新追加的列定义默认值
•删除一个列
•重命名表的一个列名
•使用 ADD 子句追加一个新列
往test这张表里面增加(追加)名为sex ,类型为char(1) 的列。
alter table test add sex char(1);
执行成功之后,再查询这张表就会新增了一个列,可以跟前面刚创建表的截图进行对比一下。
在这里插入图片描述
在新增一个新列的时候,也可以给新增的这个列用default设置一个默认值。前面我们创建了一个命名为emp1的表,我们现在往这张表里面新增一个列,并设置一个默认值。
alter table emp1 add test2 number(10) default 100;
在这里插入图片描述
修改一个列 MODIFY(修改)
•可以修改列的数据类型, 尺寸和默认值。
•对默认值的修改只影响今后对表的修改。
1、把test表里面的sex列的类型由char(1)修改成char(2);
alter table test modify sex char(2);
在这里插入图片描述
删除一个列 DROP COLUMN
1、把test表里面的sex列删除掉。
alter table test drop column sex;
执行完之后,那么test表里面的sex列便会消失。
重命名一个列 rename column 原列名 to 新列名。
1、把test里面的id 列的列名重命名为 test_id 。
alter table test rename column id to test_id;
执行完成之后,名字也已经更换了,可以和前面的截图进行对比。
在这里插入图片描述
清空表
•TRUNCATE TABLE 语句: truncate table
–删除表中所有的数据
–释放表的存储空间
•TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据,可以回滚。
commit; --提交语句。 rollback;–回滚语句。
语法:
truncate table + 表名;
改变对象的名称 (可以修改表名)
1、把表的名称用rename to 重新命名.就是把表名为test 用(rename to 新表名) 把原来的表名修改成新的表名。
alter table test rename to test0;
执行完成之后,你会发现在命令窗口执行test 是不存在的(图一),执行test0 的表结构是原来test的,这就意味着修改成功了。也可以在SQL窗口里面去查询,修改成功之后,再查原来的表名,即会报图二的错。
图一:
在这里插入图片描述
图二:
在这里插入图片描述
数 据 处 理
插入数据 INSERT
使用这种语法一次只能向表中插入一条数据。
INSERT INTO + 表名
VALUES + (需要插入表的数据,顺序和数据类型要跟表对应)
1、往test0 里面添加一条数据为values 括号里面的值。(添加进去的数据除了数字类型可以不用单引号,其他的都要。)
insert into test0
values (1,‘梅子’,‘13-3月-19’,‘女’);
刚开始这张表是空白的,新增进去之后就可以查这张表的时候显示出来刚刚新增进去的数据。
在这里插入图片描述
创建脚本
•在SQL 语句中使用 & 变量指定列值。
•& 变量放在VALUES子句中。
如果在插入数据的时候,不想把数据写在values括号里面,那么在values括号里面把表的列名全部列出来,不是数字类型要用单引号框起来,然后在每个列的前面加一个 & 变量指定列值,这样在运行的时候就会弹出一个框,让你在对应的文本框里面输入你想要插入的数据。如上就是这种方法的写法。
1、INSERT INTO DEPT1
VALUES (&id, ‘&name’,’&hire_date’);
在这里插入图片描述
从其它表中拷贝数据
•在 INSERT 语句中加入子查询。
•不必书写 VALUES 子句。
•子查询中的值列表应与 INSERT 子句中的列名对应。(表结构要一样)
例如:1、从employees里面查出department_id是90的数据复制到emp2 表里面。因为没有表明要复制哪个列名下的数据,所以默认是整张表的数据,所以emp2 的表结构要跟employees 的表结构和字段数量和列名都要一样(如图一),如果不对应就会报对应的值过多或过少(如图二)。
INSERT INTO emp2
SELECT *
FROM employees
WHERE department_id = 90;
成功之后,图一:
在这里插入图片描述
图二:
在这里插入图片描述
UPDATE 语句语法 update …set…
•可以一次更新多条数据。
1、update test2 set name = ‘lili’
where name = ‘梅子’;
在这里插入图片描述
再使用更新语句的时候,一定要在后面加上where条件,否则将会把整张表的那一列的数据全部修改。
在进行Update语句之后,在没有进行commin 提交时,还是可以用rollback 回滚语句进行回滚,把数据还原回来。

DELETE 语句 删除数据
使用WHERE字句删除指定的记录。
•如果省略 WHERE 子句,则表中的全部数据将被删除
回滚到保留点
•使用 SAVEPOINT 语句在当前事务中创建保存点。
•使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

如果修改数据没有进行提交操作,那么这个语句只对本窗口有用,对其他窗口无效。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值