Oracle学习笔记(1)

Nvidia Isaac Sim图形界面 入门教程 2024(3) 在使用Isaac Sim时,最先接触到的应该是它的图形界面,此处将简单介绍图形界面中常用的一些组件:Isaac Sim的界面的常用内容可以分为几个板块。 阅读详情

说明:没有PL/SQL内容。

Oracle中一个实例,就是一个数据库,所以没有对应的show databases语句。

Oracle数据库的基本单元:

表空间(Tablespace)

数据文件(DataFiles)表空间物理上由一个或多个数据文件组成。

段(Segment)        多个数据块组成的区间,多个区间组成了段。

区间(Extents)  区间由多个数据块组成,一个Extent总是属于一个表空间的一个数据文件。

数据块(Blocks) 数据块是Oracle的最小存储单位,一般为8K,实际的数据是存储在数据块中。

表空间是逻辑概念,各种对象都存放在表空间上。

根据表用途分成几种:

Permenent Tablespace存放数据

Undo Tablespace存放回滚数据

Temporary Tablespace存放临时数据

著名的表空间:SYSTEM、SYSAUX、TEMP、Users、Example

在Oracle里,只有表空间,表空间里有表。

//创建临时表空间

create temporary tablespace user_temp

tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'

size 50m

autoextend on

next 20m maxsize 500m

extent management local;

//创建数据表空间

create tablespace test_data

logging

datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'

size 50m

autoextend on

next 50m maxsize 20480m

extent management local;

//创建用户并指定表空间

create user username identified by password

default tablespace user_data

temporary tablespace user_temp;

//给用户授予权限(角色)

grant connect,resource to username;

//转换用户

conn username/password

//创建表(类似与sql,数据类型有些变化)

create table user(

       id number primary key,

       …

)

//插入数据(和sql一样)

insert into table values (…)

角色、权限和用户

比如:具有create session权限才能连接到数据库上,只有具有create table权限再能建表。

角色是指多个权限的集合,因为在给用户设置权限时,一个一个分配权限,太过于麻烦,可以通过将多个权限分配给角色,然后将角色直接分配给用户。

权限:系统权限:用户对数据库的相关权限。

  对象权限:用户对其他用户的数据对象(如:表,视图,存储过程…)操作的权限。

角色:预定义角色、自定义角色。

sys和system是用户,sysdba和sysoper是权限。

===============================================================

基本命令

conn[ect] 用户名/@网络服务名 [as sysdba/sysoper]

disc[onnect]

passw[ord]

show user

start和@

edit

spool

exit

Oracle基本命令

set linesize 300;    设置行高

set pagesize 50;     设置每页显示的数目

conn system/manager as sysdba;   以system登陆

show user;           显示当前的用户

select * from tab;   显示当前数据库所有的表

desc 表名;            显示表的结构

clear scr;           清除屏幕

/                    上次查询

====================

用户管理

创建用户

新用户的创建命令create user,具有dba权限才能使用。

create user 用户名 identified by 密码

实例:create user ruan identified by ruan012;

修改密码

给自己修改直接用:

password [用户名]

具有dba权限,或拥有alter user的系统权限,可以修改别人密码:

实例:create user ruan identified by ruan012;

删除用户:

drop user 用户名 [cascade]

删除用户时,如果该用户创建了表,删除时就得带上参数cascade。

创建的新用户是没有任何权限的,需要为其指定相应的权限。

给一个用户赋权限使用命令grant,回收权限用命令revoke。

能授权的用户下:grant connect to ruan;

grant select on emp to ruan;

其中对象权限有:select、update、delete、alert、all……

ruan用户下:select * from scott.emp;

方案:是该用户下所有对象的集合。默认情况下方案名就是用户名。如上面句子的:scott。

授权的用户收回权限:revoke select on emp from ruan

对权限的维护

权限的传递:

——如果是对象权限,就在后面加with grant option

如:grant select on emp to ruan with grant option;

