oracle学习篇(二)

news2024/11/28 12:30:45

oracle学习篇(二)

1添加约束

1.1 添加主键约束

1.1.1 语法

alter table 表名
add constraint 约束名 约束关键字 key(添加约束的字段);

1.1.2 示例代码

alter table infos 
add constraint pk_stuid primary key(stuid);

1.2 添加检查约束

1.2.1 语法

alter table 表名
add constraint ck_约束字段 check(约束条件);

1.2.2 例子

alter table infos
add constraint ck_age check(age between 0 and 100);

1.2.3 若插入的数据不符合格式时,会出现如下所示的错误提示
在这里插入图片描述

1.4 说明

1.4.1 说明内容

注意:添加check约束前表里面的数据需要符合check约束
不然就会提示你约束添加不成功
同一个用户名下的约束只能有一个

在这里插入图片描述

2 添加数据

2.1 添加单条数据

2.2.1 语法

INSERT INTO 表名 VALUES (1的值,2的值...列n的值);

2.2.2 示例代码

INSERT INTO "stu" VALUES ('2','男');

2.2 添加多条数据

2.2.1 语法

INSERT INTO 表名
SELECT1的值,2的值...列n的值 FROM dual
UNION 
SELECT1的值,2的值...列n的值 FROM dual
UNION 
SELECT1的值,2的值...列n的值 FROM dual;
-- 注意 union要求列要一模一样,且一般是按照列名一一在select后面去列举出来

2.2.2 示例代码

INSERT INTO "stu"
SELECT '3','女' FROM dual
UNION 
SELECT '4','男' FROM dual;
-- 注意 "stu"是因为我定义的时候就加上了双引号,用于进行查表时区分大小写

2.2.3 运行截图

在这里插入图片描述

3 查询系统时间及把系统时间转换成指定的字符串格式

3.1 示例代码

select sysdate,to_char(sysdate,'day yyyy-mm-dd hh24:mi:ss')from dual;
-- to_char函数是将日期函数转换成指定格式的字符串,
-- 其格式是yyyy-mm-dd代表年-月-日,有12进制和24进制(12进制写hh12就行)

3.2 示例代码运行截图

在这里插入图片描述

4 case用法

4.1 类似if…else…if版本

4.1.1 语法

SELECT 列名1,列名2...列名n,case
  WHEN 列名 条件1 then 满足条件1返回的值
  WHEN 列名 条件2 then 不满足条件1,满足条件2返回的值
  WHEN 列名 条件3 then 不满足条件1和条件2,满足条件3返回的值
  else  不满足以上所有条件返回的值 end 列名
  from 表名
  -- 作为列的别名,如果是中文,可以在在双引号里面写中午,也可以省略双引号不写

4.1.2 示例代码

--查询员工编号 姓名、工资、自定义级别
SELECT empno,ename,sal,case
  WHEN sal between 0 and 1000 then '混日子'
  WHEN sal between 1001 and 2000 then '划水的'
  WHEN sal between 2001 and 3000 then '摸鱼的'
  else  '做事的' end 自定义级别
  from emp

4.1.3 运行截图

在这里插入图片描述

4.2 类似switch版本

4.2.1 语法

SELECT 列名1,列名2...列名n,case 需要等值判断的字段
  WHEN 列名 条件1 then 满足条件1返回的值
  WHEN 列名 条件2 then 不满足条件1,满足条件2返回的值
  WHEN 列名 条件3 then 不满足条件1和条件2,满足条件3返回的值
  else  不满足以上所有条件返回的值 end 列名
  from 表名
  -- 作为列的别名,如果是中文,可以在在双引号里面写中午,也可以省略双引号不写

4.2.2 示例代码

-- 查询员工姓名、职位、职位别称
SELECT ename,job,case job
when 'SALESMAN' then '耍嘴皮子的'
when 'ALLEN' then '靠脸的'
  when 'MANAGER' then '管事的'
  else '摸鱼的' end 职位别称
FROM emp

4.2.3 运行截图

在这里插入图片描述

4.3 总结

如果是要等值连接使用case 等值字段 when then,即采用第二种
如果是范围查找使用case when then...采用第一种

5 查看工资等级表

5.1 示例代码

SELECT e.ename,e.sal,s.grade
FROM emp e
INNER JOIN salgrade s
ON e.sal between s.losal and s.hisal

5.2 示例代码运行截图

在这里插入图片描述

6 序列

6.1 原因

因为oracle是非自增型数据库,所以引入了序列进行自动增长

6.2 创建序列

