Oracle基本语法(SQLPlus)

目录:

前言:

准备工作:

登录:

1.打开SQL Plus命令行工具

第一种方式:

 第二种方式:

2.以不同用户登录 

SYSTEM(普通管理员):

SYS(超级管理员):

不显示密码方式:

 显示密码方式:

SCOTT(普通用户):

若是出现被锁住的情况:​

解决方法: 

SQL基本命令

1.数据定义语言(DDL)

数据库操作 

查询所有用户:

查看当前用户:

创建用户并指定其表空间:

给用户授予dba的权限(超级管理员):

删除用户(超级管理员):

 切换用户登录:

表操作

查询:

查询某个用户下所有表名:

查询某个用户下表个数:

查询某个用户的表结构:

查询指定表的建表语句:

创建:

数据类型(链接):

创建表空间:

​编辑

创建表:

给表添加注释:

给字段添加注释: 

 表备份:

修改:

重命名表:

添加字段:

修改字段名:

修改数据类型:

删除:

删除表字段:

删除表:

删除表空间:

删除指定表并重新创建该表:

2.数据操作语言(DML)

添加数据(insert)

给指定字段添加数据:

给表中批量添加数据:

修改数据(update) 

修改数据:

删除数据(delete)

删除数据:

​编辑

3.数据查询语言(DQL)

编写顺序:

执行顺序:

基本查询

查询多个字段:

设置别名:

去除重复记录:

条件查询

语法:

​编辑

条件:

聚合函数

分组查询

排序查询

分页查询 

4.数据控制语言(DCL)

管理用户

查看当前用户:

权限控制

查询用户权限: 

授予权限:

回收权限:

函数

使用

sys.dual 

字符串函数

数值函数

日期函数

日期表示:

函数概述:

 eg:

sysdate:

next_day(): 

​last_day():​

round() :

​add_months():​

months_between(): 

extract(): 


前言:

1.使用的数据库不同,所使用的语法也略有不同

2.SQL对大小写不敏感,无论大小写,sql自动转换为大写

3.Oracle中对引号里面的内容大小写敏感

3.表空间名、文件路径......等需要用单引号将其包含

4.一般引号里面的内容需要大写


准备工作:

(1).Win+R打开services.msc

 

 (2)启动一些服务:

(qwq我不知道哪些有用,哪些没用,所以我都把打开了,不知道有没有负面影响,大家参考一下别的博客吧)


登录:

1.打开SQL Plus命令行工具

第一种方式:

 第二种方式:

(1)win+R 打开cmd

(2)输入sqlplus

2.以不同用户登录 

注意:

1.使用用户口令这种形式登录的时候,是不显示密码的,口令输入的时候是不显示的,直接输就好

2.若是想以显示密码的形式输入,直接在用户名那一块输入:用户名/密码

3.超级管理员(sys)输入时需要注意指定 as sysdba

SYSTEM(普通管理员):

SYS(超级管理员):
不显示密码方式:

用户名:SYS

密码:sys密码 as sysdba

 显示密码方式:

用户名:sys/sys密码 as sysdba

SCOTT(普通用户):
若是出现被锁住的情况:
解决方法: 

(1)登录超级管理员账户,

(2)输入alter user 用户名 account unlock; 

 

(3)重新登录即可:


SQL基本命令


1.数据定义语言(DDL)

数据库操作 

查询所有用户:

select distinct(OWNER) from all_tables;

查看当前用户:

show user;

创建用户并指定其表空间:

create user 用户名 identified by 密码 default tablespace 表空间;

给用户授予dba的权限(超级管理员):

 grant dba to 用户;

删除用户(超级管理员):

(1)查看用户是否有活跃对话

select sid as session_id, serial# from v$session where username='用户名';

(2)如果查询结果显示有活动的会话,结束这些会话

kill session 'session_id, serial#' immediate;

 (3)删除用户

drop user 用户名 cascade;

  

 切换用户登录:

conn 用户名/密码

表操作

查询:
查询某个用户下所有表名:

(用户名注意大写)

select table_name from dba_tables where owner = '用户名';

查询某个用户下表个数:

(用户名注意大写)

select count(*) from all_tables where OWNER = '用户名';

查询某个用户的表结构:
desc 用户名.表名;

查询指定表的建表语句:

(表名、用户名注意大写)

