数据库开发基础-Oracle-SQL基础-008

Oracle19C入门到熟练001-这是开篇 一篇极其简单与实用的Oracle入门教程,看过都说好 阅读详情
--视图
视图是数据库对象之一
视图在sql语句中体现的角色与表相同。
但是视图不是真实的表,而是一个查询语句
对应的结果集。


create view v_emp_10
as
select empno,ename,sal,deptno
from emp 
where deptno  =10;

select * from v_emp_10;

desc v_emp_10

当视图对应的子查询的字段含有函数或
表达式时,必须对该字段定义别名,那么
视图该字段使用别名作为字段名。
--错误
create or replace view v_emp_10
as
select empno id, ename name, sal * 12 , deptno
  from emp
 where deptno = 10;

--正确
create or replace view v_emp_10
as
select empno id, ename name, sal * 12 n_salary, deptno
  from emp
 where deptno = 10;

create or replace view v_emp_10
as
select empno id, ename name, sal  salary, deptno
  from emp
 where deptno = 10;

--对视图进行DML操作
对简单视图可以进行DML操作,但是对复杂视图不可以。
对视图进行dml操作就是对视图数据来源的基础表进行操作。

insert into v_emp_10
(id,name,salary,deptno)
values
(1003,'JACK2',5000,10);

select * from v_emp_10;
select * from emp;


当插入一条视图看不见的数据时,会对
基础表造成“污染”

insert into v_emp_10
  (id, name, salary, deptno)
values
  (1002, 'ROSE', 5000, 20);


select * from v_emp_10;
select * from emp;

更新数据同样会对基础表污染
更新后的数据对视图而言不可见不可控

update v_emp_10 set deptno = 20;--所以记录数据

select * from v_emp_10;
select * from emp;


删除不存在该问题
delete from v_emp_10
where deptno =20;

为视图添加检查选项【约束】,可以避免对视图
操作后视图对数据不可控的情况。
当添加检查选项后,对视图进行:
insert :插入的数据必须视图可见
update:更新后视图必须对应数据可见

create or replace view v_emp_10
as
select empno id,ename name,
sal salary,deptno 
from emp
where deptno =10
with check option

update v_emp_10 set deptno = 20 --【全表更新不受制约】
--where id = '7369';

也可以为视图添加只读选项,添加后
该视图不允许执行dml操作。


create or replace view v_emp_10
as
select empno id,ename name,sal salary ,deptno
from emp where deptno =10
with read only;


--复杂视图
视图对应的select语句中含有函数,表达式,分组等操作时
该视图就是一个复杂视图。
对于多表关联查询的视图,叫做连接视图,也算是复杂视图的一种。


复杂视图不能进行DML操作。
定义一个可以查看各个部门薪资情况的视图:[视图的数据会随基础表数据同步]

create view v_emp_salary
as
select d.dname,d.deptno,
       avg(e.sal) avg_sal,
       sum(sal) sum_sal,
       min(sal) min_sal,
       max(sal) max_sal 

from 
emp e,dept d
where e.deptno =d.deptno
group by d.dname,d.deptno

select * from v_emp_salary;

查看谁的工资比自己所在部门平均工资高?
select e.ename, e.sal, e.deptno
  from emp e, v_emp_salary v
 where e.deptno = v.deptno
   and e.sal > v.avg_sal

select e.ename, e.sal, e.deptno
  from emp e
  join v_emp_salary v
    on e.deptno = v.deptno
 where e.sal > v.avg_sal

--删除视图
删除视图不会对视图的数据来源的基础表做任何操作。

drop view v_emp_10;



--表的数据字典
select * from user_tables;

select table_name from user_tables

--序列
数据库对象之一
序列可以按照指定的规则生成一系列的数字。
序列生成的数字通常是为了某张表的主键提供值的。


create sequence seq_emp_id
start with 1
increment by 1;


序列支持两个伪列:
nextval:让序列生成一个数字,是用序列最后生成的数字加上步长得到,
新创建的序列调用时返回 start with 指定的值。


currval :获取序列当前的数字(即最后一次通过nextval生成的数字)
新创建的序列必须先至少执行一次nextval以后才可以使用currval。
nextval 会导致序列增长。而且增长后不能获取原来生成过的值。


select seq_emp_id.nextval from dual;

select seq_emp_id.currval from dual;

insert into emp
  (empno, ename, job, sal, deptno)
