百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

oracle: 创建表,主键自增长,注解,视图,序列

mhr18 2024-09-23 09:36 28 浏览 0 评论


以前项目主要是用是MySql,现在的项目切换到oracle,在项目组已经几个月了,感觉还是需要系统的学习整理下oracle,主要是整理学习plsql语句,买了本比较畅销的PL/SQL的书籍(oracle pl/sql 从入门到精通),通过对此书的阅读,根据此书的目录结构,对自己感觉需要的知识的做个整理

数据库三范式,这个感觉是很多人都知道的,但是貌似在实际项目中我们经常又不会严格遵守的东西

  • 1NF:列不可再分,也就是说字段必须具有单一的属性特征,不可再进行拆分。例如现在我们有一个字段,叫性别,此字段就是不可再进行拆分的字段,就满足第一范式
  • 2NF:表要具有唯一的主键列。第二范式要求数据库中每个表中的每行数据都要有唯一的区分标志。在oracle中我们一般用序列,在mysql中有主键自增长的函数实现。
  • 3NF:表中不能出现其他表中已经出现的非主键字段。第三范式一般是我们实际开发中经常不会去严格遵守的。在有的时候为了避免复杂的连表查询,我们会在表中写上冗余字段。

SQL语言主要有两大类

  1. DML:数据库操作语言,主要用于数据库的增删改查操作
  2. DDL:数据库定义语言,主要用于创建或修改表,定义视图,存储过程等。
    其实还有一种叫DCL,数据库控制语言,主要是DB在进行使用,不太了解。

这里说到表和视图,也说下他们的区别,我有很长一段时间其实也并没有搞清楚,简单的说是表是物理上存在的,视图是依赖于表存在的区别:1、视图是已经编译好的sql语句。而表不是2、视图没有实际的物理记录。而表有。3、表是内容,视图是窗口4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改5、表是内模式,视图是外模式6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。8、视图的建立和删除只影响视图本身,不影响对应的基本表。

联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系

--创建员工表
create table t_staff(
id number(20) not null,
name varchar2(20),
age varchar(10),
sex varchar(3)
);

--定义主键
alter table t_staff add constraint sf_id primary key(id);

--插入注解
comment on column t_staff.id is '主键';
comment on column t_staff.name is '姓名';
comment on column t_staff.age is '年龄';
comment on column t_staff.sex is '性别';

--创建自增长序列
create sequence seq_t_staff
increment by 1 --每次加1
start with 1 --开始于1
nomaxvalue --不设置最大值
minvalue 1--最小值1,可以设置nominvalue 无最小值
nocycle --不循环
nocache --不缓存

--插入数据
insert into t_staff(id,name,age,sex) values (seq_t_staff.nextval,'张三','20','男');
insert into t_staff(id,name,age,sex) values (seq_t_staff.nextval,'田七','20','女');
insert into t_staff(id,name,age,sex) values (seq_t_staff.nextval,'李四','21','男');

正常情况下我们一般是通过sql语句进行查询

select * from t_staff;

我们也可以通过创建一个视图,通过视图进行查询,视图也有视图的好处,列如不把表结构暴露出去等
创建视图的语法

 CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name

AS

SELECT查询

[WITH READ ONLY CONSTRAINT]

语法解析:

  1. OR REPLACE:如果视图已经存在,则替换旧视图。
  2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
  3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
  4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
--创建视图
create or replace view staff_view 
as 
select name,age,sex from t_staff 
with read only;

--查询
select * from staff_view;

--删除视图
drop view staff_view;

这里创建视图的时候我隐藏去了id字段,那么通过视图查询是查询不到id的,视图分为简单视图和复杂视图,在视图中是可以进行复杂的连表查询的

相关推荐

使用 Docker 部署 Java 项目(通俗易懂)

前言:搜索镜像的网站(推荐):DockerDocs1、下载与配置Docker1.1docker下载(这里使用的是Ubuntu,Centos命令可能有不同)以下命令,默认不是root用户操作,...

Spring Boot 3.3.5 + CRaC:从冷启动到秒级响应的架构实践与踩坑实录

去年,我们团队负责的电商订单系统因扩容需求需在10分钟内启动200个Pod实例。当运维组按下扩容按钮时,传统SpringBoot应用的冷启动耗时(平均8.7秒)直接导致流量洪峰期出现30%的请求超时...

《github精选系列》——SpringBoot 全家桶

1简单总结1SpringBoot全家桶简介2项目简介3子项目列表4环境5运行6后续计划7问题反馈gitee地址:https://gitee.com/yidao620/springbo...

Nacos简介—1.Nacos使用简介

大纲1.Nacos的在服务注册中心+配置中心中的应用2.Nacos2.x最新版本下载与目录结构3.Nacos2.x的数据库存储与日志存储4.Nacos2.x服务端的startup.sh启动脚...

spring-ai ollama小试牛刀

序本文主要展示下spring-aiollama的使用示例pom.xml<dependency><groupId>org.springframework.ai<...

SpringCloud系列——10Spring Cloud Gateway网关

学习目标Gateway是什么?它有什么作用?Gateway中的断言使用Gateway中的过滤器使用Gateway中的路由使用第1章网关1.1网关的概念简单来说,网关就是一个网络连接到另外一个网络的...

Spring Boot 自动装配原理剖析

前言在这瞬息万变的技术领域,比了解技术的使用方法更重要的是了解其原理及应用背景。以往我们使用SpringMVC来构建一个项目需要很多基础操作:添加很多jar,配置web.xml,配置Spr...

疯了!Spring 再官宣惊天大漏洞

Spring官宣高危漏洞大家好,我是栈长。前几天爆出来的Spring漏洞,刚修复完又来?今天愚人节来了,这是和大家开玩笑吗?不是的,我也是猝不及防!这个玩笑也开的太大了!!你之前看到的这个漏洞已...

「架构师必备」基于SpringCloud的SaaS型微服务脚手架

简介基于SpringCloud(Hoxton.SR1)+SpringBoot(2.2.4.RELEASE)的SaaS型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss防跨站攻击、...

SpringCloud分布式框架&amp;分布式事务&amp;分布式锁

总结本文承接上一篇SpringCloud分布式框架实践之后,进一步实践分布式事务与分布式锁,其中分布式事务主要是基于Seata的AT模式进行强一致性,基于RocketMQ事务消息进行最终一致性,分布式...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

开发好物推荐12之分布式锁redisson-sb

前言springboot开发现在基本都是分布式环境,分布式环境下分布式锁的使用必不可少,主流分布式锁主要包括数据库锁,redis锁,还有zookepper实现的分布式锁,其中最实用的还是Redis分...

拥抱Kubernetes,再见了Spring Cloud

相信很多开发者在熟悉微服务工作后,才发现:以为用SpringCloud已经成功打造了微服务架构帝国,殊不知引入了k8s后,却和CloudNative的生态发展脱轨。从2013年的...

Zabbix/J监控框架和Spring框架的整合方法

Zabbix/J是一个Java版本的系统监控框架,它可以完美地兼容于Zabbix监控系统,使得开发、运维等技术人员能够对整个业务系统的基础设施、应用软件/中间件和业务逻辑进行全方位的分层监控。Spri...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

取消回复欢迎 发表评论: