`

Oracle 第二天 基本操作

阅读更多
TopN查询
select *
from ( select *  from emp order by sal desc )
where rownum <= 5;

表间数据拷贝
insert into dept1(id, name)  select deptno, dname from dept;

insert into dept values(88, ' 装备部', ' 北京');
update  emp set sal = sal + 1000, comm = comm + 0.5 where empno = 7778;
delete  emp where empno = 7778;

Sql Plus的自动提交
show autocommit;
  • autocommit OFF
  • autocommit IMMEDIATE
set autocommit on;
set autocommit off;
保存点
insert into dept values(55,'Adv','Beijing');
insert into dept values(56,'Sec','Shanghai');
savepoint p1;
insert into dept values(57,'Acc','Tianjin');
---
select * from dept;
rollback to p1;
select * from dept;

数据库对象
创建表
create table scott.test1(
eid number(10),
name varchar2(20),
hiredate  date  default sysdate ,
salary number(8,2) default 0
);
使用子查询创建表
create table myemp(编号,  姓名,  年薪)
as select empno, ename, sal*12 from emp;
修改表结构
添加字段
alter table test1
add (
grade number(3),
phone varchar2(20) default '无'
);
修改字段
alter table test1
modify (
grade number(2),
phone varchar2(15) default '010-12345678'
);
删除字段
alter table test1
drop (grade, phone);
删除表
drop table test1;
重命名表
rename test1 to test88;
Oracle数据库中的表
用户定义的表
数据字典表:由Oracle数据库自动创建并维护的一组表,包含数据库信息
数据字典
数据字典是Oracle数据库的核心,用于描述数据库及其所有对象,数据字典由一系列只读的表和视图组成,这些表和视图属sys用户
拥有,由Oracle server负责维护,用户可以通过select语句进行访问
数据字典的内容
数据库的物理和逻辑结构
对象的定义和空间分配
完整性约束条件
用户,角色,权限,审计记录

数据字典视图
dba -所有方案包含的对象信息
all - 用户可以访问的对象信息
user -用户方案的对象信息
-- 查看当前用户拥有的所有表的名字
select table_name from user_tables;
-- 查看当前用户可以访问的所有表的名字
select table_name from all_tables;
-- 查看当前用户拥有的所有对象的类型
select distinct object_type from user_objects;
-- 查看所有用户拥有的所有对象的类型
select table_name from dba_tables;

约束
not null  (非空)
unique key    (唯一键)
primary key  (主键)
foreign key   (外键)
check (检查)
查看约束
查询用户字典视图user_constrains
查询用户字典视图user_cons_columns

创建/删除视图
create or replace view myview1(编号,  姓名,  职位,  工资)
as select empno, ename, job, sa l from emp where deptno = 20;
创建只读视图
create or replace force view myview2
as select empno, ename, job, sa l from emp2 where deptno = 20
with read only;

索引
create index myindex
on emp(ename);
自动创建- 在定义主键或唯一键约束时系统会自动在相应的字段
上创建唯一性索引。
创建索引的原则
字段取值分布范围很广
字段中包含大量空值
字段经常出现在 where 子句或连接条件中
表经常被访问、数据量很大,且通常每次访问的数据量小于记录
总量的2%~4%
查看索引
查询用户字典视图user_indexes---可得到用户的所有索引
查询用户字典视图user_ind_columns---获知索引建立在哪些字段上

序列
系统自动生成的、不重复的整数值
序列是一种数据库对象,可以被多个用户共享
典型用途是做为主键值,它对于每一行必须是唯一的
序列可以代替应用程序编号
可以对序列值进行缓冲存储,以提高访问效率
create sequence mysequence1
increment by 1
start with 1
nomaxvalue  nocycle ;
查询数据字典视图user_sequences
select * from user_sequences;
使用序列
select mysequence1.currval from dual;
select mysequence1.nextval from dual;
insert into test1 values(mysequence1.nextval, 'Tom');

同义词--同义词相当于对象的别名
create synonym gt1 for emp;

单行函数
字符函数
Upper 大写
select upper('abcde') from dual;
Lower 小写
select lower('ABCDE') from dual;
Initcap 第一个字母大写
select initcap(ename) from emp;
Concat 连接连个字符
select concat('a','b') from dual;
select 'a' || 'b' from dual;
Substr 子串
select substr('abcde',length('abcde')-2) from dual : cde
Replace 替换
select replace(ename,'A','a') from emp
Instr 在字符串中的位置
select instr('Hello World','or') from dual
lpad 左侧填充,rpad右侧填充
select lpad('Smith',10,'*') from dual
trim 去除空格
select trim('  ss  ') from dual;

日期函数
Last_day
select last_day(sysdate) from dual
找出每个月倒数第三天入职的员工
select * from emp where last_day(hiredate) -2 = hiredate
找出25年前雇佣的员工
select * from emp where hiredate <= add_month(sysdate,-25*12);
所有员工名字前加 ’Dear‘,并且名字首字母大写
select 'Dear ' || initcap(ename) from emp;
找出姓名为5个字母的员工
select * from emp where length(ename)=5;
找出姓名中不带’R’字母的员工
select * from emp where ename not like '%R%';
显示所有员工姓名的第一个字母
select substr(ename,0,1) from emp;
找到二月份受雇的员工
select * from emp where to_char(hiredate,'fmmm') = '2';
随机返回5条数据
select * from (select ename,job from emp order by dbms_random.value()) where rownum <=5

over()函数
over()函数,从oracle 8i开始支持,后面的版本支持的比较好. 
通常在做统计分析时我们都想尽可能多滴选择出原始列和统计值列,但是这样group by后面就必须跟随更多的列,使用分析函数可以避免使用group by时选择出来的列名必须出现在group by列表中的痛苦.
查询跳过表中的偶数行
select ename from (select row_number() over (order by ename) rn,ename from emp) x where mod(rn,2)=1
分部门连续求和
select deptno,sal,sum(sal) over(partition by deptno order by ename) as s from emp
得到当前行的上一条和下一条数据
select ename,sal,lead(sal) over(order by sal) aaa,lag(sal) over(order by sal) bbb from emp

trunc(x, y)将日期x 截断到y 所指定的日期
单位(月或年)的第一天
确定一年内的天数
select add_months(trunc(sysdate,'y'),12)-trunc(sysdate,'y') from dual

查询某用户下的所有表
select table_name from all_tables where owner = upper('scott')
列出表的索引咧
select * from sys.all_ind_columns where table_name = 'EMP'
列出表中的约束
select * from all_constraints where table_name = 'EMP'

索引类型
B树索引(B Tree index)
平衡B树算法
右子树大于等于父节点
左子树小于等于父节点
位图索引
表字段取值范围较小,如性别,B树索引没有意思,建议用位图索引
create BitMap Index student on(sex)

SQL优化
select * from t a1 where exists( select * from t a2 where a1.id>a2.id and a1.name =a2.name and a1.age = a2.age)

尽量少用in操作符
尽量用not exists 替代not in ,因为not in 不能用索引
尽量不用 <> 或者 !=操作符 ---不等是永远用不到索引,全表扫描
索引列设置为not null ,因为判断是否为空用不到索引
尽量不要用% _ 操作符,用不到索引
where子句避免在索引列上使用计算,会使索引失效
用>= 替换>
利用SGA 共享池,避开parse阶段
where 后面的条件顺序要求,where后面的条件,表连接写在最前,过滤掉最多记录数的条件写在最后
使用表的别名,并将之作为每列的前缀,减少解析时间
用union all 代替union
使用sql优化工具 sqlexpert,toad,PL/SQL,OEM

通过改变oracle的SGA的大小,
SGA=数据库的系统全局区
SGA三部分:共享池,数据缓冲区,日志缓冲区
共享池分为  共享SQL区,和数据字典缓冲区,共享SQL区存放用户SQL命令,
--查看共享SQL使用率,最好90%以上,否则增加共享池的大小
select (sum(pins-reloads))/sum(pins) "Lib Cache" from v$librarycache
--查看数据字典缓冲区命中率,最好90%以上,否则增加共享池大小
select (sum(gets-getmisses-usage-fixed))/sum(gets) "Row Cache" from v$rowcache
数据缓冲区--存放sql运行结果抓取的data  block
select name,value from v$sysstat where name in ('db block gets','consistent gets','physical reads')
使用命中率=1-(physical reads/(db block gets+consistent gets)
命中率应在90%以上,否则增加数据缓冲区大小
日志缓冲区;存放数据库运行生成的日志
select name,value from v$sysstat where name in ('redo entries','redo log space requests')
申请失败率  = redo log space requests/ redo entries,应接近于0,否则书名日志缓冲区太小,应增加





分享到:
评论

相关推荐

    实训商业源码-百川多公众号集字福袋 2.0.5开源-论文模板.zip

    实训商业源码-百川多公众号集字福袋 2.0.5开源-论文模板.zip

    S7-200 Smart PLC在卷材与造纸设备中的速度频率同步控制程序应用

    内容概要:本文详细介绍了基于S7-200 Smart PLC的速度与频率同步控制程序及其在卷板材生产线和造纸设备中的应用。该程序旨在确保生产设备间的同步运行,提高生产效率和产品质量。文中涵盖了程序的总体架构、关键变量定义、主程序流程及其实现方式,并讨论了多机同步控制的具体方法。此外,还提供了部分关键代码示例,帮助读者更好地理解和实施该程序。最后,强调了编写和调试过程中应注意的问题,并对未来的发展进行了展望。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和变频器控制有一定了解的专业人士。 使用场景及目标:①适用于卷板材生产线和造纸设备的同步控制;②确保多个设备之间的速度和频率保持一致,提升生产效率和产品品质;③支持多种品牌变频器(如ABB、英威腾等),满足不同应用场景的需求。 其他说明:本文不仅提供了理论指导,还包括具体的操作步骤和代码实例,有助于读者快速上手并在实践中不断优化和完善程序。

    毕业论文-柚子社区团购 1.3.17-整站商业源码.zip

    毕业论文-柚子社区团购 1.3.17-整站商业源码.zip

    simscape 单质量弹簧阻尼模型

    simscape 单质量弹簧阻尼模型

    基于Matlab Simulink的柴油发电机与风光储能微电网仿真技术研究

    内容概要:本文详细介绍了柴油发电机在微电网中的仿真技术,特别是结合了风光发电与储能技术的研究。首先,文章阐述了微电网作为未来能源系统重要组成部分的背景,强调了柴油发电机的关键作用及其仿真技术的重要性。接着,文章具体讲解了如何利用Matlab Simulink构建柴油发电机仿真模型,涵盖模型建立、参数设置和优化改进等方面。此外,还讨论了风光柴储微电网仿真技术,重点在于应对风光发电的不确定性和储能电池的充放电特性。最后,通过具体案例分析,展示了微电网中风机光伏柴油储能系统的复杂性和挑战性,突出了仿真技术在微电网建设与运行中的重要作用。 适合人群:从事电力系统、微电网研究的技术人员和研究人员,尤其是对柴油发电机仿真技术和风光储能感兴趣的学者。 使用场景及目标:适用于希望深入了解柴油发电机仿真技术及其在微电网中应用的专业人士。目标是掌握如何使用Matlab Simulink进行柴油发电机仿真,理解风光柴储微电网的工作原理和优化策略。 阅读建议:读者可以通过本文全面了解柴油发电机仿真技术的基本概念、建模方法和应用场景,尤其关注仿真参数的设置和优化改进部分,以便更好地应用于实际项目中。

    电子工程领域锁相环(PLL)设计与进阶应用:理论与实践结合

    内容概要:本文详细介绍了锁相环(PLL)的工作原理及其设计方法,涵盖基本组成部分(鉴相器、环路滤波器、压控振荡器),以及设计流程(确定指标、选型、参数计算)。此外还讨论了PLL的高级特性,如低相位噪声设计、宽带PLL设计和数字化PLL的趋势。文中不仅提供了理论解释,还有具体的实例和Python代码演示,帮助读者全面掌握PLL的设计要点和技术细节。 适合人群:电子工程专业学生、从事通信与时钟同步相关工作的工程师。 使用场景及目标:适用于希望深入了解PLL工作原理及其设计方法的专业人士,旨在提高他们在实际项目中应用PLL的能力。 其他说明:文章结合了大量图表和公式推导,有助于加深理解和记忆。同时给出了具体的应用案例,便于读者将所学应用于实践。

    毕业设计-家政小程序V6.1.2+分销插件V1.0.2-整站商业源码.zip

    毕业设计-家政小程序V6.1.2+分销插件V1.0.2-整站商业源码.zip

    实训商业源码-砍价宝6.4.0小程序前端+后端-论文模板.zip

    实训商业源码-砍价宝6.4.0小程序前端+后端-论文模板.zip

    光伏用户群电能共享与需求响应模型:基于市场模式的定价策略、纳什均衡与分布式优化

    内容概要:本文研究了市场模式下光伏用户群的电能共享与需求响应模型,重点探讨了定价策略、需求响应机制以及博弈论的应用。首先,介绍了光伏用户通过集群方式实现电能共享,可以在光伏上网电价低于市电电价的环境中获得更高的经济效益。其次,提出了一种基于光伏电能供需比的内部价格模型,以引导电能交易并最大化经济效益。接着,构建了一个考虑经济性和舒适度的需求响应效用成本模型,以鼓励用户参与需求响应。最后,通过引入博弈论,分析了需求响应行为形成的非合作博弈问题,并提出了分布式优化算法求解纳什均衡策略。通过实际算例验证了模型的有效性,减少了用电成本并提高了光功率互用水平。 适合人群:从事新能源研究、电力系统优化、智能电网设计的专业人士,以及对光伏技术和市场需求响应感兴趣的学者和技术人员。 使用场景及目标:适用于研究和设计光伏用户群的电能共享与需求响应系统,帮助优化能源结构,降低用电成本,提升经济效益。目标是在市场模式下实现光伏用户间的高效电能交易,推动绿色能源的发展。 其他说明:本文不仅提供了理论分析,还通过MATLAB仿真进行了实证研究,为实际应用提供了有力支持。

    基于滑动平均算法的功率波动处理及优化以满足国标并网标准

    内容概要:本文详细介绍了如何利用滑动平均算法(MA)处理电力系统中的功率波动,确保其符合国家并网标准。首先解释了功率波动的概念及其对电力系统的影响,接着阐述了滑动平均算法的基本原理和实现步骤,包括设置不同时间窗口(1分钟和10分钟)来平滑功率数据。随后讨论了如何计算滑动后的最大功率波动以及如何调整滑动窗口参数以达到最佳效果。最后,提出了合理的功率分配策略,以确保最终输出既稳定又高效地满足国家标准。 适合人群:从事电力系统研究和技术实施的专业人士,尤其是关注功率波动处理和并网标准的技术人员。 使用场景及目标:适用于需要解决电力系统中功率波动问题的实际工程环境,旨在帮助技术人员理解和应用滑动平均算法,从而提升电力系统的稳定性和效率。 其他说明:文中提供了详细的理论背景和技术细节,有助于深入理解滑动平均算法的应用,并指导具体的工程实践。

    实训商业源码-扫码点餐小程序5.9.8 跑腿1.9.5-论文模板.zip

    实训商业源码-扫码点餐小程序5.9.8 跑腿1.9.5-论文模板.zip

    毕业设计-百川多公众号集字福袋V2.2.9全开源解密版-整站商业源码.zip

    毕业设计-百川多公众号集字福袋V2.2.9全开源解密版-整站商业源码.zip

    毕业论文-中秋博饼V4.1.5 开源版-整站商业源码.zip

    毕业论文-中秋博饼V4.1.5 开源版-整站商业源码.zip

    实训商业源码-webstack开源导航源码本地静态化版-论文模板.zip

    实训商业源码-webstack开源导航源码本地静态化版-论文模板.zip

    基于庞特里亚金极小值原理的燃料电池混合动力系统能量管理策略及其MATLAB实现

    内容概要:本文探讨了基于庞特里亚金极小值原理的燃料电池混合动力系统能量管理策略的设计与实现。首先介绍了庞特里亚金极小值原理作为一种优化方法的应用背景,然后详细阐述了燃料电池混合动力系统的组成和特点。接着,文章提出了一个综合考虑系统能耗、排放和性能衰退的目标函数,并建立了相应的约束条件。利用庞特里亚金极小值原理,在MATLAB平台上实现了这一能量管理策略,确保其能在多种工况下有效运行。最后,通过对策略的测试和调试,验证了其可行性和优越性。 适合人群:从事新能源汽车研究、混合动力系统设计以及对优化理论感兴趣的科研人员和技术开发者。 使用场景及目标:①为燃料电池混合动力系统提供高效的能量管理解决方案;②帮助研究人员理解和应用庞特里亚金极小值原理于实际工程问题;③促进新能源车辆的技术进步和发展。 其他说明:文中提供的MATLAB代码具有良好的扩展性和适应性,可以根据不同的应用场景调整参数设置,满足多样化的研究需求。

    FPGA编程VHDL实践:RS422/485串口通信设计与测试

    内容概要:本文详细介绍了利用FPGA和VHDL语言实现RS422与RS485串口通信的方法。首先阐述了设计前准备工作的必要性,包括系统要求、接口规格、时钟频率以及数据处理方式等关键要素的确立。接着深入探讨了VHDL程序的编写流程,涵盖信号属性定义、模块构建、逻辑电路设计等方面的内容。随后强调了仿真环节对于检测程序缺陷的重要性,最后讲述了上板测试阶段的操作要点,确保最终成果满足预期性能指标。 适合人群:从事嵌入式系统开发的技术人员,尤其是对FPGA编程感兴趣的工程师。 使用场景及目标:适用于希望掌握FPGA编程技巧,特别是针对串行通信接口(RS422/485)的实际项目开发者。目标是在实践中学会从零开始创建完整的FPGA应用程序,包括但不限于设计规划、代码编写、模拟验证和实物部署。 其他说明:文中不仅提供了理论指导,还给出了具体的实施路径,有助于读者更好地理解和应用相关知识。

    表贴式永磁同步电机一阶线性非线性自抗扰(ADRC)Matlab Simulink模型及其ESO应用研究

    内容概要:本文详细探讨了表贴式永磁同步电机在一阶线性非线性自抗扰(ADRC)控制下的Matlab Simulink建模与仿真。首先介绍了表贴式永磁同步电机的工作原理及其优势,随后重点阐述了一阶线性非线性自抗扰技术的特点和应用场景。文中展示了如何在Matlab Simulink平台上构建电机模型,包括基本结构、控制算法实现及反馈信息处理等方面的内容。特别强调了扩张状态观测器(ESO)的应用,它用于实时估计电机状态并提升系统的稳定性和动态响应。最后通过对仿真实验的数据分析验证了所提模型的有效性。 适合人群:从事电机控制系统研究的专业人士、高校师生及相关科研工作者。 使用场景及目标:适用于需要深入了解表贴式永磁同步电机控制机制的研究项目;旨在探索更优的电机控制策略以提高系统效率和可靠性。 其他说明:文章不仅提供了理论分析,还有具体的模型实例和实验数据支持,便于读者理解和实践。

    基于阶梯碳交易的P2G-CCS与燃气掺氢虚拟电厂优化调度研究及MATLAB复现

    内容概要:本文详细探讨了如何结合P2G-CCS(Power-to-Gas with Carbon Capture and Storage)技术和燃气掺氢技术,进行虚拟电厂的阶梯碳交易优化调度。文章首先介绍了背景,强调了在全球环保趋势下,阶梯碳交易机制的重要性。接着,分别建立了掺氢燃气轮机、掺氢燃气锅炉、两段式电转气和碳捕集系统的数学模型,描述了各组件的运行特性和碳排放情况。随后,构建了阶梯碳交易模型,设定了不同碳排放量的价格阶梯,以激励减排。基于这些模型,提出了以碳交易成本、购气和煤耗成本、碳封存成本、机组启停成本和弃风成本之和最低为目标函数的优化调度策略。最后,利用Matlab、Yalmip和Cplex进行了详细的复现过程,展示了不同情景下的优化调度结果。 适合人群:从事能源管理、电力系统优化、碳交易研究的专业人士,以及对虚拟电厂和低碳技术感兴趣的科研人员。 使用场景及目标:适用于希望深入了解虚拟电厂优化调度策略的研究人员和技术人员,旨在帮助他们掌握P2G-CCS和燃气掺氢技术在低碳政策下的应用方法,从而制定有效的节能减排措施。 其他说明:本文提供了详细的复现过程和丰富的图表数据,便于读者理解和验证优化调度策略的有效性。

    1747063705148.jpg

    1747063705148.jpg

    御网杯相关学习资源,御网杯

    御网杯

Global site tag (gtag.js) - Google Analytics