select dbms_metadata.get_ddl('TABLE', '表名','用户名') from dual;

创建:
数据类型(链接):

Oracle中的数据类型详解_oracle smallint-CSDN博客

创建表空间:

 create tablespace 表空间名 datafile '文件路径\文件名.dbf' size 表空间大小;

 

创建表:
#创建表
create table 表名(字段1 字段1类型,字段2 字段2类型,字段3 字段3类型,.......字段n 字段n类型) ;       

给表添加注释:
 comment on table 表名 is '注释';

 

给字段添加注释: 
comment on column 表名.字段名 is '注释';

 表备份:
create table 用户名.备份表名 as select * from 用户名.需要备份的表名;

 

修改:
重命名表:
alter table 用户名.旧表名 rename to 新表名;

添加字段:
alter table 用户名.表名 add 新字段名 新字段类型 default '默认值';

修改字段名:
 alter table 用户名.表名 rename column 旧字段名 to 新字段名;

修改数据类型:
 alter table T1.emp1 modify temp varchar(30);

删除:
删除表字段:
alter table 用户名.表名 drop column 字段名;

删除表:
drop table 表名;

删除表空间:

(1)查看是否有其它用户在使用该表空间:

select * from dba_users where default_tablespace='表空间名';

(2)若有,则删除这些用户或者将这些用户迁移到别的表空间

(3)删除表空间

drop tablespace 表空间名 including contents and datafiles;

删除指定表并重新创建该表:
truncate table 表名;


2.数据操作语言(DML)

添加数据(insert)

注意:

1.插入数据注意顺序

2.插入的数据大小要合法

给指定字段添加数据:

insert into 表名 (字段1,字段2......) values(值1, 值2......);

给表中批量添加数据:

insert all into 用户名.表名(字段1,字段2,字段3......) values(值1,值2,值3.......)into 用户名.表名(字段1,字段2,字段3......) values(值1,值2,值3.......)
select * from dual;

修改数据(update) 

修改数据:

 注意:如果没有条件,则会修改整张表

update 表名 set 字段1=值1,字段2=值2......[where 条件];

删除数据(delete)

删除数据:

注意:如果没有条件,则会删除整张表

update 表名 set 字段1=值1,字段2=值2......[where 条件];


3.数据查询语言(DQL)

编写顺序:

select [distinct|all] 字段列表from 表名where 查询条件group by 分组字段列表having 分组后条件列表order by 排序字段列表:asc或者desc
;

作示范的表结构:

表名:T_STUDENT

执行顺序:

from 表名 : 从哪张表查询where 条件 :查询条件group by 分组条件 :分组having 分组后查询条件 :分组后查询条件select 字段列表 :选择字段order by 排序方式 :对查询结果进行排序
;

基本查询

查询多个字段:

select 字段1,字段2,字段3...from 表名;select * from 表名;

设置别名:

select 字段1[as 别名1],字段2 [as 别名2]......from 表名;

去除重复记录:

select distinct 字段列表 from 表名;

条件查询

语法:

select 字段列表 from 表名 where 条件列表;

条件:

比较运算符功能
>
>=
<
<=
=
<> 或 !=不等于
between...and...在某个范围之内
in(...)在in之后的括号中,多选一
like 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
is null
and 或 &&并且
or 或 ||
not 或 !

聚合函数

select 聚合函数(字段列表) from 表名;

注意:

        对一列进行计算 所有null值不参与聚合函数的计算

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

分组查询

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
where
分组之前执行,不满足where条件的不参与分组,where不能对聚合函数进行判断
having
分组之后对结果进行过滤,having可以对聚合函数进行判断

eg:

排序查询

select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
asc升序(默认)
desc降序

分页查询 

(oracle查询没有limit关键字,引入rownum进行分页查询)

select * from
(select rownum rn, t.* from(select 字段 from t_student) t where rownum <= 终止行
)where rn >= 起始行;


4.数据控制语言(DCL)

管理用户

查看当前用户:

show user;

切换用户:

connect 用户名/密码;

注意连接到数据库超级管理员的时候:

可能会出现以下错误:

解决方法:

connect sys/密码 as sysdba

 

权限控制

查询用户权限: 

select * from dba_sys_privs where grantee='用户名';

授予权限:

 grant 权限 to 用户;
