oracle入门笔记

-- 命令行登录数据库

sqlplus sys/oracle@127.0.0.1:1521/orcl as sysdba

-- 创建表空间

create tablespace QDII logging datafile 'E:\localDataBase\qd_tablespace\QDII.dbf' size 10240M reuse autoextend on next 100M maxsize unlimited ;

-- 创建用户
CREATE USER username IDENTIFIED BY userpwd -- username:用户名 userpwd:密码
ACCOUNT UNLOCK
DEFAULT TABLESPACE tablespaceName; --默认表空间 tablespaceName: 表空间名称
TEMPORARY TABLESPACE tablespaceName;-- 临时表空间 tablespaceName: 表空间名称
QUOTA 100M ON username  -- 限额(这个用户可以使用多大的空间限额)-- QUOTA unlimited ON username(不受限制)
注意:只能在默认表空间使用限额,不能在临时表空间使用限额
-- 删除用户
DROP USER 用户名 CASCADE;-- cascade表示删除用户所有对象
什么是默认表空间?什么是临时表空间?
默认表空间存放用户的数据的,临时表空间类似Windows临时文件夹,会把临时数据放到临时表空间里去,主要是支持排序的等。
一个表空间可以给多个用户使用。
-- 限制用户
用户加锁:ALTER USER 用户名 ACCOUNT LOCK
用户解锁:ALTER USER 用户名 ACCOUNT uniock
用户口令即可失效:ALTER USER 用户名 PASSWORD EXPIRE
-- 权限
-- 查询当前用户拥有哪些权限
SELECT * FROM User_Sys_Privs;
-- 给用户赋权(例:系统权限)
GRANT CREATE SESSION TO username; -- username: 用户名
GRANT CREATE TABLE TO username;-- username:用户名
GRANT UNLIMITED TABLESPACE TO username; -- username:用户名
GRANT CREATE SESSION TO PUBLIC ;-- 给所有用户赋session权限
-- 撤销系统权限
revoke CREATE SESSION FROM username; -- username: 用户名
revoke CREATE TABLE FROM username;-- username:用户名
revoke UNLIMITED TABLESPACE FROM username; -- username:用户名
-- 查询当前用户拥有哪些对象权限
SELECT * FROM User_Tab_Privs;
-- 给用户赋权(例:对象权限)
GRANT SELECT ON tablename TO username;--给用户授予查询权限 username: 用户名,tablename:表名 
GRANT ALL ON tablename TO username; -- 给用户赋予所有权限 username: 用户名,tablename:表名 
-- 撤销权限
revoke SELECT ON tablename FROM username;--给用户撤销查询权限 username: 用户名,tablename:表名 
revoke ALL ON tablename FROM username; -- 给用户撤销所有权限 username: 用户名,tablename:表名 
-- 对象权限可以控制到列(例:只赋予更新某个表某一列的权限)
GRANT UPDATE<column1> ON tablename TO username;-- column1:字段名 tablename:表名 username:用户名
GRANT INSERT<column1> ON tablename TO username;-- column1:字段名 tablename:表名 username:用户名
-- 注意:查询和删除不能控制到列
SELECT * FROM User_Col_Privs;

-- 角色
-- 创建角色
CREATE ROLE rolename;-- rolename:角色名
GRANT CREATE SESSION TO rolename;-- 给角色赋创建session权限 rolename:角色名
GRANT rolename TO username; -- 给用户赋角色 rolename:角色名 username:用户名
-- 删除角色
DROP ROLE rolename;--  rolename:角色名
--注意:有些系统权限是不能赋予给角色的,只能赋予给用户,例: UNLIMITED TABLESPACE 
oracle数据库用户:
1.三个常见的系统用户
scott(一个数据库的普通用户)
CONNECT scott/tiger
Manager(数据库管理员)
CONNECT SYSTEM/mangaer
SYS(数据库对象的拥有者权限最高)
CONNECT sys/oracle AS SYSDBA

