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,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、付费专栏及课程。

余额充值