C++学习之ORACLE③

1.集合运算符

查询部门号是10和20的员工信息: ?思考有几种方式解决该问题 ?

  1. SQL>  select * from emp where deptno in(10, 20)    
  2. SQL>  select * from emp where deptno=10 or deptno=20   
  3. 集合运算:

Select * from emp where deptno=10 加上

Select * from emp where deptno=20

集合运算所操作的对象是两个或者多个集合,而不再是表中的列(select一直在操作表中的列)

2.集合运算应用

  1. 参与运算的各个集合必须列数相同,且类型一致
  2. 采用第一个集合的表头作为最终使用的表头。 (列名别名也只能在第一个集合上起)
  3. 可以使用括号()先执行后面的语句。

3.insert语句基本用法

使用 INSERT 语句向表中插入数据。其语法为:

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

如果:values后面的值,涵盖了表中的所有列,那么table的列名可以省略不写。

SQL>  desc emp;   查看员工表的结构,得到所有的列名。

SQL>  insert into emp values (1001, 'Tom', 'Engineer', 7839, sysdate, 5000, 200, 10 )    

SQL>  insert into emp values (1005, 'Bone', 'Raphealy', 7829, to_date('17-12月-82', 'DD-MON-RR'), NULL, 300, 20);  

如果:插入的时候没有插入所有的列,就必须显式的写出这些列的名字。

SQL>  insert into emp(empno, ename, sal, deptno) values(1002, 'Marry', 6000, 20);  

注意:字符串和日期都应该使用 ' ' 号引用起来。

没有写出的列自动填NULL, 这种方式称之为“隐式插入空值”。

 “显式插入空值”: SQL>  insert into emp(empno, ename, sal) values(1003, 'Jim', null);   

SQL> insert into dept values(1, '1name', '1loc');

SQL> insert into dept(deptno, dname, loc) values(2, '2name', '2loc');

SQL> insert into dept(deptno, loc, dname) values(3, '3loc', '3name');

SQL> insert into dept(deptno, dname) values(4, '4name');

4.地址符

使用 INSERT 语句向表中插入数据。其语法为:

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

如果:values后面的值,涵盖了表中的所有列,那么table的列名可以省略不写。

SQL>  desc emp;   查看员工表的结构,得到所有的列名。

SQL>  insert into emp values (1001, 'Tom', 'Engineer', 7839, sysdate, 5000, 200, 10 )    

SQL>  insert into emp values (1005, 'Bone', 'Raphealy', 7829, to_date('17-12月-82', 'DD-MON-RR'), NULL, 300, 20);  

如果:插入的时候没有插入所有的列,就必须显式的写出这些列的名字。

SQL>  insert into emp(empno, ename, sal, deptno) values(1002, 'Marry', 6000, 20);  

注意:字符串和日期都应该使用 ' ' 号引用起来。

没有写出的列自动填NULL, 这种方式称之为“隐式插入空值”。

 “显式插入空值”: SQL>  insert into emp(empno, ename, sal) values(1003, 'Jim', null);   

SQL> insert into dept values(1, '1name', '1loc');

SQL> insert into dept(deptno, dname, loc) values(2, '2name', '2loc');

SQL> insert into dept(deptno, loc, dname) values(3, '3loc', '3name');

SQL> insert into dept(deptno, dname) values(4, '4name');

5.批量处理

一次插入多条数据。

SQL>  create table emp10 as select * from emp where 1=2; 创建一张表,用于测试。

SQL>  select * from tab;   可以查看多了一张新表emp10,但select * from emp10 结果为空

SQL>  desc emp10;    发现该表的结构和emp表的结构完全相同。

一次性将emp表中所有10号部门的员工,放到新表emp10中来。

SQL>  insert into emp10 select * from emp where deptno=10 ;    

一次性将 emp表中的指定列插入到表emp10中。

注意:insert的列名,要和select的列名一致

SQL>  insert into emp10(empno, ename, sal, deptno)

   select empno, ename, sal, deptno  from emp

   where deptno=10;   注意没有values关键字了。且列名必须一一对应

总结: 子查询可以出现在DML的任何语句中,不只是查询套查询。

6.更新数据和删除数据操作

对于更新操作来说,一般会有一个“where”条件,如果没有这限制条件,更新的就是整张表。

SQL>  update emp10 set sal=4000, comm=300 where ename = 'CLARK';   ( 或 where empno=7782; )