6.2.1 语法

create sequence 序列名;

6.2.2 示例代码

create sequence sq1;
-- 一个用户下的序列名称不能相同,

6.3 查看当前序列值

6.3.1 语法

select 序列名.currval from dual

6.3.2 示例代码

select sq1.currval from dual

6.3.3 运行截图
在这里插入图片描述

6.4 查看下一个序列值

6.4.1 语法

select 序列名.nextval from dual

6.4.2 示例代码

select sq1.nextval from dual

6.4.3 运行截图
在这里插入图片描述

6.5 使用序列实现字段自增长

6.5.1 单条插入

a 语法
INSERT INTO 表名 VALUES (序列名.nextval,2的值....列n的值);
-- 序列名.nextval字段需要是int类型字段或者number类型字段
b 示例代码
INSERT INTO "stu" VALUES (s1.nextval,'男');
c 运行结果验证

在这里插入图片描述

6.5.2 多条插入

a 语法
-- 先创建触发器
CREATE OR REPLACE TRIGGER 触发器名字
  BEFORE INSERT ON 表名
  FOR EACH ROW -- WHEN (new.giftID is null) 设置主键存在时,不触发触发器
BEGIN
  SELECT 序列名.NEXTVAL INTO:NEW.自增的字段 FROM DUAL;
END;
-- 使用Insert all的语法去进行插入
INSERT ALL  INTO 表名  (非自增字段1,非自增字段2...非自增字段n) VALUES (非自增字段1的值,非自增字段2的值...非自增字段n的值)
           INTO 表名 (非自增字段1,非自增字段2...非自增字段n) VALUES (非自增字段1的值,非自增字段2的值...非自增字段n的值)
           INTO 表名 (非自增字段1,非自增字段2...非自增字段n) VALUES (非自增字段1的值,非自增字段2的值...非自增字段n的值)
SELECT * FROM dual;  
b 示例代码
-- 先创建触发器
CREATE OR REPLACE TRIGGER test1
  BEFORE INSERT ON "stu"
  FOR EACH ROW -- WHEN (new.giftID is null) 设置主键存在时,不触发触发器
BEGIN
  SELECT s1.NEXTVAL INTO:NEW.id FROM DUAL;
END;
-- 使用Insert all的语法去进行插入
INSERT ALL  INTO "stu"  (sex) VALUES ('男')
           INTO "stu" (sex) VALUES ('女')
           INTO "stu" (sex) VALUES ('男')
SELECT * FROM dual;  
c 运行结果验证

在这里插入图片描述

7 索引

7.1 索引的初识

按照数据结构划分,常见的索引有B+ tree索引和hash索引
其中B+ tree是范围查找,hash索引是匹配查找
当单个索引的行小于或者等于整个表行数的20%左右的时候索引就非常有用
主键字段是默认加上索引的
每次进行表的数据的更改,索引的空间都会进行相应的变更

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计高校学生心理健康信息咨询系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

numpy.pad()函数详解

目录 函数定义: 示例讲解: 示例1.1 constant: 示例1.2 maximum 示例1.3 constant: 示例2.1 constant: 示例2.2 constant: 函数定义: numpy.pad()函数用于对Numpy数组进行填充。有时需要对Numpy数组进…

Docker 项目快速部署Flask项目

前言 打造 flask gunicron nginx Mysql 环境 nginx Mysql 使用docker 快速部署 使用 supervisor 对 gunicron 做监控 环境:centos7 ,python3.7 flask 篇 flask 项目就不多赘述了。这里贴一下项目的目录,便于解释下面的命令参数。 运行…

​Word怎么转换成PDF格式?这三种方法教你如何转换

怎么把Word文档转换成PDF文件格式呢?相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件,编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送,原因就是PDF格式独有的兼容性和稳定性能够让我们的文件格式不会错乱,这也是…

深入理解Maven的全部配置

深入理解Maven的全部配置1. Introduction1.1 Big Data -- Postgres2. Install2.1 Maven Install2.2 Config Setting.xml2.3 Local Package Install Maven3. Project4.AwakeningMaven Document: https://maven.apache.org/. Maven Download: https://maven.apache.org/download.…

前端富文本设置的表格样式无法展示解决方案

当我们在富文本编辑器里编辑好文本后,发布一看,为什么编辑器预览的内容和实际保存后展示的内容不一致呢。这是因为,大部分编辑器本身会自带一些样式属性,而当获取富文本内容的时候往往是不带这些样式属性的,所以才导致…

【Java_GUI编程】--基本操作你要知道

