oracle数据库入门
oracle 数据库入门。
1、数据
2、数据存储的地方:变量 数组 容器 (内存中),文件,数据库(文件)
3、数据库系统:sqlserver 2000 2005 2008 mysql 5.5 oracle 9i 10g 11g db2
4、oracle 数据
5、oracle 数据库不同于其他的数据库,一个数据库下面有好多用户:
用户模式:sys system scott 默认用户
老师这里认为 实例等价于数据库、用户等价于模式、表空间
在oracle 里面 一个 实例 就对应一个 数据库。 用户 等价于 开启一种特定对应的模式,比如普通权限的用户或者 超级管理员 等等等。
好吧 还是 看那个 ppt 吧,实例指的是:数据库服务器的内存与相关处理程序。

吼吼吼!这个 ORACLE SQL*Plus 是默认自带安装的。
当 当前表中没有数据的时候,返回的结果是:

如果是使用PL/SQL Developer 的话,返回的结果是:

Sys权限最高是超级用户。具有最高权限。拥有sysdba角色。特色在于拥有create database也就是创建数据库的权限。
System是用户管理员。具有很大的权限,没有创建创建数据库的权限,除此之外权限相同。
其他的今本上都是普通用户了。
1、连接 conn 语法:
SQL> conn system/lifei23
已连接。
SQL> conn sys/lifei23
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
警告: 您不再连接到 ORACLE。
SQL> show user;
USER 为 ""
SQL>
一旦用户名密码输入错误,则与oracle的连接断开,所以此时不再能连接到数据库,再次展示用户,用户为空。
可见每次执行 conn 命令时,是先退出当前用户,随即登录最新的用户,如果用户名密码正确允许登录,如果错误则失去连接(因为之前登录用户已经退出)。
SQL> conn system/lifei23
已连接。
SQL> conn sys/lifei23
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
警告: 您不再连接到 ORACLE。
SQL> show user;
USER 为 ""
SQL> conn lifei/lifei
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
可是两种登录失败,是有本质上差距的。不知道 那个 系统用户如何才能登录成功,至少现在不知道。
警告: 您不再连接到 ORACLE。
2、disc命令
SQL> disc
SQL> show user;
USER 为 ""
SQL> conn scott/lifei23;
已连接。
SQL> disc
从 Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
SQL>
登录当前用户,然后退出。
3、更改密码: password 命令
SQL> conn scott/lifei23
已连接。
SQL> show user;
USER 为 "SCOTT"
SQL> password
更改 SCOTT 的口令
旧口令: *******
新口令:******
重新键入新口令:******
口令已更改
SQL> conn scott/123456
已连接。
这个 是当前用户 修改自己的密码,所以需要原来的密码。
下面利用管理员权限修改密码,这个时候相当于要求管理员修改密码,那么管理员是可以不记得某个具体用的密码的,所以当管理员在修改密码的时候,是不需要原来的密码的。
SQL> conn system/lifei23
已连接。
SQL> password scott
更改 scott 的口令
新口令:*******
重新键入新口令:*******
口令已更改
SQL> conn scott/lifei23;
已连接。
4、exit命令
exit 命令就直接退出了,好在 需要记录的内容都被记录了。

