Oracle入门——基础语法篇

01-表空间_用户创建

-- 查看当前用户
select user FROM dual;--创建表空间
--datefile '地址'
--size
--autoextend on
--next
create tablespace test
datafile 'c:/data/test.dbf'
size 100m
autoextend on
next 10m;--创建用户 default tablespace 默认表空间
create user c##user
identified by itcast
default tablespace waterboss;--给新用户授权 grant dba to c##user;
grant dba to c##user;--查看用户
select user FROM dual;

02-数据类型

-- 字符串类型
-- char(10)
-- varchar(10)
-- long
-- string-- 数字类型
-- number(5)
-- number(5,2)-- 时间类型
-- data ==> current_date
-- timestamp ==> current_timestamp-- 把unix类型的时间戳 转化为data时间类型
-- SELECT date '1970-01-01' + NUMTODSINTERVAL(1711361758, 'SECOND')  from dual;

03-表操作

-- 如果想要主键自增长 需要设置 自增序列
-- create sequence seq_userinfo
--     increment by 1
--     start with 1
--     nomaxvalue
--     nominvalue
--     cache 20;
-- 查看表结构
-- 在命令窗口 desc 表名
-- 在pl/sql中 SELECT DBMS_METADATA.GET_DDL('TABLE','XXX') FROM DUAL;
-- 注意: 表名必须大写-- 1. 创建表(主键 没有自增长)
create table test
(id   number primary key,name varchar2(100),age  number
);-- 修改表结构
-- 2. 增加一个字段
-- ALTER TABLE 表名称  ADD(列名  1  类型  [DEFAULT  默认值],列名   1  类型 [DEFAULT  默认值]...)
alter table testadd (height number(5, 2));
-- 增加多个字段
alter table testadd (height1 number(5, 2),height2 number(5, 2));-- 3. 修改字段
-- ALTER TABLE 表名称 MODIFY(列名 1  类型  [DEFAULT  默认值],列名 1  类型 [DEFAULT  默认值]...)
alter table testmodify (height1 number(10),height2 number(10));-- 4. 修改字段名
-- ALTER TABLE 表名称 RENAME COLUMN 原列名 TO  新列名
alter table test rename column height1 to ht;-- 5. 删除一个字段
-- ALTER TABLE 表名称 DROP COLUMN 列名
alter table test drop column height;-- 6. 删除多个字段
-- ALTER TABLE 表名称 DROP (列名 1,列名 2...)
alter table test drop (ht,height2);-- 7. 删除表
drop table test;

04-数据增删改

-- 创建表
create table test
(id   number primary key,name varchar2(100),age  number
);-- 插入一条数据
insert into test values(1,'老王',18);
commit;-- 插入多条数据
insert into test values(2,'老李',28);
insert into test values(3,'老谢',38);
-- 查看数据
select * from test;
-- 回滚
rollback;
-- 查看数据
select * from test;-- 数据修改和mysql一样
-- 数据删除和mysql一样-- delete可以回滚
delete from test;
select * from test;
rollback;-- truncate table 不可以回滚
truncate table test;
select * from test;
rollback;

05-条件查询语句

--1-使用DISTINCT关键字是最简单和直接的去重方法之一,它可以在SELECT语句中去重查询结果集。SELECT DISTINCT column1, column2
FROM table_name;--2-使用ROW_NUMBER()函数和CTE(公共表表达式)WITH CTE AS (SELECT column1, column2,ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY column1, column2) AS rnFROM table_name
)
SELECT column1, column2
FROM CTE
WHERE rn = 1;--3-使用GROUP BY子句可以对查询结果进行分组,结合聚合函数可以实现去重。SELECT column1, column2
FROM table_name
GROUP BY column1, column2;

06-伪列rowid和rownum的使用

        在Oracle数据库中,ROWID和ROWNUM都是用于对行进行标识和定位的伪列,它们在查询中的使用有一些不同之处。