文章目录一、组件和容器1、JFrame2、面板JPanel3、布局管理器流式布局(从左到右)东南西北中网格布局4、事件监听输入框事件监听键盘监听5、JDialog弹窗6、Icon、ImageIcon标签IconImageIcon7、按钮单选按钮复选按钮8、列表下拉框列表框9、文本框密码框文…

醉三皇酒特别的爱:孙子15年买酒送爷爷,爷爷90箱好酒赠重孙

小强没有万万没有想到,自己不仅会被裁员,而且还妻离子散,最敬爱的爷爷又意外去世。 一、惨遭裁员,一蹶不振 都说程序员是吃年轻饭的,以前不以为然,现在看着手里的裁员告知单,小强也不得不信了。…

Mybatis源码分析(三)SqlSessionFactoryl的初始化

目录一 解析配置文件入口二 解析properties文件三 解析settings文件四 解析typeAliases文件五 解析 Plugin文件六 解析 Environments 文件七 解析Mapper 文件官网: mybatis – MyBatis 3 | 简介参考书籍:《通用源码阅读指导书:MyBatis源码详解…

vscode无法读取头文件问题,改变exe生成路径问题,头文件,源文件分离问题

首先声明一点,我这里演示的基础是源文件都位于项目根目录下的,然后exe文件和头文件可以放在项目的其他任何文件夹中的。 目录 1. vscode自定义头文件包含问题 1.1 首先是我们的c_cpp_peoperties.json文件 1.2 接下来是我们的settings.json文件 2.改变…

String(2)

字符串中的库函数,基本上只要对原来的字符串进行修改,基本上返回的都是一个新的对象 我们先来看一个内存布局图: String s1new String("hello"); String s2new String("world"); String s3s1; 下列程序的输出结果是:输出good和gbc p…

Go开发环境搭建

文章目录Go环境搭建开发工具Visual Studio Code Go 扩展插件时间2022-12-15 Go环境搭建 下载安装Go 国外的官网: https://golang.org/dl/国内的官网: https://golang.google.cn/dl/ 检查版本go version 必须在安装目录执行命令:C:\Program Files\Go>go version…

软考信息安全工程师备考笔记

上午 信息安全的5个基本要素为:机密性、完整性、可用性、可控性、可审查性。 法律 《中华人民共和国网络安全法》已由中华人民共和国第十二届全国人民代表大会常务委员会第二十四叫次会议于2016年11月7日通过,自2017年6月1日起施行。 第八条明确规定了…

ADI Blackfin DSP处理器-BF533的开发详解53:CMOS摄像头采集图像+LCD显示(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了摄像头拍摄一张 640480 大小,YUV422 格式的图片,然后将图片转成 RGB565 格式,裁剪为 480…

Latex 中插入 Matlab 代码

这篇文章将介绍如何在 Latex 排版过程中添加 Matlab 代码 功能效果 主要有如下排版功能: 语法高亮自动添加边框自动添加行号 先上图,大家感受一下效果: 而实现这些只需要一行代码加一个包! 插入代码块 \usepackage{listings…

JavaScript刷LeetCode拿offer-二叉树层序遍历篇

前言 博主最近在刷leetcode,做到二叉树套题的时候发现很多题的解题思路都是基于二叉树的层序遍历来完成的,因此写下这篇文章,记录一下二叉树层序遍历这件"神器"在实战的运用。 [leetcode] 102.二叉树的层序遍历 二叉树的层序遍历…

[附源码]Python计算机毕业设计高校宿舍管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

Vue渲染器(五):快速diff算法

渲染器(五):快速diff算法 这章开始讨论第三种用于比较新旧vnode的方式:快速diff算法。跟它的名字一样,它很快。Vue3采用的就是这种算法,Vue2采用的是上一章中的双端diff算法。 接下来就来着重了解它的实现…

宝塔部署前后端分离项目(Vue+SpringBoot)

目录 后端部分 配置Redis 前端部分 后端部分 1 先修改自己的speingboot配置文件,我的是yml文件 保证宝塔上建的数据库和自己代码里,就是配置文件中所建的数据库的名字是一致的密码也要保持一致,Redis也一样,如果有的话 2 记录…

关注电动汽车能效水平 提高续航能力

电动汽车(EV)近些年发展迅猛,已被汽车业内普遍认为是未来汽车发展的新方向,但是现如今电动汽车仍然存在一些短板,导致其还无法替代传统燃油车。对此,先想到的是电动车的续航问题。其实解决电动车续航问题主…