——如果是系统权限

如:grant connect to ruan with admin option;

使用profile管理用户口令

概述:profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项,那oracle就会将default分配给用户。

(1)账户锁定

指定用户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用dba的省份去执行该命令。

实例:create profile aaaa limit failed_login_attempts 3 password_lock_time 2;

赋给哪个用户:alter user ruan profile aaaa;

(2)给用户解锁

alter user ruan account unlock;

 (3)终止口令

使用终止口令可以让用户定期修改密码。

实例:每10天要修改密码,宽限为2天。

create profile aaaa limit password_life_time 10 password_grace_time 2;

alter user ruan profile aaaa;

另:password_reuse_time 指定口令可重用时间

删除profile

drop profile aaaa [cascade]

====================

表的管理

表名和列的命名规则:

必须以字母开头

长度不超过30字符

不能使用oracle的保留字

只能使用如下字符a-z、A-Z、0-9、¥、#

支持的数据类型:

字符型:

char      定长,最大2000字符

varchar2  变长,最大4000字符

clob      字符型大对象,最大4G

数字型:

number    范围-10的38次方到10的38次方

如 number(5,2)表示一个小数有5位有效数,2位小数

如 number(5)表示一个五位整数

日期类型:

date 包含年月日和时分秒

timestamp 这是oracle9i对date数据类型的扩展

图片:

blob  二进制数据,可以存放图片、声音 4G (一般不用,除非考虑安全性)

注意分号别忘了!

创建表

create table student( --表名

xh number(4), --学号

xm varchar2(20), --姓名

sex char(2), --性别

birthday date, --出生日期

sal number(5,2) --奖学金

);

查看表结构

desc student;

添加一个字段

alter table student add (classid number(2));

(以下实际很少用)

修改字段的类型或是名字(不能有数据,)

alter table student modify (xm char(30))

删除一个字段

alter table student drop column sal;

修改表的名字

rename student to stu;

所有字段都插入

insert into student values (001,'小明','男','1990-12-14',100.00);

注意:

Oracle默认日期格式:

'DD-MON-YY',如:14-12月-90

改日期默认格式(也只是暂时改,除非改注册表):

alter session set nls_date_format = 'yyyy-mm-dd';

操作数据库插入带有日期值的时候可以用to_data()函数。

插入部分字段

insert into student(xh,xm,sex) values (002,'Amy','女');

插入空值

insert into student (xh,xm,sex,birthday) values(003,'aa','男',null)

查询:select * from student where birthday is null;

select * from student where birthday is not null;

改一(多)个字段

update student set sex='女' where xh=001;

update student set sex='女',birthday='1980-12-14' where xh=001;

修改含有null值的数据

参考插入空值,用is null

删除数据

delete from student;

删除所有记录,表结构还在,写日志,可以恢复的,速度慢。

删除数据前,设置保存点:savepoint aa;

恢复数据:rollback to aa;  必须保证在这之前没有提交(commit);

drop table student;

删除表的结构和数据

delete from student where xh=002;

删除一条记录

truncate table student;

删除表中左右记录,表结构还在,不写日志,无法找回删除的记录,速度快。

====================

表的查询

scott表中的emp表和dept表。

消除重复行用distinct关键字。

如:select discinct sex from student;

注意查询表中数据时,数据内容区分大小写字母。例如:

select * from scott.emp where job='clerk';

会出现找不到内容,使用下面可以找到:

select * from scott.emp where job='CLERK';

为字段取别名(as可以不要):

如:select ename "名字",job as "职位" from scott.emp;

如何处理null值

使用nvl函数来处理

select ename "名字",job as "职位",sal*12+comm*12 as "年工资" from scott.emp;

这样得到的年工资有的就是空,因为表达式sal*12+comm*12中comm为空值,整个表达式也就是空值。通过nvl函数处理如下:

select ename "名字",job as "职位",sal*12+nvl(comm,0)*12 as "年工资" from scott.emp;