values
  (seq_emp_id.nextval, 'CheriJim', 'CLERK', 6000, 30);

select * from EMP;

删除序列
drop sequence seq_emp_id;




--索引
数据库对象之一
为某张表的某些字段添加索引可以提高表的查询,排序,去重等操作效率

索引的算法和维护是数据库自行维护的,我们不能干涉,我们只需要告诉数据库
是否创建索引即可。


当执行某些sql时数据库会自行使用可用的索引来提高执行效率

create index idx_emp_ename on emp(ename);

--创建表约束

create table employees(
       eid number(6),
       name varchar(30) not null,--
       salary number(7,2),
       hiredate date constraint employees_hiredate_nn not null--
);

insert into employees (eid, name, salary) values (null, 'JACK', 5000);

create table employees1(
       eid number(6) unique,--
       name varchar2(30),
       email varchar2(50),
       salary number(7,2),
       hiredate date,
       constraint employees1_email_uk unique(email)--
);



insert into employees1
  (eid, name, email, salary)
values
  (101, 'JACK', '@11', 5000);

--null 值 在唯一性约束中不认为相同
INSERT INTO employees1
(eid,name,email,salary)
VALUES
(NULL,'JACK',NULL,5000)
  
select * from employees1;
drop table employees1;--表中存在数据照样可用删除表及数据。
--在实际的数据编程中需要设置 表中存在数据不能删除表,我们可以使用触发器实现这个需求,有关触发器后面会讲到。

create table employees2(
       eid number(6) primary key,--非空且唯一
       name varchar2(30),
       email varchar(50),
       salary number(7,2),
       hiredate date
);


insert into employees2 (eid, name) values (null, 'JACK');

前面有关Oracle-基础sql的所有脚本:

点击打开链接


Oracle SQL学习笔记 LAST_DAY®函数:返回指定r日期的当前月份的最后一天日期。 阅读详情

相关推荐

【自用】吉林大学计算机系统结构第二章:缓存优化 曲冠南老师版 笔记

容量8KB,2的十三次方,块大小16B,一块用掉四位,剩余2的九次方是标志位,则有512行,每个元素8B,则一块两个元素,a数组150块,b数组152块,不出现容量失效。不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。

weixin_73587775的博客 1617

oracle——SQL复习08

select * from emp e order by deptno ; /**范围 分区*/ drop table emp_part01; CREATE TABLE emp_part01 ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0),

338

TSMC40nmLP版图实战:从Design Rule解读到Cadence高效布局布线

本文详细解析了TSMC40nmLP工艺的版图设计实战,从Design Rule解读到Cadence高效布局布线技巧。重点介绍了40nm工艺中的关键设计规则,如最小线宽、间距规则和深N阱规则,并分享了Cadence Virtuoso中的高效工作流和射频模块设计技巧,帮助工程师提升版图设计效率和质量。

weixin_29250403的博客 380

Oracle之序列

序列 sequence 是oracle中提供的一组能够自动增长的序号,常常用来生成每条数据的唯一标识 ///数据库对象之一,独立于表存在 ///主要是提供主键值 语法 create sequence 序列名 start with n ////给一个初始值n,默认的初始值是1 increment by n ///增长幅度n,默认的还是1,,n为负数是递减 maxvalue n 有最大值n//nomaxvalue 没有上限 //递减的时候有最小值 minvalue n 有最小值n//..

weixin_42402597的博客 692

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 395

计算机视觉安防监控升级:人脸识别与行为异常检测

计算机视觉安防监控升级:人脸识别与行为异常检测 ,人工智能,计算机视觉,大模型,AI,本文将深入探讨人脸识别与行为异常检测技术在安防监控中的应用,包括技术原理、算法实现、应用场景以及面临的挑战与解决方案。通过实际案例和代码示例,帮助读者更好地理解和掌握这些技术,为推动安防监控系统的智能化升级提供参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 23万+

MySQL 单表查询(下)

三、高级查询 1、聚合函数 函数名称 作用 函数名称 作用 count() 返回某列的行数 max() 返回某列的最大值 sum() 返回某列的和 min() 返回某列的最小值 avg() 返回某列的平均值 1.1 count() 函数 语法格式:select count(*) from 表名; 1.2 sum() 函数 语法格式:select sum(字段名) ...

wbxshi的博客 326

HFSS实战项目——微带带通滤波器设计

