Oracle基本语法(SQLPlus)

news2024/11/25 0:49:27

目录:

前言:

准备工作:

登录:

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.coloradmin.cn/o/1849654.html

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

相关文章

搜索引擎推广基本概念与方法分享-华媒舍

销量是每个企业及个人在商业领域中追求的目标之一。而引擎霸屏推广就是一种高效的手段&#xff0c;通过该方法可以助你实现销量的狂揽。本文将为你科普引擎霸屏推广的基本概念与方法&#xff0c;帮助你了解如何运用这一有效的推广策略。 一、引擎霸屏推广 引擎霸屏推广指的是在…

什么是电商大数据?主流电商大数据的采集||关键性技术|电商API接口接入说明

大数据的时代早已到来&#xff0c;然而想要全方位掌握大数据&#xff0c;务必要掌握大数据造成的时代特征&#xff0c;之前大数据被视为废物&#xff0c;如今被视为财产。主流电商大数据的采集&#xff0c;电商API接口的接入在大多数人理解中&#xff0c;是企业用数据来优化自己…

Electron快速入门(二):在(一)的基础上修改两个文件完成自定义显示时间和天气的标题栏

修改主进程:main.js // main.jsconst { app, BrowserWindow } = require("electron"); const path = require("node:path"); const createWindow = () => {try {const mainWindow = new BrowserWindow({width: 1200,height: 870,alwaysOnTop: true,fr…

什么是数据库?从零开始了解数据库基础概念

什么是数据库&#xff1f;从零开始了解数据库基础概念 相信大家在日常生活中都听到过大数据&#xff0c;数据这个东西越来越火&#xff0c;比如交通大数据、旅游大数据等&#xff0c;&#xff0c;&#xff0c;数据成为了企业决策和业务运作的关键元素。而管理这些庞大而复杂的…

使用Python和NLTK进行NLP分析的高级指南

在本文中&#xff0c;将利用数据集来比较和分析自然语言。 本文涵盖的基本构建块是&#xff1a; WordNet和同义词集相似度比较树和树岸命名实体识别 WordNet和同义词集 WordNet是NLTK中的大型词汇数据库语料库。WordNet维护与名词&#xff0c;动词&#xff0c;形容词&#…

MySQL之复制(十一)

复制 复制的问题和解决方案 数据损坏或丢失的错误 当一个二进制日志损坏时&#xff0c;能恢复多少数据取决于损坏的类型&#xff0c;有几种比较常见的类型: 1.数据改变&#xff0c;但事件仍是有效的SQL 不幸的是&#xff0c;MySQL甚至无法察觉这种损坏。因此最好还是经常检查…

如何在不同的操作系统中查看路由器的IP地址?这里有详细步骤

如果你曾经需要访问路由器的设置页面来进行一些配置更改,你知道你需要路由器的IP地址才能访问。如果你忘记了这个IP地址是什么,下面是如何在几乎所有平台上找到它的。 为什么路由器的IP很有用 在网络世界中,默认网关是一个IP地址,当流量被发送到当前网络之外的目的地时,…

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

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

System.Runtime, Version=6.0.0.0,生成的dll使用出现错误问题

解决&#xff1a; 1.unity左上角file点击选中build settings 点击player settings &#xff0c;然后在player的window的other settings的configuration更改为 Framerwork 其实这个不换也可以的&#xff0c;我后面调试完&#xff0c;发现这个不是重点&#xff0c;下面第2点才是…

欧洲杯数据控@20240621

点击标题下「蓝色微信名」可快速关注 西班牙成为第二支晋级淘汰赛的球队。 今日积分榜&#xff0c; 今日射手榜&#xff0c; 今日助攻榜&#xff0c; 本届欧洲杯相关文章&#xff0c; 《欧洲杯赛况20240621》 《欧洲杯数据控20240620》 《欧洲杯赛况20240620》 《欧洲杯数据控2…

五十五、openlayers官网示例Loading Spinner解析——给地图添加loading效果,瓦片图层加载时等待效果

官网demo地址&#xff1a; Loading Spinner 这篇介绍了一个非常简单的loading效果 利用地图的loadstart和loadend事件&#xff0c;动态的添加和删除class名。 map.on("loadstart", function () {map.getTargetElement().classList.add("spinner");});map…

C语言| 宏定义

#define 标识符 常量 这是固定格式&#xff0c;一般放在#include <stdio.h>后面&#xff0c;标识符是临时的符号&#xff0c;预处理之后就不存在了。 宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。 宏定义最大的好处是方便修改常量&#xff…

【Redis】List的常用命令以及常用场景

Redis List 是一个简单的链表&#xff0c;支持在两端进行插入和删除操作。这种数据结构在许多场景下非常有用&#xff0c;例如任务队列、消息队列等。Redis 提供了一系列针对 List 的操作命令&#xff0c;帮助我们更高效地操作链表。 1. List常用命令 操作类型命令时间复杂度…

Nginx实战:简单登录验证配置(基于openssl)

本文提供的是基于openssl创建的密码文件,对nginx指定的location访问。进行登录验证的配置方式。 1、验证页面配置 我的nginx实验环境是直接yum安装的,如果是自己编译安装的那么对应目录就是自己安装配置的目录。 先在/usr/share/nginx/html下创建一个usertest.html,里面添加…

Swift Combine — Notification、URLSession、Timer等Publisher的理解与使用

Notification Publisher 在Swift的Combine框架中&#xff0c;可以使用NotificationCenter.Publisher来创建一个能够订阅和接收通知的Publisher。 // 创建一个订阅通知的Publisher let notificationPublisher NotificationCenter.default.publisher(for: Notification.Name(&…

车辆轨迹预测系列 (一):轨迹预测方法综述解析

文章目录 车辆轨迹预测系列 (一)&#xff1a;轨迹预测方法综述解析1、Contextual FactorsPhysics-related factors (物理相关因素):Road-related factors (道路相关因素):Interaction-related factors (交互相关因素): 2、Output TypesUnimodal Trajectory Prediction(单一模式…

计算机网络 交换机的VLAN配置

一、理论知识 1.VLAN的定义 ①VLAN虚拟局域网&#xff0c;是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术。 ②IEEE于1999年颁布了用以标准化VLAN实现方案的802.1Q协议标准草案。 ③VLAN技术允许网络管理者将一个物理的LAN逻辑地划…

Vue DevTools

介绍 什么是 Vue DevTools&#xff1f; Vue DevTools 是一款旨在增强 Vue 开发者体验的工具&#xff0c;它是一款功能强大且用途广泛的工具&#xff0c;可以在使用 Vue 应用程序时显着提高您的生产力和调试能力。它的实时编辑、时间旅行调试和全面检查功能使其成为任何Vue.js开…

VLAN单臂路由

1、搭建网络 搭建拓扑、规划IP、划分网段 2、交换机配置 配置脚本&#xff08;设置trunk和创建vlan很重要&#xff09; Switch>enable Switch#conf t Enter configuration commands, one per line. End with CNTL/Z.//创建vlan20 Switch(config)#vlan 20 Switch(config…

react学习——08三点运算符

1、代码 let arr1[1,3,5,7,9]let arr2[2,4,6,8,10]console.log(...arr1);//展开一个数组let arr3[...arr1,...arr2]//连续数组//在函数中使用function sum (...numbers){console.log(,numbers)numbers.reduce((previousValue,currentValue)>{return previousValuecurrentVa…