like操作符

%:表示任意0到多个字符

_:表示任意单个字符

例子:select * from scott.emp where ename like 'S*';

in操作符

例子:select * from scott.emp where ename in ('SCOTT','SMITH');

order by(默认升序asc)和desc(降序)

例子:select * from scott.emp order by deptno,sal desc;

另外:通过别名排序:

select ename,job,sal*12 "年工资(不包括奖金)",deptno from scott.emp order by deptno,"年工资(不包括奖金)" desc;

函数:count,max,min,avg,sum

1、分组函数只能出现在选择列表、having、order by子句中。

2、在select语句中同时拥有以下的的应按照group by、having、order by的顺序

3、在选择列如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则出错。

子查询:

select * from scott.emp where sal=(select max(sal) from scott.emp);

select * from scott.emp where sal>=(select avg(sal) from scott.emp);

group by和having

select avg(sal),deptno,job from scott.emp group by deptno,job;

用having进一步进行条件显示:

select avg(sal),deptno from scott.emp group by deptno having avg(sal)>2000;

多表查询

select * from scott.emp,scott.dept

where scott.emp.deptno=scott.dept.deptno;

all、any操作符

单行子查询、多行子查询、多列子查询

Select ename,sal,deptno from emp where sal>

All (select sal from emp where deptno=30);

Select ename,sal,deptno from emp where sal>

Any (select sal from emp where deptno=30);

Select * from emp Where (deptno,job)=(select deptno,job from emp where ename='SMITH');

Oracle分页查询  三种方式

rownum分页
1.rownum分页 
(select * from emp) 
2.显示rownum[oracle分配的] 
select a1.*,rownum rn from (select * from emp )a1; 
3.查询1到10行记录 
select a1.*,rownum rn from (select * from emp )a1 where rownum<=10;  OR 
select * from (select a1.*,rownum rn from (select * from emp )a1 where rownum<=10) ; 
查询6到10行记录 
select * from (select aa.*,rownum rm from(select * from emp order by sal)aa where rownum<=10) where rm>5; 

格式:

SELECT x.* from (   
     SELECT z.*,rownum numbers from(   
          select * from emp order by sal)z   
     where rownum<10) x    
where x.numbers>5 

另外:子查询的效率是非常慢的, 能不用子查询就尽量不要用。 

select * from (select e.*,rownum rn from scott.emp e) a1 where a1.rn between 6 and 10;
4.几个查询变化 
A。指定查询列,只需修改最里层的子查询; 
B。排序,也只需修改最里层的子查询; 
select * from (select a1.*,rownum rn from (select ename,sal from emp )a1 where rownum<=10) where rn=>6; 
select * from (select a1.*,rownum rn from (select ename,sal from emp order by sal desc)a1 where rownum<=10) where rn=>6; 