权限说明
create session登录权限
create table创建表的权限
drop any table删除任意表
insert any table向任意表中插入行
update any table修改任意表中行的权限
select on 表名 查看指定表的权限

 eg:

回收权限:

revoke select on 用户2.表2 from 用户1; #回收用户1查看表2的权限


函数

使用

一般形式:

select 函数 from 表名 where 条件;

如果只是想看函数的返回结果可以使用以下形式:

select 函数 from sys.dual;

sys.dual 

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录

字符串函数

eg:

 

 

数值函数

eg: 

日期函数

日期表示:

日期-月份-年份   

eg:21-9月-2024

函数概述:

 eg:

sysdate:

next_day(): 
 last_day():
round() :
 add_months():
months_between(): 

extract(): 



如有错误,欢迎指正!!!

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

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

相关文章

408计算机组成原理

todo:有逻辑的分门别类的整理笔记&#xff0c;方便复习 总 理解不了就直接背下来&#xff0c;学越多就越能理解 计算机系统概述 简要目录 基本概念 字长 MAR MDR PC IR CU ALU 通用寄存器、标志寄存器、标志控制器 ACC 地址译码器 通用寄存器 PU C语言编译过程 数据通路带…

DAY10-力扣刷题

1.最后一个单词的长度(简单) 58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子…

【顺序表】05 删除有序顺序表中值在s与t之间的数

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux算法题上机准备 &#x1f618;欢迎 ❤️关注 &#x1f44d;点赞 &#x1f64c;收藏 ✍️留言 题目 从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素&#xff0c;若s或t不合…

deepspeed win11 安装

目录 git地址: aio报错: 编译 报错 ops已存在: 修改拷贝代码: git地址: Bug Report: Issues Building DeepSpeed on Windows Issue #5679 microsoft/DeepSpeed GitHub aio报错: setup.py 配置变量 os.environ[DISTUTILS_USE_SDK]=1 os.environ[DS_BUILD_AIO]=…

Unity3d自定义TCP消息替代UNet实现网络连接

以前使用UNet实现网络连接,Unity2018以后被弃用了。要将以前的老程序升到高版本,最开始打算使用Mirro,结果发现并不好用。那就只能自己写连接了。 1.TCP消息结构 (1). TCP消息是按流传输的,会发生粘包。那么在发射和接收消息时就需要对消息进行打包和解包。如果接收的消息…

日期工具类:获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)

问题背景 获取 当前周 | 上一周 | 下一周 的第一天&#xff08;周一&#xff09;和最后一天&#xff08;周天&#xff09;。 例如&#xff1a; 输入&#xff1a;2024-6-21, current 输出&#xff1a;{"firstDay": "2024-6-17","lastDay": &qu…

springboot代理配置,本地访问测试环境数据库、测试环境elasticsearch

springboot代理配置&#xff0c;本地访问测试环境数据库、测试环境elasticsearch 背景 本地项目启动需要直接连接测试环境的数据库、ES以及其他资源 配置 ES和其他一些资源的访问通过springboot配置走代理访问。比如我这里 EnableAsync EnableScheduling SpringBootApplic…

Nutch爬虫在大数据采集中的应用案例

引言 在当今信息爆炸的时代&#xff0c;大数据的价值日益凸显。网络作为信息的海洋&#xff0c;蕴藏着丰富的数据资源。Nutch&#xff0c;作为一个开源的Java编写的网络爬虫框架&#xff0c;以其高效的数据采集能力和良好的可扩展性&#xff0c;成为大数据采集的重要工具。本文…

Mac安装多个jdk环境(jdk8+jdk17)保姆级

Mac安装多个jdk环境&#xff08;jdk8jdk17&#xff09;保姆级 背景&#xff1a;新机安装开发环境发现需要找很多文章&#xff0c;&#xff0c;&#xff0c;&#xff0c;这里一篇文章安装所有环境 文章目录 Mac安装多个jdk环境&#xff08;jdk8jdk17&#xff09;保姆级&#x1f…

Lambda 表达式是为了解决啥问题,语法,使用规则,c++中的常用用法示例

2024/6/21 11:20:09 Lambda 表达式的主要目的是为了简化函数对象&#xff08;或称为函数符&#xff09;的创建和使用。传统的函数对象需要定义一个具名的类或者使用函数指针&#xff0c;而Lambda 表达式可以在需要时直接定义一个匿名函数&#xff0c;从而减少代码量和提高代码…