本文详细介绍并设计了一款微带带通滤波器,通过HFSS三位电磁仿真软件对其进行仿真设计及优化,仿真结果表明,本文设计的滤波器表现出优良的滤波性能,符合设计要求。

2401_87464239的博客 5397

笔记:ORACLE数据库基础学习 第二天

--DQL:数据查询语言 --必要的字句有两部分组成: --SELECT字句:用来指定要查询的字段,这里可以包含表中的实际字段,表达式,函数。 --FROM子句:用来指定数据源的表 SELECT * FROM emp_gl SELECT ename,job,sal,deptno FROM emp_gl SELECT ename,sal,sal*12 FROM emp_g

baidu_29472129的博客 449

uniapp:解决微信小程序包体积超过2M的优化方案+详解分包问题,编译小程序体积大于2M不能上传和预览提示体积太大的处理教程,uniApp微信小程序主包过大问题如何解决(排查可疑点+分包+最小改动)

uniapp微信小程序开发,如何解决打包太大无法预览发布的问题,uniApp微信小程序包体积超过2M的优化方法,uni-app打包微信小程序主包超2M终极解决方案,使用uniapp开发微信小程序使用uni_modules导致主包文件过大,无法发布的解决方法,UniApp开发的微信小程序主包过大问题及解决方案 编译小程序时Node-modules被打入主包,小程序体积大于2M不能上传和预览,怎么处理,解决微信小程序主包太大问题,微信小程序中主包和分包过大,详解分包问题,uni-app 微信小程序发布时,主包超

✅ 精选推荐文章 5068

电阻基础知识及应用电路仿真(Multisim)

本文围绕硬件工程师必备的电阻知识,从基础知识、实操、应用仿真三方面做系统讲解:基础上明确电阻的核心参数、分类、串并联计算及核心特性;实操中详解贴片/色环电阻的阻值读取、贴片封装换算,重点区分0Ω电阻(贴装跳线,实现功能选通/调试等)与磁珠(高频吸噪)的差异及选型;应用上介绍限流、分压、上拉/下拉、阻抗匹配、过压/过流保护五大典型电路的设计公式、选型原则和实操要点,同时给出电阻通用的选型、测量和布线设计规范,形成完整的电阻应用知识体系。

XU157303764的博客 2782

表格操作系列——字段名与字段别名的获取

表格操作系列 四、字段名与字段别名的获取 在使用数据库编程时,经常需要在别名与字段名之间做一些操作,字段名一般使用英文字符,别名一般使用中文字符,这样就可以满足显示与数据库操作两不误的需要。但是在写代码时,使用别名,数据库又不认,使用字段名写代码又不太方便,两者兼顾时容易出错。下面的代码,可以很好的实现字段名与别名之间的操作。 将字段名与别名存储在一个表中,按列存好,可以在编程时先行定义,这样也可以避免在使用时出现混乱。在写代码时,可以使用别名对字段名进行自动引用,具体见以下函数。 单字段操作 Public

w_dexu的博客 2067

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最全数据库开发基础-Oracle-SQL基础-008,大厂Java高级多套面试专题整理集合

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取from empupdate v_emp_10 set deptno = 20 --【全表更新不受制约】也可以为视图添加只读选项,添加后该视图不允许执行dml操作。as–复杂视图。

2401_84006757的博客 681

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

oracle和sql数据库,SQL与ORACLE异同

001、SQL与ORACLE的内存分配ORACLE的内存分配大部分是由INIT.ORA来决定的,一个数据库实例可以有N种分配方案,不同的应用(OLTP、OLAP)它的配置是有侧重的。SQL概括起来说,只有两种内存分配方式:动态内存分配与静态内存分配,动态内存分配充许SQL自己调整需要的内存,静态内存分配限制了SQL对内存的使用。002、SQL与ORACLE的物理结构总得讲,它们的物理结构很相似,S...

weixin_39560657的博客 612

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Oracle/MySQL数据库 SQL语句基础知识学习及整理

由于学习需要,从今天起开始学习数据库的基础知识以及SQL语句的编写及使用,因此在这里记录我的学习历程,以此来督促自己,巩固已学过的知识,并且也希望能够帮助到更多入门的同学。 1、建立数据库 create database db_name;//db_name为数据库的名称。 由于我已经打开了数据库,再次创建数据库会提示“失败,数据库已装载”。 2、显示数据库 show databases; 3、创建数据表 //创建学生表 学号、姓名、年龄、性别 create table ...

