oracle03
(1)表中数据操作
插入数据:
a.插入单条 insert into myemp(empno,ename) values(1111,'张三');
b.批量插入 insert into myemp select * from emp; 使用了子查询
修改数据:
a.修改多个列 update myemp set ename=''糯米团子 ,sal=15000 where empno=7369;
删除数据:
a.使用delete删除数据 delete from myemp where empno=7369;
b.使用truncate 删除整张表数据 truncate table myemp;
c.delete和truncate 删除数据的区别
事务+内存+碎片+执行时间
(2)表操作
创建表:
a.基本创建表语句
create table myemp1(
id number(10) primary key,
name varchar2(10) not null,
gender varchar2(4) check(gender in('男','女'))
---constraint myemp1_id_pk primary key(id)
)
b.使用子查询创建表
create table myemp2 as select * from myemp where 1=2;
由于1=2为假,该语句只拷贝了结构,没有拷贝数据;
删除表:
a.彻底删除表
drop table myemp3 purge; 不加purge是暂时放到回收站中了
b.drop之后的数据放到了recyclebin回收站中
查看回收站:show recyclebin;
彻底清除回收站:purge recyclebin;
彻底删除表:drop table myemp3 purge;
查看回收站表数据: select * from "BIN$YTQc8f5pTZ6kuFyu4GSeug==$0";
c.闪回
flashback table myemp3 to before drop;
修改表:
a.修改表中列
oracle: alter table myemp3 modify ename vachar2(20); 不能带column
mysql : alter table myemp3 modify (column) ename varchar(20);
b.增加表中列
oracle: alter table myemp3 add gender varchar2(4);
mysql : alter table myemp3 add (column) gender varchar2(4);
c.删除表中列
oracle: alter table myemp3 drop column gender; 必须带column
mysql : alter table myemp3 drop (column) gender;
d.重新命名表中列名
oracle: alter table myemp3 rename column ename to myname; 必须带column
mysql : alter table myemp3 change (column) ename myname varchar(20);
e.重新命名表名
oracle: rename myemp3 to myemp4;
mysql : rename table mysqltname3 to mysqltname4; 必须带table
(3)事务
a.oracle和mysql事务区别:
oracle中事务:
在insert/update/delete 中默认操作之后需要commit才能改变真正改变数据;
mysql中事务:
直接执行insert/update/delete 就已经改变了数据
b.设置事务:
set transaction read only;
c.事务之保存点
创建保存点 savepoint a;
回滚保存点 rollback to savepoint a;
d.oracle中支持3种事务;
read commited, read only ,serializable
(4)oracle中的对象(表、约束、序列、索引、视图、同义词....)
约束(保证数据完整性):
create table myemp3(
id number(10),
name varchar2(10) constraint myemp3_name_nn not null,--非空约束
gender varchar2(4) default '男',--默认值
deptno NUMBER(2),
email varchar2(20),
constraint myemp3_id_pk primary key(id), --主键约束
constraint myemp3_gender_ck check(gender in('男','女')), --检查约束
constraint myemp3_email_uk unique(email), --唯一约束
constraint myemp3_deptno_fk foreign key(deptno) references dept(deptno) on delete set null --外键约束
-- 没有这种写法constraint myemp3_name_nn not null ;
)
序列(主键自增使用)
创建序列:create sequence myemp3_seq;
使用序列:在insert into myemp3 values(myemp3_seq.nextval,'海洋','女',10,'101001@qq.com');
获取当前值使用myemp3_seq.currval
注意:myemp3_seq.nextval 每调用一次nextval 指针向后移动一位,也就是该序列增加一次;
索引(提高检索速度):
创建索引:create index myemp3_index on myemp3(name,email) 联合索引
drop index myemp3_index;
创建索引的场景:
该列值很多,经常被查询
如果该列值经常做update 操作不适合
视图(复杂查询结果放到一张虚拟表中,对视图的操作其实是构成视图基表操作):
创建视图:create or replace view myview_view as select * from myemp3;
删除视图:drop view myview;
理解:一般视图不推荐做插入、修改操作,推荐做with read only 查询、
因为如果遇到一些特殊语句,insert,update 操作就不行。
同义词(给其他对象取一个别名,方便其他用户调用和缩写对象名称):
创建同义词:create synonym mysys_synonym for myemp3; for 可以是其他对象
删除同义词:drop synonym mysys_synonym;
(5)plsql基本结构和变量声明

