oracle表的管理--建表,oracle管理和创建表

本文详细介绍了SQL语言的三大类别:DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言),包括增删改查操作、表的创建与修改、事务的提交与回滚、视图和序列的使用,以及约束条件和同义词的创建。此外,还讨论了不同操作之间的区别,如DELETE与TRUNCATE TABLE,并探讨了数据库的事务隔离级别和回收站功能。
摘要由CSDN通过智能技术生成

sql语句

1.DML语句(Data Manipulation Language)

也就是通俗的 增、删、改、查

2.DDL语句(Data Definition Language 数据定义语言)create/alter/drop/truncate table create/drop view,create/drop index(sequence,symbol)

3.SCL语句(Data Control Language 数据控制语言)commit rollback

表的增删改查

–insert语句

–插入一个新员工

–隐式插入null值、显式插入null值

insert into emp(empno,ename,job,sal) values(7802,'LiSi','CLERK',8000)

–地址符&:类似于java代码中的prepareStatement

insert into emp(empno,ename,sal,deptno)values(&empno,'&ename',&sal,&deptno) 输入 empno 的值: 1002 输入 ename 的值: Tom 输入 sal 的值: 1500 输入 deptno 的值: 20 原值 1: insert into emp(empno,ename,sal,deptno)values(&empno,'&ename',&sal,&deptno) 新值 1: insert into emp(empno,ename,sal,deptno)values(1002,'Tom',1500,20) 已创建 1 行。

–在DML语句中可以使用地址符

select * from &a;

输入 a 的值: emp

原值 1: select * from &a 新值 1: select * from emp

–一次插入(拷贝)一批数据。

–1、首先创建一张表

create table emp20 as select * from emp where 1=2;

–一次性将emp中所有20号部门的员工一次性插入到emp20中。

insert into emp20 select * from emp where deptno=20;

–更新语句

update emp20 set deptno = 30 where ename = 'Tom';

–如果delete中没有where条件,就删除整个表中的数据,等同于truncate table

–truncate(DML语句)删除表

truncate table emp20;

表被截断。

delete和truncate table的区别

1.delete是DML语句,truncate table是DDL语句。DML语句可以rollback,DDL语句不可以回滚。

2.delete逐条删除;truncate先摧毁,再重建。

3.delete会产生碎片;truncate不会。

4.delete不会释放空间;truncate会。

–关闭回显语句 set feedback off

–开启计时操作 set timing on

oracle中的事务

1.事务的起始标志:DML语句(增删改查)

2.事务的结束标志:提交:显示提交:commit

隐式提交:DDL语句(操作表的语句),正常退出 exit

回滚:显示 rollback

隐式 非正常退出,停电,宕机

–保存点

create table testsavepoint (tid number,tname varchar2(20)) insert into testsavepoint(tid,tname) values(&tid,&tname) 输入 tid 的值: 102 输入 tname 的值: 'Tom' 已创建 1 行。 savepoint a;

保存点已创建。

insert into testsavepoint(tid,tname) values(103,'Maty') savepoint b;

保存点已创建。

rollback to savepoint a;

回退已完成。

oracle的隔离级别

1、读已提交的数据(read commited)

2、串行化(serializable)

3、只读(read only)

–创建表

create table test1 (tid number,tname varchar2(20),hiredate date default sysdate)

–快速建表

–创建表:包含员工号 姓名 月薪 年薪 部门名称

create table empcorn as select empno,ename,sal,sal*12 money from emp e,dept d where e.deptno = d.deptno

–rowid 行地址

select rowid,empno,ename from emp;

ROWID EMPNO ENAME

------------------ ---------- --------------------

AAADheAAEAAAADoAAA 7369 SMITH

AAADheAAEAAAADoAAB 7499 ALLEN

AAADheAAEAAAADoAAC 7521 WARD

–修改表:追加新列,修改列,删除列,重命名列

–1、添加列

alter table test1 add photo blob;

–2、修改表

alter table test1 modify tname varchar2(40);

表已更改。

–3、删除列

alter table test1 drop column photo;

表已更改。

–4、重命名列

alter table test1 rename column tname to username;

表已更改。

–查看回收站

show recyclebin

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

---------------- ------------------------------ ------------ -------------------

TESTSAVEPOINT BIN$aI6puMaDQfikeiQIHli4Fw==$0 TABLE 2016-09-01:09:55:26

–彻底删除表

drop table test1 purge;

约束条件

–check约束别名 constraint+名字

–创建一个表,包括所有的约束条件

create table myperson( pid varchar2(18) constraint myperson_PK primary key,--主键约束 pname varchar2(4) constraint myperson_Name not null,--非空约束 sex varchar2(4) constraint myperson_Sex check (sex in ('男','女')),--check约束 email varchar2(30) constraint myperson_Email unique, --唯一性约束 deptno number constraint myperson_FK references dept(deptno) on delete set null--外键约束 )

视图

–创建一个视图:员工号 姓名 月薪 年薪

create view view1 as select empno,ename,sal,sal*12 年薪 from emp 第 1 行出现错误: ORA-01031: 权限不足

–没有权限,给scott用户设置一个全新

grant create view to scott;

–视图的优点

–视图的概念:视图是一张虚表,相当于一个封装起来的sql语句。

–视图只能进行创建或者替换,不能进行修改。

–创建或者替换视图

create view view2 as select * from emp where deptno = 10;

视图已创建。

SQL> –设置视图为只读。

create or replace view view2 as select * from emp where deptno = 10 with read only

–删除视图

drop view view1;

视图已删除。

序列

–用于作为主键的自动增长,以数组的形式存储,数组默认长度为20.

–序列不连续

–序列存储在内存中,默认长度为20.

–创建一个序列

create sequence myseq;

序列已创建。

create table testseq(tid number,tname varchar2(8));

表已创建。

查询序列

select myseq.nextval from dual;

NEXTVAL

----------

1

插入序列

insert into testseq values(myseq.nextval,'Tom');

已创建 1 行。

同义词synonym

–给hr.employees取一个别名。

create synonym hremp for hr.employees

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值