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 test
    add (
        height number(5, 2)
        );
-- 增加多个字段
alter table test
    add (
        height1 number(5, 2),
        height2 number(5, 2)
        );

-- 3. 修改字段
-- ALTER TABLE 表名称 MODIFY(列名 1  类型  [DEFAULT  默认值],列名 1  类型 [DEFAULT  默认值]...)
alter table test
    modify (
        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 rn
    FROM 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-查找指定行的ROWID

SELECT 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 rn
    FROM table_name
    WHERE 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 column1
    FROM another_table
    WHERE condition
);


--2. 子查询作为FROM子句的数据源
--子查询可以嵌套在FROM子句中,作为查询的数据源。
SELECT t1.column1, t2.column2
FROM (
    SELECT column1, column3
    FROM table1
    WHERE 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.mfbz.cn/a/556669.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java框架】Spring框架(四)——Spring中的Bean的创建与生命周期

目录 SpringBean的创建步骤后置处理器(PostProcessor)BeanFactoryPostProcessorBeanPostProcessorInstantiationAwareBeanPostProcessorpostProcessBeforeInstantiationpostProcessAfterInstantiationpostProcessProperties SmartInstantiationAwareBeanPostProcessordetermine…

空心电抗器的matlab建模与性能仿真分析

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 空心电抗器是一种无铁芯的电感元件&#xff0c;主要由一圈或多圈导线绕制在非磁性材料制成的空心圆筒或其他形状的骨架上构成。其工作原理基于法拉第电磁感应定律&#xff0c;…

Maui 开始笔记

1&#xff0c;仿真器硬件加速&#xff0c;需要安装 2&#xff0c;刚创建的maui 不添加的话&#xff0c;启动可能时会自动退出&#xff0c;不退出&#xff0c;可以不加次配置 MauiApp1.csproj 文件中配置 在 PropertyGroup 元素下添加 <WindowsAppSdkDeploymentManagerIniti…

【Qt】常用控件(LCD Number/进度条/日历)

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、LCD Number(LCD显示器) 一个倒计时程序 二、ProgressBar(进度条) 1、创建一个进度条&#xff0c;100ms进度增加…

hv第一坑:定时器

错误代码 重试策略&#xff1a;一次延迟1s,最长30s直至事件成功。 int try_count 0;//do something if(not success)m_loop->setTimerInLoop((try_count > 30 ? 30: try_count) *1000 , cb, INFINITE, 0x100);表现现象 cpu 爆了内存爆了 总结原因 hv内部代码bug&…

C语言—常用字符串函数剖析

字符串函数 cplusplus.com/reference/cstring/ 更多没有总结到的函数大家可以自行查阅 这篇文章只是把最需要知道的函数做一个总结 strlen size_t strlen ( const char * str );字符串已经 ‘\0’ 作为结束标志&#xff0c;strlen函数返回的是在字符串中 ‘\0’ 前面出现的…

力扣面试150 文本左右对齐 贪心 字符串 满注释版

Problem: 68. 文本左右对齐 思路 &#x1f469;‍&#x1f3eb; 三叶题解 &#x1f496; Code class Solution { public List<String> fullJustify(String[] words, int maxWidth){List<String> ans new ArrayList<>();// 结果List<String> list …

【网络安全技术】——网络安全设备(学习笔记)

&#x1f4d6; 前言&#xff1a;网络防火墙&#xff08;简称为“防火墙”&#xff09;是计算机网络安全管理中应用最早和技术发展最快的安全产品之一。随着互联应用的迅猛发展&#xff0c;各种安全问题和安全隐患日渐突出。防火墙及相关安全技术能够最大可能地解决各类安全问题…

SpringBoot整合零一万物模型API进行多轮对话

前期准备工作 零一万物官网&#xff1a;https://www.01.ai/cn 零一万物大模型开放平台&#xff1a;https://platform.lingyiwanwu.com/ 选择理由 性价比高很高&#xff0c;模型整体不错&#xff0c;新用户送60元&#xff0c;非常适合研究学习。 开发 只提供了http接口和p…

测试JAVA 测开

测试、java测开 1、测试用例要素&#xff08;4个重要要素&#xff09;2、测试用例的好处3、测试用例的设计方法3.1 基于需求设计测试用例3.2 等价类3.3 边界值3.4 判定表 1、测试用例要素&#xff08;4个重要要素&#xff09; 测试环境操作步骤测试数据预期结果 2、测试用例的…

计算机网络:CSMA/CA协议

计算机网络&#xff1a;CSMA/CA协议 CSMA/CA概述帧间间隔工作原理退避算法虚拟载波监听 CSMA/CA概述 讲解CSMA/CA之前&#xff0c;我们回顾一下CSMA/CD的三个特性&#xff1a; 多址接入MA&#xff1a;多个主机连接在一条总线上&#xff0c;竞争使用总线 载波监听CS&#xff1a…

2025考研数学武忠祥强化班视频,百度网盘课程+讲义PDF更新

25考研的小伙伴们现在应该基础都学习的差不多了吧&#xff01; 是时候进入强化阶段的学习啦。 2025考研数学强化班全程网盘&#xff1a;https://pan.baidu.com/s/1Z029fuCLkyyhIRFqd5QKcg 提取码&#xff1a;p3ue 晚上好&#xff0c;聊聊17堂课的看课攻略。 今年的17堂课还…

文件解读 | 工信部88号文发布,强调7大任务、6大重点!

工业和信息化部于4月7日印发通知&#xff0c;要求各有关单位按照安全生产治本攻坚三年行动工作部署要求&#xff0c;坚持安全发展、预防为主、技管结合&#xff0c;把安全生产和网络运行安全的任务、措施、责任真正落到实处&#xff0c;切实筑牢保障人民群众生命财产安全和社会…

【大模型书籍PDF】复旦新出!大规模语言模型:从理论到实践(书籍分享)

自2018年以来&#xff0c;包含Google、OpenAI、Meta、百度、华为等公司和研究机构都纷纷发布了包括BERT&#xff0c; GPT等在内多种模型&#xff0c;并在几乎所有自然语言处理任务中都表现出色。 今天给大家推荐一本大模型方面的书籍<大规模语言模型&#xff1a;从理论到实…

2024上海国际特种电子暨军民两用技术展览会

2024上海国际特种电子暨军民两用技术展览会 2024 Shanghai International Special Electronics and Military Civilian Dual Use Technology Exhibition 时间&#xff1a;2024年11月18日-20日 地点&#xff1a;上海新国际博览中心 详询主办方陆先生 I38&#xff08;前三位…

模拟相机拍照——对文档进行数据增强

一. 背景 假如我们有一个标准文件&#xff0c;我们对其进行文字识别、版面分析或者其他下游任务就比较容易。然而&#xff0c;当图片是手机拍照获取的&#xff0c;图片中往往有阴影、摩尔纹、弯曲。 那么&#xff0c;如何通过标准的文档&#xff0c;获得类似相机拍照的图片呢&…

Java 网络编程之TCP:基于BIO

环境&#xff1a; jdk 17 IntelliJ IDEA 2023.1.1 (Ultimate Edition) Windows 10 专业版 22H2 TCP&#xff1a;面向连接的&#xff0c;可靠的数据传送协议 Java中的TCP网络编程&#xff0c;其实就是基于常用的BIO和NIO来实现的&#xff0c;本文先讨论BIO&#xff1b; BIO…

C# - 反射动态添加/删除Attribute特性

API: TypeDescriptor.AddAttributes TypeDescriptor.GetAttributes 注意&#xff1a;TypeDescriptor.AddAttributes添加的特性需要使用 TypeDescriptor.GetAttributes获取 根据api可以看到&#xff0c;该接口不仅可以给指定类&#xff08;Type&#xff09;添加特性&#xf…
最新文章