(二)Oracle 补充

本文详细介绍了Oracle数据库中创建、修改和管理表的操作,包括创建表的命名规则,如何添加、修改和删除列,拷贝表的两种方式,清空和删除表的区别,以及表的约束如非空、唯一、检查、主键和外键的使用。还提到了Oracle的闪回技术和回收站机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(二)Oracle 补充

创建表

命名规则
1.必须以字母开头
2.必须在1-30个字符之间
3.必须只能包含 A-Z , a-z , 0-9 , _ , $ ,和 #
4.必须不能和用户定义的其他对象重名
5.必须不能是Oracle的保留字
6.Orange默认存储表名都是大写

格式:
create table 表名

列明1 类型1,
列明2,类型2,


创建一个员工表 t1,员工号id(整数),姓名name(字符串)
create table t1(id number , name varchar2 (20) ) ;

说明:在 sql 标准中 varchar 是可变长的字符串。而在 Oracle 中,他自身拓展了一下 varchar2 定长字符串

修改表

格式:alter table 表名 xxxxx
1. 往t1表里边添加一列 email varchar(40)
alter table t1 add email varchar(40);
2.修改t1表email列明为qq
alter table t1 rename column email to qq;
3.修改t1表qq列表类型为varchar(50)
alter table t1 modify qq varchar(50);
4.删除 t1表qq列:drop column
5.修改t1表名为t2
rename t1 to t2;

拷贝表

拷贝表其实是另一种创建表的方式
1.创建一张表emp2,数据跟emp表一样
create table emp2 as select *from emp;
2.创建一张表emp3,只有emp表结构,没有数据
方式一 :
1.create table emp3 as select *from emp;
2.delete from emp3;

方式二 :
create table emp3 as select *from emp where 1=2;

清空表

格式:(1).delete from 表名 (2).truncate table 表名
delete 跟 truncate优缺点
1.delete逐条删除表”内容“,truncate先摧毁表再重建(Oracle后来优化了这一缺点)
2.delete是DML语句,truncate是DDL语句。DML语句可以闪回和回滚。
3.由于delete是逐条操作数据,所以delete会产生数据碎片,truncate不会产生(Oracle后来优化了这一缺点)
4.delete不会释放空间,truncate会释放空间

删除表

格式:drop table 表名 (Oracle提供了回收站机制,删表的时候先移动到回收站)
purge table 表名 (从回收站中彻底删除)
drop table 表名 purge (彻底删除表,不移动到回收站)
oracle提供了一个闪回技术,能将表还原到以前的某个时间点
闪回资料网址

表的约束

1.非空:not null
2.唯一:unique
3.检查:check
4.主键:primary key (隐含了 not null + unique)
5.外键:foreign key
创建表时,约束格式:
create table 表名
(
列表1 类型1【constraint 约束名1】约束类型2 constraint 约束名2,
列明2 类型2【constraint 约束名3】约束类型3

)

create table student
(
sid number constraint pk_student primary key, --学生Id主键约束
sname varchar2(20) constraint nn_student_name not null,–学生姓名非空约束
email varchar2(20) constraint un_student_email unique --学生邮件唯一约束
constraint nn_student_email not null, --同时邮件可再设非空,没有“,”
age number constraint chk_student_age_min check(age > 10), --学生年龄设置check约束
ge|nder varchar2(6) constraint chk_student_gender check(gender in (‘男’, ‘女’)),
deptno number constraint fk_student references dept (deptno) ON DELETE SET NULL
)

外界约束可以定义多个字段
** constraint fk_student foreign key (字段1,字段2) references dept(字段1,字段2)**

测试 :

SQL> insert into student values(1, ‘Tom’, ‘tom@126.com’, 20, ‘男’, 10) //正确插入表数据。

SQL> insert into student values(2, ‘Tom’, ‘tom@126.com’, 15, ‘男’, 10)
//违反un_student_email约束。

SQL> insert into student values(3, ‘Tom3’, ‘tom3@126.com’, 14, ‘男’,100 ) //违反完整约束条件 (SCOTT.FK_STUDENT) - 未找到父项关键字

可以查看指定表(如student)的约束,注意表名必须大写。
SQL> select constraint_name, constraint_Type, search_condition
from user_constraints where table_name=‘STUDENT’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值