分页三种方式:
1 要把ROWID来分 
 select * from t_xiaoxi where rowid in(select rid from select rownum rn,rid from (select rowid rid,cid from t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
2 按分析函数来分 
 select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t )where rk<100000 and rk>9980; 
3 按rownum来分。 
 select * from (select t.* rownum rn from (select * from t_xiaoxi order by cid desc)t where rownum<10000) where rn>9980; 
效率1》3》2 (1比较麻烦,2效率很低)

其他:当使用values子句时,一次只能插入一条数据。当使用子查询插入语句是,一条insert可以插入大量数据。当处理行迁移或者装载外部表的数据到数据库时,可以使用子查询来插入数据。   还有update也可以。



告别 DIFY 构建卡顿 / 失败!巧用 Makefile 一键构建本地 WEB 镜像,附核心避坑指南 本文详细介绍了DIFY本地源码构建WEB镜像的完整流程,重点解决因官方npm源不稳定导致的构建失败问题。通过修改web/Dockerfile文件启用国内npmmirror镜像源,可大幅提升依赖下载速度和稳定性。在DIFY根目录执行封装好的make build-web命令即可一键完成构建,无需手动编写复杂docker命令。文章还提供了前置环境准备、构建结果验证等实用指导,帮助开发者高效完成DIFY前端二次开发后的镜像构建验证。 阅读详情

相关推荐

QT编程系列1--QT学习前需知

本周学习了一些QT编程方面的知识,学写了几个程序,这里把记录下来。一方面对前面学习的知识做一个总结,便于以后复习、再学习和应用;另一方面也和大家做个交流,有不足的地方请各位看官多指点。   首先是做一些学习之前的交代:一,学习QT需要哪些基础;二,学习QT有哪些用途,QT较其他的开发工具有哪些特点;三,学习QT的思路。

霜月孤鸟&RTEMS&TinyOS 1115

oracle学习笔记1

【代码】oracle学习笔记1。

hxsln11的博客 297

应急响应靶场练习Linux-web-2

本次应急响应靶机采用的是知攻善防实验室的Linux-2应急响应靶机靶机下载地址为:相关账户密码: root/Inch@957821.(第一个为大写的i,记住要带最后的点.)1.该攻击者的IP为192.168.20.12.攻击方式应该是通过/index.php?user-app-register上传了一个webshell,然后使用蚁剑管理webshell之后再次上传version2.php进行提权.3.攻击者修改了phpmyadmin数据库的管理员密码。

tddkett的博客 2800

oracle学习笔记——1

当新建表空间报错找不到指定路径时,先检查一下有没有建立相应文件夹。oracle不会自己建立文件夹。

s456951753的专栏 205

Excel地理探测器实战:5分钟搞定空间分异性分析(附完整数据集)

本文详细介绍了如何使用Excel地理探测器插件进行空间分异性分析。通过5分钟实战教程,手把手指导数据格式准备、软件操作及四大探测器(分异及因子、交互作用、风险区、生态探测器)的结果解读,帮助规划师、研究者快速验证地理因素对现象分布的影响,大幅降低GIS分析门槛。

peace的博客 607

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果

小橙子的博客 3350

Oracle学习笔记1

Oracle 11g的体系结构学习记录

weixin_45247073的博客 632

无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

FRIGIDWINTER的博客 7999

ORACLE学习笔记1

学习笔记1 在linux下安装oracle10G 所有环境都搭建好以后 出现以下错误提示 Checking installer requirements... Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2

nican2008的专栏 541

机器学习的低代码与无代码平台:便捷入门之路

机器学习领域正涌现出大量低代码和无代码平台,使非技术人员也能轻松应用AI技术。低代码平台(如PyCaret、H2O AutoML)需少量编程但灵活性强,而无代码工具(如Google Cloud AutoML、Teachable Machine)则完全无需编程基础。这些平台覆盖图像识别、文本处理、业务预测等多种场景,适合快速部署简单项目。但专业人士仍需注意,这些工具无法替代复杂场景下的定制化开发。随着技术进步,低门槛AI工具正在改变各行业的创新方式。

2501_90323865的博客 154

lammps案例:聚乙烯和石墨烯界面pull out模拟

大家好,我是小马老师。 本文介绍lammps模拟计算界面结合力的一个案例。 本案例参考论文《The interfacial mechanical properties of functionalized graphene- polymer nanocomposites》,对论文作者表示感谢。 模型共分2层,上层为聚乙烯模型,下次为单层石墨烯,模拟过程共分3部分:建模、弛豫、拉伸。 (1)建模 使用MS建立聚乙烯和石墨烯模型,具体方法可参考之前的推文,使用build layer方法建立聚乙烯和石墨烯组合模型,

lammps_jiayou的博客 3493

ORACLE学习笔记1(原创)

ORACLE学习笔记 安装和管理ORACLE 1、  ORACLE通用安装程序(OUI) 一种基于JAVA并适用于所有平台的工具来安装ORACLE9I。 2、  数据库配置助手(Database Configuration Assistant) 用以创建一个新的数据库 3、ORACLE网络配置助手(Oracle Net Configuration Assistant)        可为数据库库设

xmqds的专栏 2476

069、PCIE属性字段:缓存、顺序与安全

上个月调试一块自研的PCIE采集卡,遇到了一个诡异的问题:主机通过DMA从设备读取图像数据,大部分帧正常,但偶尔会出现局部数据错位,像是缓存没刷干净。用逻辑分析仪抓链路层报文,发现TLP(事务层包)本身完好,但内存中的数据就是不对。排查三天后,终于锁定在设备端TLP的**属性字段(Attribute Field)**配置上——那几位看似不起眼的缓存、顺序控制位,差点让项目延期。今天我们就拆解PCIE事务头中的这个关键区域,看看它如何影响系统性能与数据安全。

z534437748的博客 49

Oracle 学习笔记1

1.oracle 查看当前用户、当前数据库实例   sql>show user;查看当前用户 sql>show parameter instance_name;查看当前数据库实例   疑问1:在安装oracle软件的同时创建orcl数据库,为什么在sqlplus工具用scott用户登录orcl数据库用如下代码: Show parameter instance_name 查看orcl数

无心人的终点 790

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Oracle学习笔记(1):命令

Oracle学习笔记(1):命令

fen_fen的专栏 1358

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ORACLE 学习笔记1

1、数据库连接前设置SIDSID是一个数据库的唯一标识符,是建立一个数据库时系统自动赋予的一个初始ID,SID主要用于在一些DBA操作以及与操作系统交互,从操作系统的角度访问实例名,必须通过ORACLE_SID,且它在注册表中也是存在的。查看SIDWindows平台下:你可以到注册表去,看看HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE...

weixin_34015566的博客 102

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

oracle学习笔记day1

oracle数据库前言 oracle sqllesson1 Selecting Rowslesson2 Sorting & Limiting Selected Rowslesson3 Single Row Functionslesson4 Displaying Data from Multiple Tableslesson5 Group Functi...

aochoudu2102的博客 153

oracle basic 使用,[学习笔记1] Oracle Basic

Oracle Basic--Learning Point1. Oracle 是数据库管理系统,而不简单指数据库。数据库就是数据的集合。2. 大如Oracle, 小如一个简单的程序,它的架构都可以用这样三样来概括:操作系统进程,文件,内存。具体对应到oracle:file-永久保存数据,memory-用来暂存程序处理需要的信息和做cache, process-用来做数据的store和manage.3...

weixin_26848497的博客 289

oracle 学习笔记1

1、登录oracle 1)使用oracle自带的sqlplus 在命令提示符中,输入sqlplus,就可以输入密码 2)使用PL/SQLDeveloper 自带登录框,直接输入用户名和密码即可,普通用户选择normal模式即可,用户是sys或system 在命令窗口中,可以以:用户名/密码@SID [as sysdba或sysope...

weixin_30722589的博客 63

oracle 10g学习笔记 1

oracle 10g学习笔记 1首先是oracle 10的安装,我装的是xe版,功能上没区别,从oracle.com上下载下来,是150M+,安装后占用空间要1000M+,压缩的真厉害。机器配置我的是c4 2.1 ,512M 内存,感觉不到卡。用pl/sql连接数据库的话,要用最新的版本,我是没找到破解版的。我认为简单的就没有做笔记一。简单查询select 语句,查询日期列的时候要用to_char

xiaochongvip的专栏 1002

ORACLE 学习笔记 1

转自:http://www.cnblogs.com/ffhajbq/archive/2012/06/22/2558426.html 1. 文件数据存取管理与数据库的区别: 安全性低 不利于查询和管理 不利于存储海量数据 文件在程序中控制不方便 2.数据库的三层结构: client(需要访问数据库请求数据的用户) -&gt; oracle dbms (database managem...

beanok的专栏 201
上一篇: Linux分区
下一篇: Oracle学习笔记(2)
zero_spy
博客等级 码龄17年 24粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值