注意:若没有where限定,那么会将所有的员工的sal都设置成4000,comm设置成300;

SQL>  update emp10 set comm = null where empno=1000;    这个操作是否能成功呢?

SQL>  select * from emp where comm = null 这个查询可以成功吗?

主语句、子语句操作的可以不是同一张表。

涉及问题: 数据完整性问题——约束。 (插入、更新、删除都可能造成表数据的变化)

约束:主键约束、外键约束、唯一约束、非空约束。 (简单了解。后面约束章节讲解)

7.事务

数据库事务,是由有限的数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行。

数据库事务由以下的部分组成:

  1. 一个或多个DML语句
  2. 一个 DDL(Data Definition Language – 数据定义语言) 语句
  3. 一个 DCL(Data Control Language – 数据控制语言) 语句

 事务的特点:要么都成功,要么都不执行

8.课程小结

事务4大特性

  1. 原子性 (Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
  2. 一致性 (Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
  3. 隔离性 (Isolation):事务的执行不受其他事务的干扰,当数据库被多个客户端并发访问时,隔离它们的操作,防止出现:脏读、幻读、不可重复读。
  4. 持久性 (Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。 

9.表的创建

数据库的对象:表、视图、索引、序列、同义词

:存储过程、存储函数、触发器、包、包体、数据库链路(datalink)、快照。(12个)

基本的数据存储集合,由行和列组成。

视图 从表中抽出的逻辑上相关的数据集合。

序列 提供有规律的数值。

索引 提高查询的效率

同义词 给对象起别名

10.修改表列

基本的数据存储集合,由行和列组成。

表名和列名遵循如下命名规则:

  1. 必须以字母开头
  2. 必须在 1–30 个字符之间
  3. 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
  4. 必须不能和用户定义的其他对象重名
  5. 必须不能是Oracle 的保留字
  6. Oracle默认存储表名是都是大写

11.清空表

delete from 表名 (没有where 条件) 也可以清空一张表

  1. delete 逐条删除表“内容”,truncate 先摧毁表再重建

(由于delete使用频繁,Oracle对delete优化后delete快于truncate)

  1. delete 是DML语句,truncate 是DDL语句。DML语句可以闪回(flashback)和回滚rollback,DDL语句不可以闪回和回滚。

(闪回: 做错了一个操作并且commit了,对应的撤销行为。了解)

  1. 由于delete是逐条操作数据,所以delete会产生碎片,truncate不会产生碎片。

(同样是由于Oracle对delete进行了优化,让delete不产生碎片)。两个数据之间的数据被删除,删除的数据——碎片,整理碎片,数据连续,行移动。

  1. delete不会释放空间,truncate 会释放空间。用delete删除一张10M的表,空间不会释放。而truncate会。所以当确定表不再使用,应使用truncate。

12.删除表和重命名表

当表被删除:

  1. 数据和结构都被删除
  2. 所有正在运行的相关事务被提交
  3. 所有相关索引被删除
  4. DROP TABLE 语句不能回滚,但是可以闪回

SQL>  select * from tab   查看当前用户下有哪些表。 拷贝保存表名。

SQL>  drop table testsp   将测试保存点的表删除。

SQL>  select * from tab   再次查询跟刚刚保存的表名比对,少了testsp,但多了另外一张命名复杂的表。

Oracle的回收站:

1. 查看回收站:show recyclebin  (sqlplus 命令) 那个复杂的命名即是testsp在回收站中的名字。

SQL> select * from testsp   这样是不能访问的。

SQL> select * from "BIN$+vu2thd8TiaX5pA3GKHsng==$0"   要使用“回收站中的名字”

2. 清空回收站:purge recyclebin 

SQL> drop table test1 purge  表示直接删除表,不经过回收站。

将表从回收站里恢复,涉及“闪回”的知识,作为了解性知识点。

注意:并不是所有的用户都有“回收站”,对于没有回收站的用户(管理员)来说,删除操作是不可逆的。

13.约束概念和分类

Not Null 非空约束

例如:人的名字,不允许为空。

2. Unique 唯一性约束

例如:电子邮件地址,不可以重复。

3. Check 检查性约束

如:人的性别,只能填男或者女;工作后薪水满足的条件应该大于0。

4. Primary Key 主键约束

主键是唯一标识表中某一行数据的列,主键约束隐含Not null + Unique。

一个表只能有一个主键,但是主键可以是某一列,也可以是多列组成表的主键,比如说可以用员工名和部门号两列组成emp表的主键。将某两个列作为主键必须用表级约束

constraint 约束名 primary key (列1,列2)

5. Foreign Key 外键约束

例如:部门表dept和员工表emp,不应该存在不属于任何一个部门的员工。用来约束两张表的关系。

一个表(子表)的外键必须是其他某个表(父表)具有唯一约束的列(一般都用主键),子表外键的值必须满足能在的列中存在,或者为NULL

这里边就涉及到一个问题,就是是父表的键值被删除,这时候子表里边的外键值应该怎么办?有以下三种方案:

  1. 不允许删除(restrict默认)
  2. 子表里边的数据跟着删除(cascade)
  3. 子表里边的数据设置为空(set null)

多数情况下,使用SET NULL方法,防止子表列被删除,数据出错。

所以这里边也涉及到删除表的时候的顺序:

1) 先将子表的内容删除,然后再删除父表。

2) 将子表外键一列设置为NULL值,断开引用关系,然后删除父表。

14.约束举例说明

15.视图

16.序列

17.索引

18.同义词

19.SQL和sqlplus区分

20.上午课程

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

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

相关文章

人工智能之数学基础:复矩阵

本文重点 复矩阵是线性代数中以复数为元素的矩阵,是实矩阵在复数域上的自然推广。与实矩阵相比,复矩阵在数学性质、运算规则和应用场景上具有独特性,尤其在量子力学、信号处理、控制理论等领域发挥关键作用。 复矩阵的定义与表示 定义:复矩阵指的是元素含有复数的矩阵。…

华清远见成都中心嵌入式学习总结

一、Linux 基础入门 课程首先介绍了 Linux 系统的六大特性,包括开源、免费、可裁剪等核心优势。重点讲解了文件系统结构,强调根目录(/)作为唯一入口的树状结构。通过实操学习了 pwd、ls、cd 等基础命令,掌握了绝对路径…

linux安装ollama

俩种方式都可 一、linux通过docker安装ollama镜像 1.下载安装ollama镜像 # 安装 Docker sudo yum install docker sudo systemctl start docker#docker查看所有容器 docker ps -a # 查看所有容器# docker查看指定容器 docker ps -a |grep ollama# 创建模型存储目录&#xff…

Redis 学习目标

🎯 Redis 学习目标(开发者视角) ✅ 一、学习完成后能掌握的核心能力: 分类具体内容📦 基础能力熟练掌握 Redis 五大数据结构(String、List、Hash、Set、ZSet),会用也会选对场景&am…

gerrit配置及使用git-lfs

gerrit服务器端配置 下载git-lfs插件 登录Dashboard [Jenkins] (gerritforge.com),下载对应版本的插件 配置gerrit 将下载的lfs.jar插件放到${GERRIT_SITE}/plugins/下面为所有仓库启用git-lfs 此步骤需要修改 All-projects 仓库配置,步骤如下 1、克隆仓…

深入理解 Linux PATH 环境变量:配置与优化!!!

深入理解 Linux PATH 环境变量:配置与优化 🚀 欢迎来到 Linux 环境变量的奇妙世界!今天我们来聊聊那个让命令行如鱼得水的幕后英雄——PATH 环境变量!😎 通过这篇博客,你将学会如何配置它、优化它&#xff…

如何在AMD MI300X 服务器上部署 DeepSeek R1模型?

DeepSeek-R1凭借其深度推理能力备受关注,在语言模型性能基准测试中可与顶级闭源模型匹敌。 AMD Instinct MI300X GPU可在单节点上高效运行新发布的DeepSeek-R1和V3模型。 用户通过SGLang优化,将MI300X的性能提升至初始版本的4倍,且更多优化将…

简化DB操作:Golang 通用仓库模式

介绍 本代码包提供一个用于数据库操作的通用仓库 (GenericRepository),利用 Golang 和 GORM (Go ORM) 实现。该仓库设计用于简化数据库的 CRUD (创建、读取、更新、删除) 操作,支持批处理、冲突处理、分页查询等高级功能。 主要功能 创建记录 (Create…

JavaWeb 课堂笔记 —— 08 请求响应

本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…

双引擎驱动:解密音视频体验的QoS技术底座与QoE感官革命

QoS 定义:QoS(Quality of Service,服务质量)衡量音视频传输技术层面的性能表现,聚焦网络传输和系统处理能力,通过客观指标量化服务质量。核心指标 码率/带宽:数据传输速率上限,直接…

Stable Diffusion + Contronet,调参实现LPIPS最优(带生成效果+指标对比)——项目学习记录

目录 前言 一、数据集:图像文本,部分选取于DeepFashion 二、优化一,img2img 三、优化二,微调sd参数 四、优化三,dreamshaper优化 五、优化四,sdv1.5contronet 六、问题探索历程 1. 从 SDXL 到轻量化模…

SQL 不走索引的常见情况

在 SQL 查询中&#xff0c;即使表上有索引&#xff0c;某些情况下数据库优化器也可能决定不使用索引。以下是常见的不走索引的情况&#xff1a; 1. 使用否定操作符 NOT IN ! 或 <> NOT EXISTS NOT LIKE 2. 对索引列使用函数或运算 -- 不走索引 SELECT * FROM user…

数据库主从延迟全解析:原因、影响与解决之道

目录 一、引言&#xff1a;理解数据库主从架构 二、数据库主从延迟的定义与测量 2.1 主从延迟的技术定义 2.2 如何测量主从延迟 2.3 主从延迟对系统的影响 三、主从延迟的常见原因分析 3.1 网络延迟因素 3.1.1 网络质量与带宽限制 3.1.2 地理位置分布造成的延迟 3.2 …

分治-归并系列一>翻转对

目录 题目&#xff1a;解析&#xff1a;策略一&#xff1a; 代码&#xff1a;策略二&#xff1a; 代码&#xff1a; 题目&#xff1a; 链接: link 这题和逆序对区别点就是&#xff0c;要找到前一个元素是后一个元素的2倍 先找到目标值再&#xff0c;继续堆排序 解析&#xff1…

从0到1打造一套适合自己接单的脚手架05自动化创建表

上一篇我们是手动创建的表&#xff0c;感觉不方便&#xff0c;后续如果要做成产品在部署的时候一个个的创建表太麻烦了&#xff0c;我们让ai来自动创建表&#xff0c;输入如下提示词 现在这种单独去navicate执行也不方便&#xff0c;我希望是有一个目录里存放的表结构的语句&a…

minio改成https+域名访问

思路有两个&#xff1a; 方式一&#xff1a;通过nginx反向代理&#xff0c;将https配置在nginx&#xff0c;内部的MinIO还是使用HTTP&#xff1b;方式二&#xff1a;MinIO服务端直接配置成HTTPS&#xff1b; 注意&#xff1a; 私钥需要命名为&#xff1a;private.key 公钥需要…

VS Code构建C/C++开发环境(Windows with MinGW and CMake)

文章目录 目的编译工具链基础开发与调试基于CMake开发与调试关于settings.json总结 目的 在Windows上进行C/C开发目前最最常用的IDE就是微软的 Visual Studio &#xff0c;只是对我来说早些年的VS实在是太卡了&#xff0c;留下了不好的印象。后来没怎么用过&#xff0c;现在下…

一组可能的机器学习问题列表

线性回归与多项式拟合的关系最小二乘法在机器学习中的应用梯度下降是如何实现的贝叶斯分类器的应用场景高斯分布与判定在哪里用到模型的评估有哪些参数误差中的偏差和方差定义训练集分组的快捷方式如何度量模型性能查准率查全率的定义roc,aux的含义正则化是什么意思k均值用来解…

linux下io操作详细解析

在 Linux 系统下&#xff0c;IO&#xff08;输入/输出&#xff09;操作是程序与外部设备&#xff08;如文件、网络等&#xff09;交互的重要方式。Linux 提供了丰富的系统调用和库函数来支持各种 IO 操作。以下是对 Linux 下 IO 操作的详细解析&#xff0c;包括文件 IO、网络 I…

wsl2+ubuntu22.04安装blender教程(详细教程)

本章教程介绍,如何在Windows操作系统上通过wsl2+ubuntu安装blender并运行教程。Blender 是一款免费、开源的 ​​3D 创作套件​​,广泛应用于建模、动画、渲染、视频编辑、特效制作等领域。它由全球开发者社区共同维护,支持跨平台(Windows、macOS、Linux),功能强大且完全…