C语言入门系列:指针入门(超详细)

文章目录 一&#xff0c;什么是指针1&#xff0c;内存2&#xff0c;指针是什么&#xff1f; 二&#xff0c;指针的声明1&#xff0c;声明指针类型变量2&#xff0c;二级指针 三&#xff0c;指针的计算1&#xff0c;两个指针运算符1.1 *运算符1.2 & 运算符1.3 &运算符与…

树莓派3b+结合 tb6600用pi4j2程序库,用java编写控制软pmw的方式控制步进电机的转速,详细解析

结论:速度控制参数,主要的不是占空比,而是pmw针脚的输出主频参数:frequency。占空比对速度的影响也有,但比较小。 在进行速度详细控制之前,我们先读取电机和电机驱动器的几个参数。 电机:步进角 =1.8度 电流:1.7A 扭矩:0.55N.M 驱动器TB6600:查看面板的数值,并设置…

【Arthas案例】应用包含两个相同全限定类名StaticLoggerBinder,引起log4j.Level类找不到异常

3分钟内解决问题 两个不同的GAV依赖冲突&#xff0c;包含相同全限定类名&#xff0c;引起ClassNotFoundException Maven依赖的三坐标体系GAV(G-groupId&#xff0c;A-artifactId&#xff0c;V-version) 【案例1】某应用依赖两个GAV不同的jar&#xff0c;但包含两个相同全限定类…

OpenCv形态学(一)

目录 形态学转换 结构元素 腐蚀 膨胀 开运算 闭运算 形态学梯度 顶帽 黑帽 图像轮廓 查找轮廓 绘制轮廓 形态学转换 形态变换是一些基于图像形状的简单操作。通常在二值图像上执行。它需要两个输入&#xff0c;一个是我们的原始图像&#xff0c;第二个是决定操作性…

6月21日(周五)AH股总结:沪指失守3000点,恒生科技指数跌近2%,多只沪深300ETF午后量能显著放大

内容提要 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点。白酒及光刻机概念集体走低&#xff0c;中芯国际港股跌超2%。CRO医药概念及水利股逆势走强。 A股低开低走 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点&#xff0c;跌0.24%。深成指跌0.04…

如何在 macOS 上安装 Docker Desktop

如何在 macOS 上安装 Docker Desktop Docker 是一个用于开发、部署和运行应用程序的开放平台。Docker Desktop 是 Docker 在 macOS 和 Windows 上的官方客户端&#xff0c;它使开发者能够轻松地在本地环境中构建、运行和共享容器化应用程序。本文将详细介绍如何在 macOS 上安装…

写一个chrome插件

创建一个 Chrome 插件&#xff08;也叫扩展&#xff09;涉及以下几个基本步骤&#xff1a; 创建目录结构编写 manifest.json 文件添加功能代码&#xff08;HTML, CSS, JavaScript&#xff09;加载和测试扩展 下面是一个简单的 Chrome 插件的示例。这个插件会在浏览器的工具栏…

从零到一学FFmpeg:avformat_alloc_output_context2 函数详析与实战

文章目录 前言一、函数原型二、功能描述三、使用场景四、AVFormatContext 结构体五、代码实例 前言 avformat_alloc_output_context2 是FFmpeg库中的一个函数&#xff0c;用于为输出多媒体文件初始化一个AVFormatContext结构体。这个函数在开始输出音频、视频数据到文件之前被…

ubuntu 20.04 访问csdn报错 Secure connection failed 解决

问题原因&#xff1a; 我一边更新源 sudo apt update & apt upgrade一边在看csdn&#xff0c;估计是这个导致的. 所以我直接把华为源换成了阿里源。 sudo apt update & apt upgrade再更新一次&#xff0c;解决。

探索语言模型的智能飞跃:预训练损失与突现能力的新视角

在人工智能的辉煌编年史中&#xff0c;语言模型&#xff08;LMs&#xff09;的崛起标志着自然语言处理领域的一个巨大飞跃。随着技术的进步&#xff0c;这些模型不仅在规模上日益庞大&#xff0c;更在性能上不断刷新着人们的认知边界。它们在问答、翻译、文本摘要等任务上展现出…