这里如果 刚刚最终修改的结果是lifei23 那么一切安全,要不登录都登陆不上去了。。。
5、导入命令 start 或者 @
SQL> start f:/test/chaoshen.sql
未选定行
那应该是写对了在 f:/test 目录下新建了一个 文件 叫做 chaoshen.sql 里面有一句话:
Select * from goods_tb;按照之前的结果 如果 表中没有结果 那么返回的结果就是:未选定行。
这个 利用@ 也可以实现。就是 在这里面start 和 @ 是等效的。
然后有一个 edit 命令 可以用来修改 这个 文件,要加全路径。
然后再次执行看看什么效果:
未选定行
6、编辑命令 edit
SQL> edit f:/test/chaoshen.sql
SQL> @ f:/test/chaoshen.sql
已创建 1 行。
看这意思 insert 语句 是对的。
嘿嘿
SQL> edit f:/test/chaoshen.sql
SQL> start f:/test/chaoshen.sql
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA
-------- ------------------------------ ----------- --------
GOODS_PROVIDER
------------------------------
1 shangpin1 50 weijin
33
SQL> show linesize
linesize 80
SQL> set linesize 120
SQL> show linesize
linesize 120
SQL> @ f:/test/chaoshen.sql
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ------------------------------ ----------- -------- ------------------------------
1 shangpin1 50 weijin 33
SQL> alter table goods_tb modify(goods_name varchar2(10));
表已更改。
SQL> select * from goods_tb
2
SQL> select * from goods_tb;
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- -----------------
1 shangpin1 50 weijin 33
嘿嘿,这样就很好看了。
最起码很整齐。
SQL> select * from goods_tb;
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- ----------------------------
1 shangpin1 50 weijin 33
2 weijin 35 yongpin 33
7、导出命令:spool 【会覆盖更新】
SQL> spool f:/test/record.txt
SQL> insert into goods_tb values(3,'qiaokeli',30,'shipin',letben)
2
SQL> insert into goods_tb values(3,'qiaokeli',30,'shipin',letben);
insert into goods_tb values(3,'qiaokeli',30,'shipin',letben)
*
第 1 行出现错误:
ORA-00984: 列在此处不允许
SQL> insert into goods_tb values(3,'qiaokeli',30,'shipin','letben');
已创建 1 行。
SQL> spool end;
然后就可以 到上面加黑字体路径下面找到那个 文件,发现这样一些内容。
linesize 好像刚刚我们试验过。
SQL> spool f:/test/record.txt
SQL> select * from goods_tb;
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- --------------
1 shangpin1 50 weijin 33
2 weijin 35 yongpin 33
3 qiaokeli 30 shipin letben
SQL> spool off;
发现spool off 具有 跟 end 一样的效果。
然后 如果 文件名相同的话,之前的内容会被覆盖更新。也就是 不复存在。所以 在创建时,要留心,判定一下是否要 执行覆盖操作。
Show linesize 展示每行展示多少列 默认80列 也就是80个字符。
可以利用 :Set linesize 120; 命令 修改 列长
Show pagesize 展示每页显示多少行,默认 14行。
可以 利用 set pagesize 30;
在 Oracle SQL*Plus 这个界面里面, pagesize 为 1或者 2的时候,显示效果是相同的,都是只有 那单独的一行查询结果:
当设置pagesize 为 3的时候 ,才能显示齐全的效果。
SQL> set pagesize 2;
SQL> select * from goods_tb;
1 shangpin1 50 weijin 33
2 weijin 35 yongpin 33
3 qiaokeli 30 shipin letben
SQL> set pagesize 3;
SQL> select * from goods_tb;
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- ---------------
1 shangpin1 50 weijin 33
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- ---------------
2 weijin 35 yongpin 33
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- ---------------
3 qiaokeli 30 shipin letben
SQL> set pagesize 1;
SQL> select * from goods_tb;
1 shangpin1 50 weijin 33
2 weijin 35 yongpin 33
3 qiaokeli 30 shipin letben
8、 Create 命令 创建用户命令
创建用户 必须要给出密码,如果不给,是不允许创建的
SQL> create user lifei identified by 111;
create user lifei identified by 111
*
第 1 行出现错误:
ORA-00988: 口令缺失或无效
新创建的用户并不具有,链接数据库的权限。
SQL> create user lifei identified by lifei;
create user lifei identified by lifei
*
第 1 行出现错误:
ORA-01031: 权限不足
SQL> conn system/lifei23;
已连接。
SQL> create user lifei identified by lifei;
用户已创建。
SQL> conn lifei/lifei;
ERROR:
ORA-01045: user LIFEI lacks CREATE SESSION privilege; logon denied
警告: 您不再连接到 ORACLE。
在可视化界面上是可以看到这样一个 用户的存在的。但是由于没有权限的缘故 并不能够登录。
所以 要先 drop 掉 这个 用户 然后 在增加,一个 用户。
9、删除一个 用户。Drop user userName
SQL> conn system/lifei23;
已连接。
SQL> show user;
USER 为 "SYSTEM"
SQL> drop user lifei;
用户已删除。
创建用户并且 修改密码,这里面的修改 也只能 跟当时创建一样,不能用数字开头。
SQL> show user;
USER 为 "SYSTEM"
SQL> create user lifei identified by lifei;
用户已创建。
SQL> alter user lifei identified by letben;
用户已更改。
【实例是数据库服务器内存和相关处理程序】
有三个 可以 赋给 用户的权限 connect dba 和 resource 。
Connect:分别代表获得链接的权限允许当前用户可以登录上这个 数据库文件编辑系统。
dba 最高权限
Resource 资源 数据库的 增删改查权限。
所以按照 权限大小进行划分是:
Connect 只连接
Resource 增删改查
Dba最高权限 新建数据库。
10、授权
可是 不级联的话,表 哪去了?
数据库下面有很多人,人的下面有很多表。如果删了人,那 表怎么办?
SQL> conn system/lifei23;
已连接。
SQL> create user lifei1 identified by lifei1;
用户已创建。
SQL> grant resource to lifei1;
授权成功。
SQL> connect lifei1/lifei1;
ERROR:
ORA-01045: user LIFEI1 lacks CREATE SESSION privilege; logon denied
警告: 您不再连接到 ORACLE。
新建用户之后,不过 不赋权限 连登陆都登录不上去。。。
如果 用户身上本身就是有表的,此时删除该用户时 不指定 cascade的话 还不可以删除。由于这个表的缘故。
想了一个这样的事情,创建lifei1 创建 表,插入 元组,赋给 lifei2查询权限,然后连带删除lifei1,然后再次 创建lifei1和 表,并插入元组,此时再次利用lifei2查询 并不能查询到结果。虽然同名同姓,却 已物是人非。
11、Revoke 召回权限
Revoke resource from lifei1。
如果用户缺少session的话 需要 赋 一个 connect 的权限。
Session 是与数据库沟通的权限。也就是connect。
SQL> conn lifei1;
输入口令: ******
ERROR:
ORA-01045: user LIFEI1 lacks CREATE SESSION privilege; logon denied
警告: 您不再连接到 ORACLE。
SQL> conn system/lifei23;
已连接。
SQL> grant connect to lifei1;
授权成功。
SQL> conn lifei1/lifei1;
已连接。
好像后面插入的数据还在上面儿呢~
赋予 单独的某个权限。比如 增加。那修改 删除,都是这样的。
SQL> show user;
USER 为 "LIFEI2"
SQL> conn lifei1/lifei1;
已连接。
SQL> grant insert on test_tb to lifei2;
授权成功。
SQL> conn lifei2/lifei2;
已连接。
SQL> insert into lifei1.test_tb values(2,'ss');
已创建 1 行。
SQL> select * from lifei1.test_tb;
TEST_ID TEST_NAME
---------- --------------------
2 ss
1 letben
关于表的具体查询要一个 一个赋值,也可一起赋值 利用 all这个 词。
SQL> conn lifei1/lifei1;
已连接。
SQL> grant all on test_tb to lifei2;
授权成功。
赋予所有的功能给lifei2.
连接的权限传递。
关于 这个 连接的权限 就是 拿钥匙开门的例子。很恰当。
传递就是:记得在赋权限之余 就是 with admin option。
系统管理员可以直接取消这个 传递出去的权限。
然后 对于单个 表上的权限来说的话,传递出去 就是 with grant option。
实验。Resource 和 connect 和 create session。
给权限的时候 没有都给 但是撤销的 时候 可以 revoke all on test_tb from lifei2.
给大门权限包括 resource和 connect 和 create session 是 with admin option
给表权限 是 with grant option。
表权限 作为 管理员 貌似 都撤销不了 但是拥有 表的人 可以 删除。
问题来了:
如果 管理员给了 lifei1 和 lifei2 两个人 开大门的权限 两个 人 可以 互相删除么?
可以 谁先下手谁牛逼。
SQL> revoke create session from system;
revoke create session from system
*
第 1 行出现错误:
ORA-01952: 系统权限未授予 'SYSTEM'
SQL> show user;
USER 为 "LIFEI1"
SQL> conn system/lifei23;
已连接。
SQL> grant connect to lifei1;
授权成功。
SQL> revoke connect from lifei1;
撤销成功。
SQL> grant connect to lifei1 with admin option;
授权成功。
SQL> conn lifei1/lifei1;
已连接。
SQL> revoke connect from system
2
SQL> revoke connect from system;
revoke connect from system
*
第 1 行出现错误:
ORA-01951: ROLE 'CONNECT' 未授予 'SYSTEM'
事实证明 系统管理员的 开门的权限是 无法被剥夺的。
1拥有表,1把权限给了2 with grant option。2把权限给了3with grant option。当1收回2的权限时,3 也不再可以查看 1的表了。
这个里面有知识点: 对于 大门的权限 可以传递 收回了,传递出去的依然具有权限。但是 对于查看表的权限,依然可以传递,但是 一旦从一个 人那里收回了,传递出去的人也不再 不可以 查看了。
oracle数据库入门的更多相关文章
- Oracle数据库入门到高薪培训教程(从Oracle 11g 到 Oracle 19c)
一.Oracle数据库入门到高薪培训视频教程(从 Oracle11g 到 Oracle19c) 本套Oracle视频教程学习地址: https://edu.51cto.com/course/18034 ...
- 学习Oracle数据库入门到精通教程资料合集
任何大型信息系统,都需要有数据库管理系统作为支撑.其中,Oracle以其卓越的性能获得了广泛的应用.本合集汇总了学习Oracle数据库从入门到精通的30份教程资料. 资料名称 下载地址 超详细Orac ...
- Oracle数据库入门——sql语句和函数详解
一.oracle常用数据类型 一. 数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构 ...
- Oracle数据库入门——目录结构
一.Oracle_Home目录 Oracle_Home主目录位于D:\dev\oracle\product\10.2.0(oracle安装路径)下,它包含Oracle软件运行有关的子目录和网络文件以及 ...
- Oracle数据库入门——体系结构
1.oracle内存由SGA+PGA所构成 2.oracle数据库体系结构数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. oracle工作原理: 1).在数据库 ...
- Oracle数据库入门——基础知识
1.安装完成Oracle数据库后,使用sqlplus客户端登录数据库管理系统,只输入用户名,没有输入密码时,会提示口令为空,登录被拒绝. 请输入用户名:system 输入口令: ERROR:ORA-0 ...
- ORACLE数据库入门再在屋里坐会
一.数据库简介 数据库概述 数据库(database)是按照数据结构来组织,存储和管理数据的仓库,它产生与距今五十年前. 简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数 ...
- Oracle数据库入门——常用的数据字典
一.oracle数据字典主要由以下几种视图构成:1.user视图以user_为前缀,用来记录用户对象的信息 2.all视图以all_为前缀,用来记录用户对象的信息及被授权访问的对象信息 3.dba视图 ...
- Oracle数据库入门——高水位线详解
一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称 ...
随机推荐
- hdu4374One hundred layer (DP+单调队列)
http://acm.hdu.edu.cn/showproblem.php?pid=4374 去年多校的题 今年才做 不知道这一年都干嘛去了.. DP的思路很好想 dp[i][j] = max(dp[ ...
- 转自 Good morning 的几句精辟的话
1.志愿者招募 根据流量平衡方程来构图非常方便,而且简单易懂,以后可能成为做网络流的神法之一 简单记一下流量平衡方程构图法的步骤: a.列出需求不等式 b.通过设置松弛变量,将不等式变成等式 c.两两 ...
- 用jQuery 处理XML-- jQuery与XML
jQuery与XML 快而强的遍历系统,华丽丽的选择器语法,这或许是jQuery 那么流行的原因.当然它还有详尽的文档.它主要是用来处理HTML的,但在这里妳会看到如何应用到XML. 使用jQuery ...
- 一步步写STM32 OS【二】环境搭建
一.安装IAR for ARM6.5 二.新建工程 1.选择处理器:STM32F407VG,暂不使用FPU 2.必要的路径配置和宏定义 3.使用SWO重定向IO输出 4.使用ST-LINK仿真器 5. ...
- HDU- 2063 过山车
http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车//我的第一个二分匹配 Time Limit: 1000/1000 MS (Java/Others) ...
- mac os 常用终端软件工具
1. homebrew 安装 网上很多版本返回400错误,以下为最新版本地址(2015/02/09) ruby -e "$(curl -fsSL https://raw.githubuser ...
- while MyJob = '程序员' do --- 序
因为自己的际遇,忽然想写点什么留在这个世上.也许只是想证明自己活过吧. 所以,这不会是一个过去时的小说,这将是一个接近进行时的记叙.之所以是接近,因为我只有在空余时间,才能记录最近的经历.出于保护隐私 ...
- 【JS】Beginner7:Functions
1.Function=Reusable blocks of code Passed arguments & return a value save functions as the valu ...
- platform机制
最近在看SPI.I2C这样简单点的总线驱动程 序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver.现在Linux中 大部分的 ...
- javascript设计模式1
普通写法 function startAnimation(){ ... } function stopAnimation(){ ... } 对象类 /*Anim class*/ var Anim=fu ...