ROWID

        ROWID是Oracle中的一个伪列,用于唯一标识数据库中的每一行。它是一个字符串,包含了行所在的数据块地址、行地址以及行在数据块中的相对位置等信息。在查询中,可以使用ROWID来定位和操作特定的行,例如,删除特定的行或更新特定的行。以下是使用ROWID的一些示例:

-- 伪列 并不真实存在于表中 他是根据orcale在读取插入数据的时候 根据物理地址信息编码形成的信息
--1-查找指定行的ROWIDSELECT ROWID, column1, column2
FROM table_name
WHERE condition;--2-根据ROWID删除行DELETE FROM table_name
WHERE ROWID = 'AAAR8pAABAAALPwAAA';--3-根据ROWID更新行
UPDATE table_name
SET column1 = 'new_value'
WHERE ROWID = 'AAAR8pAABAAALPwAAA';

ROWNUM

        ROWNUM是Oracle中的另一个伪列,用于给查询结果集中的行分配一个行号。它在查询中的应用通常是为了限制结果集的大小或进行分页查询。以下是使用ROWNUM的一些示例:

--1-限制结果集的大小SELECT column1, column2
FROM table_name
WHERE ROWNUM <= 10;--2-分页查询SELECT column1, column2
FROM (SELECT column1, column2, ROWNUM AS rnFROM table_nameWHERE condition
)
WHERE rn BETWEEN 11 AND 20;

07-聚合函数

--COUNT函数用于计算查询结果集中行的数量
SELECT COUNT(column_name) AS count
FROM table_name;--SUM函数用于计算数值列的总和
SELECT SUM(column_name) AS total_sum
FROM table_name;--AVG函数用于计算数值列的平均值
SELECT AVG(column_name) AS average
FROM table_name;--MAX函数用于找到数值列的最大值
SELECT MAX(column_name) AS max_value
FROM table_name;--MIN函数用于找到数值列的最小值
SELECT MIN(column_name) AS min_value
FROM table_name;--GROUP BY 和聚合函数的结合使用
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

08-连接查询

        在Oracle中,连接查询是通过使用JOIN子句将两个或多个表中的数据合并在一起,以获取满足特定条件的结果集。以下是一些常见的连接查询示例:

--内连接(INNER JOIN)
--内连接返回两个表中符合连接条件的行,这是最常见的连接类型。
SELECT t1.column1, t2.column2
FROM table1 t1
INNER JOIN table2 t2 ON t1.key_column = t2.key_column;-- 左连接(LEFT JOIN)
--左连接返回左边表中的所有行,以及右边表中符合连接条件的行。如果右边表中没有匹配的行,则返回NULL
SELECT t1.column1, t2.column2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.key_column = t2.key_column;-- 右连接(RIGHT JOIN)
--右连接返回右边表中的所有行,以及左边表中符合连接条件的行。如果左边表中没有匹配的行,则返回NULL。
SELECT t1.column1, t2.column2
FROM table1 t1
RIGHT JOIN table2 t2 ON t1.key_column = t2.key_column;--全连接(FULL OUTER JOIN)
--全连接返回左右两个表中的所有行,如果某个表中没有匹配的行,则返回NULL。
SELECT t1.column1, t2.column2
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.key_column = t2.key_column;

09-子查询

        在Oracle中,子查询是指嵌套在另一个查询内部的查询语句,它可以作为主查询的一部分,用于提供额外的过滤条件、计算或数据源。以下是一些常见的Oracle子查询的示例:

--1. 子查询作为WHERE子句的条件
--子查询可以嵌套在WHERE子句中,用于提供额外的过滤条件。
SELECT column1, column2
FROM table_name
WHERE column1 IN (SELECT column1FROM another_tableWHERE condition
);--2. 子查询作为FROM子句的数据源
--子查询可以嵌套在FROM子句中,作为查询的数据源。
SELECT t1.column1, t2.column2
FROM (SELECT column1, column3FROM table1WHERE condition
) t1
INNER JOIN table2 t2 ON t1.column1 = t2.column1;--3. 子查询作为SELECT子句的列
--子查询可以嵌套在SELECT子句中,用于计算额外的列或值。
SELECT column1,(SELECT COUNT(*) FROM another_table WHERE column2 = table_name.column1) AS count
FROM table_name;--4. 子查询作为INSERT语句的VALUES子句
--子查询可以作为INSERT语句的VALUES子句的一部分,用于将查询结果插入到目标表中。
INSERT INTO table_name (column1, column2)
SELECT column1, column2
FROM another_table
WHERE condition;

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

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