oracle数据库的三种验证机制:
 操作系统验证:什么是操作系统验证?右键我的电脑,点击管理,点击本地用户和组,点击组,里边有个ora_dba,双击进去就可以看见里边的用户了。
 密码文件验证
 数据库验证
 sys用户不是通过数据库验证的。
oracle如果密码忘了怎么办?
找到密码文件,安装目录下\product\11.2.0\dbhome_1\database文件夹下pwd开头的.ora结尾的文件。
cmd输入:orapwd
出现:orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>  这个是提示。
     fname:生成文件当到什么目录下
         entries:在密码文件里可以放多少个用户
    输入cmd命令重新生成密码文件: orapwd FILE=d:\app\pwdorcl.ora PASSWORD=123456 entries=10
命令行:sqlplus /nolog -- 进入sqlplus工具但是不登录
        conn SYS/123456 AS SYSDBA -- 登录
                如果带有ip:conn indbadmin/indbadmin@192.168.1.37/orcl
oracle服务端:oracle监听为oracle实例服务
客户端连接的时候首先连接的是监听,监听再把请求发送给数据库,验证通过,以后客户端直接和数据库通讯
监听的作用:数据库实例启动之前先把监听启动起来,接收用户请求后,监听判断是普通用户还是dba,
            如果是普通用户就用数据库验证的方式,否则用操作系统验证或密码文件验证的方式
Linux下oracle的启动过程:
1.lsnrctl START 先启动监听
2.sqlplus SYS/oracle AS SYSDBA 
3.startup

oracle序列
序列:可供多个用户用来产生唯一数值的数据库对象
    自动提供唯一的数值
    共享对象
    主要用于提供主键值
    将序列值装入内存可以提高访问效率
修改序列的注意事项:
    必须是序列的拥有者或对序列有alter权限
    只有将来的序列值会被改变
    改变序列的初始值只能通过删除序列之后重新创建序列的方法实现
序列在下列情况下出现裂缝:
    回滚
    系统异常
    多个表同时使用同一序列
如果不将序列的值装入内存(nocache),可使用表user_sequences查看序列当前的有效值:select * from user_sequences;

创建序列:
create sequence xulie  -- xulie:序列名
increment by 1 -- 每次增长1
start with 10 -- 从10开始增长
maxvalue 100 -- 提供的最大值
cycle -- 需要循环
nocache  -- 不需要缓存登录
select xulie.currval from dual; -- 查询当前值
select xulie.nextval from dual;-- 查询下个值

索引:
    一种独立于表的模式对象,可以存储在与表不同的磁盘或表空间中
    索引被删除或损坏,不会对表产生影响,其影响的只是查询的速度
    索引一旦建立,oracle管理系统会对其进行自动维护,而且由oracle管理系统决定何时使用索引。用户不用在查询语句中指定使用哪个索引
    删除一个表时,所有基于该表的索引会自动被删除
    通过指针加速oracle服务器的查询速度
    通过快速定位数据的方法,减少磁盘I/O
创建索引:
    自动创建:在定义primary key 或unique约束后系统自动在相应的列上
    手动创建:用户在其他列上创建非唯一的索引,以加速查询。
创建索引:
    在一个列或多个列创建索引:
    create index indexName on tableName(column...);
删除索引: drop index indexName;
什么时候创建索引?
    1.列中数据值分布范围很广
    2.列经常在where子句或连接条件中出现
    3.表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%。
什么时候不要创建索引?
    1.表很小
    2.列不经常作为连接条件或出现在where子句中
    3.查询的数据大于2%到4%
    4.表经常更新
同义词:synonym
使用同义词主要用于访问其他用户的对象。
create synonym tableName for tableName1;
 

备份表:

语句:create table user_info_bak as select * from user_info;

备份数据:;

insert into user_info_bak select * from user_info;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值