oracle管理和创建表

前端之家收集整理的这篇文章主要介绍了oracle管理和创建表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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,sal,deptno)values(&empno,'&ename',&sal,&deptno) 输入 empno 的值: 1002 输入 ename 的值: Tom 输入 sal 的值: 1500 输入 deptno 的值: 20 原值 1: insert into emp(empno,&deptno) 新值 1: insert into emp(empno,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,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,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

猜你在找的Oracle相关文章