相关文章

麒麟服务器操作系统自动化安装应答文件制作

原文链接&#xff1a;麒麟服务器操作系统自动化安装应答文件制作 Hello&#xff0c;大家好啊&#xff01;今天我们将探讨如何为麒麟服务器操作系统制作自动化安装应答文件。在部署大量服务器时&#xff0c;自动化安装是提高效率和确保安装一致性的关键技术。通过使用应答文件&a…

云原生Kubernetes: K8S 1.29版本 部署Kuboard

目录 一、实验 1.环境 2.K8S 1.29版本 部署Kuboard (第一种方式) 3.K8S 1.29版本 部署Kuboard (第二种方式) 4.K8S 1.29版本 使用Kuboard 二、问题 1.docker如何在node节点间移动镜像 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注ma…

全量知识系统 程序详细设计之 刀具库钩子程序和胶水语言(QA 百度搜索)

Q1. 我们聊聊全量知识系统中的三大套&#xff1a;刀具库、钩子程序和胶水语言 全量知识系统中的三大套——刀具库、钩子程序和胶水语言&#xff0c;在软件开发和系统构建中扮演着至关重要的角色。这些概念在不同的技术背景下可能有所不同&#xff0c;但总体来说&#xff0c;它…

css3中有哪些伪选择器?

CSS3中有以下伪选择器&#xff1a; :active&#xff08;选中的元素处于活动状态&#xff09;:checked&#xff08;选中的表单元素&#xff09;:disabled&#xff08;禁用的表单元素&#xff09;:empty&#xff08;没有子元素的元素&#xff09;:enabled&#xff08;可用的表单…

Hive进阶(5)----yarn的资源调度策略

yarn的资源调度策略 YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop的资源管理器。它负责集群资源的管理和作业调度。YARN的资源调度是通过几个关键组件来实现的&#xff1a; ResourceManager&#xff08;RM&#xff09;&#xff1a;RM是YARN集群…

如何在Python中有效地使用列表推导式和生成器表达式? —— 编写更简洁、高效的代码

列表推导式和生成器表达式是Python中非常强大和常用的工具&#xff0c;可以帮助我们编写更简洁、高效的代码。下面是一些使用列表推导式和生成器表达式的技巧和建议&#xff1a; 使用列表推导式创建新的列表&#xff1a; 从已有的列表中选择满足特定条件的元素&#xff1a;new_…

tp8 在构造函数中实例化模型

在ThinkPHP 8&#xff08;TP8&#xff09;中&#xff0c;如果你需要在控制器或其他类的构造函数中实例化模型&#xff0c;你可以按照以下步骤进行&#xff1a; 首先&#xff0c;确保你已经定义了模型类。例如&#xff0c;如果你有一个名为User的模型&#xff0c;你应该有一个a…

安全开发之碰撞检测与伤害计算逻辑

一、什么是碰撞检测逻辑&#xff1f; 用通俗移动的话来说&#xff0c;碰撞检测就是一门检测两部分运动轨迹是否碰到一起的逻辑&#xff0c;在游戏中一般至少包含2方面的碰撞检测逻辑&#xff1a;一、核心玩法的碰撞检测逻辑&#xff1b;二、运动碰撞检测逻辑。 关于核心玩法的…

手写一个民用Tomcat (06)

我们这次是引入获取参数&#xff0c;比如你的GET 请求 或者post 请求 如何吧请求参数进行封装 成map 集合 。 先看下erquest。请求类里边改造 private void parseRequestLine() 这个方法 改造成 依据 ?进行分割处理因为 http://localhost:8080/servlet/com.yixin.HelloWor…

负载均衡原理|算法