qq_38498224的博客 2568

Oracle LiveLabs实验:Load and Analyze Your Data with Autonomous Database

Oracle LiveLabs实验:Load and Analyze Your Data with Autonomous Database

In-Memory Computing Technology 1073

SQL 与 ORACLE 的比较

最近参加了一个ORACLE的培训,ORACLE与平日惯用的SQL SERVER果然有很大不同,在网上搜索了一下转了这篇比较SQL与ORACLE的帖子,总体上感觉SQL SERVER使用更加便捷,人性化,在网上的资料支持很丰富ORACLE更加专家一些,性能可能也强一些,很多东西可以由管理员来配置,管理员手段更加丰富 001、SQL与ORACLE的内存分配 ORACLE的内存分配...

weixin_30784141的博客 291

oracle数据库经典练习题及答案

最近下载了一套oracle数据库习题(无答案),本人自己在oracle上练习得到的答案,如果不对的地方,请不要见怪。保存到博客方便自己以后查阅。 相关表: /*学生表*/ create table student ( sno varchar2(10) primary key not null, sname varchar2(20), sage number(2),

YuZongTao 2万+

oracle 数据库 基础

<br />jdbc连接各种数据库方式列表<br /><br /> 下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。 <br /><br /> 1、Oracle8/8i/9i数据库(thin模式) <br /><br /> Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br /> String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数

bxjingang008的专栏 476

SQL与ORACLE的对比

本人要讲的即不是单纯的SQL,也不是单纯的ORACLE,更不是评价谁好谁坏(意思不大),而是两种数据库之相同和异同据说比尔与艾里森在洗手间相遇,两个又是拥抱,又是KISS,不多久就吵了起来,比尔对查询分析器(SQL QUERY ANALYZE)赞不经绝口,艾里森嘿嘿冷笑,只说了一句话—SQL PLUS内秀。001、SQL与ORACLE的内存分配ORACLE的内存分配大部分是由INIT.ORA来决定

天天归零 2407

【问题集萃】N008:访问Oracle数据库发生ORA-01747问题的分析(Kepner-Tregoe问题解决模型应用)

基于KT问题解决模型来进行Oracle发生的ORA-01747问题的分析调查。 Kepner-Tregoe问题分析解决模型主要是按照以下的方式来对问题进行分析解决: 弄清问题----〉定位根本原因----〉确定解决方案----〉决定并制定计划----〉实施与评价 问题描述: 项目开发中遇到一个技术问题,Oracle DB设计时一个表里面使用了“COMMENT”作为一个字段,使用Oracle自带的E...

黑白猿的琐碎日常 2万+

oracle开发pdf,Oracle程序开发范例宝典 PDF 下载

相关截图:资料简介:本书紧密围绕编程人员在编程中遇到的实际问题和开发中应该掌握的技术,全面介绍了使用Oracle进行程序开发的各方面技术和技巧。全书分为20章,内容包括Oracle数据库基础,SQL Plus命令行工具的使用,表及表空间基本操作,PL/SQL流程控制,基础查询,函数在查询中的应用,高级查询,索引与视图,存储过程与事务处理,触发器,游标,控制文件和日志文件的使用,分区技术,用户、角色...

weixin_35964164的博客 186

ORACLE数据库合集

001.初识Oracle 002.Oracle完全卸载 003.Oracle初操作 004.Oracle用户管理 005.Oracle表管理

weixin_50296259的博客 811

有用的oracle管理SQL语句小总结_资源占用SQL

哪一种活动应该为数据库运行缓慢负有主要责任? select case db_stat_name when 'parse time elapsed' then 'soft parse time' else db_stat_name end db_stat_name, ca

Michael_A的博客 560

Oracle SQL习题集

Oracle SQL 习题集 一、数据库环境 1、表结构 学生表 字段 注释 备注 sno 学号 主键 sname 姓名 sage 年龄 教师表 字段 注释 备注 tno 教师ID 主键 tname 教师姓名 课程表 字段 注释 备注 cno 课程号 主键 cname 课程名称 主键 tno 授课老师 成绩表 字段 注释 备注 sno 学号 主键 cno 课程号 score 成绩 2、建表

TKang8912的博客 549
上一篇: 数据库开发基础-Oracle-SQL基础-007
下一篇: 数据库开发基础-Oracle-SQL基础-009
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值