关于这部分出自 https://baike.baidu.com/item/plsql/9042661?fr=aladdin
基本结构:
declare
--声明变量
begin
--plsql体执行其他操作
end;
变量声明:
set serveroutput on --注意这里使用sqldeveloper 工具需要将控制台输出打开一次就行
DECLARE
id constant number(2):=1;--使用constant 关键词定义常量
name VARCHAR2(10):='贺文锦';--定义指定类型变量
mysal emp.sal%type;--定义引用存在表的列类型
myrow emp%rowtype;--定义引用存在表行类型
BEGIN
--常量就不能再赋值了 id:=2 错误
SELECT sal INTO mysal FROM emp WHERE empno=7369;
SELECT * INTO myrow FROM emp WHERE empno=7369;
dbms_output.put_line(id);
dbms_output.put_line(name);
dbms_output.put_line(mysal);
dbms_output.put_line(myrow.ename || ' ' || myrow.sal);
END;
oracle03的更多相关文章
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...
- Oracle-03:关系型数据库和非关系的数据库的各自优缺点与区别
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 常见的非关系型数据库: Mongo DB Redis HBase 二维表的介绍: 在关系模型中,数据结构表示为 ...
- oracle-03 表的管理
一.表名和列名的命名规则1).必须以字母开头2).长度不能超过30个字符3).不能使用oracle的保留字4).只能使用如下字符 a-z,a-z,0-9,$,#等 二.数据类型1).字符类char 长 ...
- (Oracle)自定义调用AWR&ADDM
Oracle->自定义调用AWR&ADDM 需求描述: 前面设定每天自动生成AWR用于提供前一天的数据库状态信息,但因数据库和信息过多不利于直观检查.此次新增ADDM诊断. ADDM诊断 ...
- (Oracle)自定义调用AWR
Oracle->自动发送AWR报告 2016年9月21日 09:31 需求描述: 每日或定期手动使用AWR报告来检查Oracle数据库状态不仅耗时也费力,需求使用脚本自动收集AWR报告. 分 ...
随机推荐
- 关于 jar 包数据更新的问题
参考: 人乐草心的博文 如果要更新一个 jar 包内文件的一些信息,又不想重新编译,发包,可以如下操作. Extract JAR file unzip 拆包方式 unzip xxx.jar [ -d ...
- 【转载】MySQL事务以及SELECT ... FOR UPDATE的使用
MySQL中的事务,默认是自动提交的,即autocommit = 1: 但是这样的话,在某些情形中就会出现问题:比如: 如果你想一次性插入了1000条数据,mysql会commit1000次的, 如果 ...
- php 面向对象三大特点:封装、继承、多态
在讲解这三大特性前,我们先讲访问修饰符. php中有3中访问修饰符:public protected private: public:表示公有的:可在本类.子类.对象实例中访问. protected: ...
- VBox 一款基于vue开发的音乐盒 序章
己基于vue写了一个 Mplayer, github地址:https://github.com/xiangwenhu/MPlaer, 演示地址:http://babydairy2017.cloudap ...
- linux下分割文件
split -l 115 XSMD.txt -d -a 2 XSMD.txt._ 注:将一个文件XSMD.txt分割成两个文件,每个大小115
- Latex 学习之旅(一)
学习资料: LaTeX笔记(八)--数学建模专题 如何用Markdown写论文? LaTeX排版札记 LaTeX排版札记:part 2-速查手册.导言区.扉页和公式 论文格式细节整理汇总 https: ...
- js获取指定时间的前几秒
最近项目上有一个需求是:根据一张图片的拍摄时间获取到这个时间前二后三的一个五秒钟的视频信息,通过查找相关资料写了一个方法拿来记录分享一下. //指定时间减2秒function reduceTwoS(d ...
- python之 文件读与写
python 进行文件读写的函数是open 或filefile_handler = open(filename,,mode) 模式 描述r 以读方式打开文件,可读取文件信息.w 以写方式打开文件,可向 ...
- 微信小程序demo-环球小镇
微信小程序-环球小镇说明:实现了环球小镇(huanqiuxiaozhen.com)移动端商城客户端部分功能,包括首页,分类,购物车,帐户,品牌列表,商品详情等功能. 项目下载:http://bb ...
- 《跟我学IDEA》六、插件(编码利器)
idea的另一个可爱之处,就是它的强大的插件,下面我以CodeGlance插件为例,这个可以快速定位代码. 第一节:安装插件 ● All plugins 显示所有插件. ● Enabled 显示当前所 ...