Oracle学习笔记002(权限、表操作)

在这里插入图片描述
1、Oracle中的用户与模式

	用户(对数据库访问又来验证的身份)
		SYS:超级管理员用户,是Oracle权限最高的用户。
		SYSTEM:普通管理员用户,可以访问数据库中所有对象。

	模式(schema):是某个用户拥有所有对象的集合,具有创建对象权限并创建了对象的用户称为拥有某个模式。

使用sqlplus进行用户创建、授权

--创建用户(create user 用户名 identified by 密码)
SQL>create user oracleuser identified by 123456;  

--修改用户密码
SQL>alter  user oracleuser  identified  by  123123;

--授予用户基本权限(grant 授予的权限 to 用户)
--授予用户权限在SYS用户下进行操作
SQL>grant connect, resource to oracleuser; 

--撤销权限
SQL>revoke connect, resource to oracleuser;

--授权之后可以进行登录
SQL>conn oracleuser/123456;

在管理工具中授予权限

	SYS用户目录下的其他用户,之后找到创建的用户,右键选择编辑用户,之后找到系统权限,可以进行鼠标点击授予权限.
	单击授权之后可以在旁边的sql看到对应的sql命令.

在这里插入图片描述在这里插入图片描述
2、表的基本操作

--查询表空间中的表
SQL>select table_name,tablespace_name from user_tables;

--查询日志文件
select * from V$log;

--创建一张学生信息表
SQL> create table stuInfo(
        id varchar2(32),
        name varchar(24),
        address varchar(64),
        sex char(2)
        ) tablespace users;

表已创建。
 
 --截断表(它的主要功能就是彻底删除数据,使其不能进行回滚)   
SQL>truncate table stuinfo;

--全列插入
SQL> insert into stuInfo values('001','张三','中国','M');

已创建 1 行。

SQL> insert into stuInfo values('002','李四','中国','W');

已创建 1 行。

SQL> insert into stuInfo values('003','王五','中国','M');

已创建 1 行。

--限定列插入(未插入的列数据为null)
SQL> insert into stuinfo(id,name,sex) values('004','小红','W');

已创建 1 行。

--查看结果
SQL> select * from stuinfo;

ID                                                               NAME                                             ADDRESS
                                                                                                           SEX
---------------------------------------------------------------- ------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ----
001                                                              张三                                             中国
                                                                                                           M
002                                                              李四                                             中国
                                                                                                           W
003                                                              王五                                             中国
                                                                                                           M
004                                                              小红

--更新所有行
SQL> update stuinfo set sex='M';

已更新4行。

--更新指定行(后边指定条件)
SQL> update stuinfo set sex='W' where id='003';

已更新 1 行。

--类似于mysql中的模糊查询操作(将以张开头的人的名字更改为Python)
SQL> update stuinfo set name='Python' where name like '张%';

已更新 1 行。

--查询

SQL> select * from stuinfo;

ID                                                               NAME                                             ADDRESS
                                                                                                           SEX
---------------------------------------------------------------- ------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ----
001                                                              Python                                           中国
                                                                                                           M
002                                                              李四                                             中国
                                                                                                           M
003                                                              王五                                             中国
                                                                                                           W
004                                                              小红
                                                                                                           

补充一个遇到的错误

在学习的时候遇到了一个错误
	错误类型: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效---解决方法。		
	错误原因:最后在网上查询错误,原来是因为短时间内对表的操作太过快速和频繁而导致的数据库锁表;

解决办法(管理员用户执行以下操作)

--查询被锁的会话ID:
SQL>select session_id from v$locked_object;

--查询到被锁住的会话ID
SESSION_ID            64

--继续查询详细信息
SQL>SELECT sid, serial#, username, osuser FROM v$session where sid = 64;

SID           64
SERIAL          199

--关闭锁定的会话
SQL>ALTER SYSTEM KILL SESSION '64,199';

--之后错误就解决了,可以登录原有的用户执行需要的操作了


边学习边记录,若有不足之处欢迎留言指点…

发布了63 篇原创文章 · 获赞 1 · 访问量 2038

猜你喜欢

转载自blog.csdn.net/qq_45061361/article/details/104371322