负载均衡&#xff08;Load Balancing&#xff09;是一种计算机网络技术&#xff0c;其目的是将大量的并发请求或网络流量分散到多个服务器上&#xff0c;以此来提高服务的可用性、响应速度、以及系统的总体处理能力&#xff0c;同时减轻单个服务器的负担。负载均衡不仅能够避免…

太阳能路灯光伏板的朝向设计问题

题目&#xff1a;太阳能路灯光伏板的朝向设计问题 难度对标几乎每一年的国赛A题。 QQ群&#xff1a;592697532 公众号&#xff1a;川川菜鸟 文章目录 背景问题问题一问题二问题三 题目解读相关公式&#xff08;必备&#xff09;太阳辐射的计算光伏板接收的辐射光学效率大 气透…

OpenXR手部追踪实现详解

在虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;应用中&#xff0c;手部追踪技术是提高用户交互自然性的关键技术之一。本文将详细介绍如何使用OpenXR API实现手部追踪功能&#xff0c;包括系统属性的查询、手部追踪器的创建和手部关节的定位。 开…

Spring Cloud Gateway详细介绍以及实现动态路由

一. 简介 Spring Cloud Gateway This project provides a libraries for building an API Gateway on top of Spring WebFlux or Spring WebMVC. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to …

C++的线程

#include<iostream> #include<thread> #include<unistd.h> using namespace std; void myrun() {while(true){cout<<"I am a thread"<<endl;sleep(1);} } int main() {thread t(myrun);t.join();return 0; } 如果不添加-lpthread就会报…

基于ChatGPT打造安全脚本工具流程

前言 以前想要打造一款自己的工具&#xff0c;想法挺好实际上是难以实现&#xff0c;第一不懂代码的构造&#xff0c;只有一些工具脚本构造思路&#xff0c;第二总是像重复造轮子这种繁琐枯燥工作&#xff0c;抄抄改改搞不清楚逻辑&#xff0c;想打造一款符合自己工作的自定义的…

Day 25 组合(优化)216.组合总和III 17.电话号码的字母组合

组合&#xff08;优化&#xff09; 先给出组合问题的回溯部分代码&#xff1a; vector<vector<int>> result; // 存放符合条件结果的集合vector<int> path; // 用来存放符合条件结果void backtracking(int n, int k, int startIndex) {if (path.size() k) …

【opencv】dnn示例-person_reid.cpp 人员识别(ReID,Re-Identification)系统

ReID(Re-Identification&#xff0c;即对摄像机视野外的人进行再识别) 0030_c1_f0056923.jpg 0042_c5_f0068994.jpg 0056_c8_f0017063.jpg 以上为输出结果&#xff1a;result文件夹下 galleryLIst.txt queryList.txt 模型下载&#xff1a; https://github.com/ReID-Team/ReID_e…

简搜,一个安卓应用,用于扫描纸质书,把它变成可以用多个关键词搜索的电子书

下载连接&#xff1a;简搜scanner-app资源-CSDN文库 扫描纸质书&#xff0c;让它变成可以像百度搜索一样使用的电子书。 诸如自考、公务员考试考试中&#xff0c;需要大量刷题时&#xff0c;大部分知识点就在书中&#xff0c;但是要找到它&#xff0c;通常要花几分钟甚至个把…

OpenHarmony网络通信-socket-io

简介 socket.io是一个在客户端和服务器之间实现低延迟、双向和基于事件的通信的库。建立在 WebSocket 协议之上&#xff0c;并提供额外的保证&#xff0c;例如回退到 HTTP 长轮询或自动重新连接。 效果展示 下载安装 ohpm install ohos/socketio OpenHarmony ohpm 环境配置等更…

VulnHub靶机 DC-5 打靶 渗透测试详情过程

VulnHub靶机 DC-5 打靶 详细渗透测试过程 目录 VulnHub靶机 DC-5 打靶 详细渗透测试过程一、将靶机导入到虚拟机当中二、渗透流程主机发现端口扫描目录爆破文件包含getshell反弹shell提权 一、将靶机导入到虚拟机当中 靶机地址&#xff1a; https://download.vulnhub.com/dc/…