设为首页 收藏本站
查看: 742|回复: 0

[经验分享] oracle一步接一步(1)--基础入门

[复制链接]

尚未签到

发表于 2016-7-31 11:42:57 | 显示全部楼层 |阅读模式
  1. 下载并安装oracle10。
  (1)一路默认安装,设置好自己的密码。安装完成要运行database configration assistant图形工具创建数据库。有的是默认安装完就运行,如果默认不运行,自己在开始菜单中找到该选项运行(在windows下时)
  

  2. 登录同机sqlplus客户端。
  (1)打开命令行控制台,在其中输入sqlplus
命令。
  (2)系统会提示输入登陆用户名和密码,一次输入。如用户名:SYSTEM 密码:yourpwd。
  当出现 SQL> (在dos控制台下)时,表示登陆成功。
  
  3.创建一个用户。
  (1)在登陆sqlplu后,输入:create user somename identified by pwd;



  即创建了一个用户名为somename,密码为 pwd 的用户
  (2)为用户授予权限: 

grant create session to




somename


;
//

授予
somename


连接数据的权限

  或为用户授予角色:grant dba to


somename;


  (3)修改用户密码:alter user somename identified by otherpwd;

  (4)删除用户:drop user somename;


  (5)显示用户所拥有的表:select table_name from dba_tables where owner='somename';


  (6)显示所有用户:select username from dba_users;


  
  4.查看当前登陆相关信息
  (1)查看当前登录数据库
  show parameter db_name;

select name from v$database;

  (2)查看当前sid和servicename
  select sid from v$mystat where rownum <=1;

                       show parameter service

  (3)
查看数据库中的所有表 select * from tab;


       (4)查看当前数据库版本 select * from product_component_version




  
  5.新建表以及数据操作同标准sql在这里不再赘述。
  (1)但是oracle很多地方还是很让人恶心的,比如设定主键自动增长机制。需要用的sequence和trigger,即序列和触发器。这要比起mysql的auto_increment和sql server的identity(1,1)的方便性比较,简直就是十分值得抱怨的事情。好了,现在说怎么实现orcale建表主键的自动增长的例子
  a)建立表  create table xtest(id int not null primary key, name varchar(20));
  b)建立序列

create sequence xtest_seq
minvalue 1
maxvalue 999999999
start with 1
increment by 1
cache 20;
  c)建立触发器

create or replace trigger xtest_trigger before
insert on xtest for each row when(new.id is null)
begin
select xtest_seq.nextval into :new.id from dual;
end;
/
  分析原理:主键自动增长是用sequence来完成的,这需要我们在插入的时候指定用哪个sequence来给予值。于是就需要触发器来做这些事情。触发器类似与存储过程,但负责监听。比如上面的触发器监听xtest表的插入事件。当然,我们也可以不用触发器,直接insert into xtest(id, name) values(xtest_seq.nextval, 'johntor');了事。但是谁又会喜欢去写如此的sql语句呢!
  (2)显示表设计
  desc 表名

  这个mysql也有,不用多说。全称命令是describe。
  (3)显示已经建立的sequence
  select * from user_sequences;

  可以有where语句如   where sequence_name = 'YOUR_SEQ_NAME'
  (4)关于删除表
  我们都会知道用sql如:drop table tablename;   ok,执行后,数据库提示你执行成功了,但是在查询一下你的所有表select * from tab;会发现,多了一个类似“
BIN$YkN4S58dTPC/vBboMCNh0A==$0”名字的表
。奇怪吗,其实也不,自己在第一时间想到的就是oracle为了安全起见,让你恢复表数据用
的,事实也的确如此。
  a)我们用flashback table "BIN$YkN4S58dTPC/vBboMCNh0A==$0" to before drop;命令乐意恢复我们刚才删除的表。也就是说,我们用的删除语句把一个结构相同而其重命名的表放进了回收站。
  b)drop table tablename purge;
可以绕过回收站,直接删除。这样就不能恢复了。
  c)执行 purge recyclebin;
命令可清空当前用户的回收站。执行purge table tablename;
命令可以清除回收站内指定的表。记住这里的tablename不是那个很长的字符串,而是自己原来删除前表的是进名字。

  
  6.关于表空间

  (1)查询现有表空间情况的sql语句如下:

      select
      total.tablespace_name tsname,
      count(free.bytes) nfrags,
      nvl(max(free.bytes)/1024,0) mxfrag,
      total.bytes/1024 totsiz,
      nvl(sum(free.bytes)/1024,0) avasiz,
      (1-nvl(sum(free.bytes),0)/total.bytes)*100 pctusd
  from
      dba_data_files total,
      dba_free_space free
  where
      total.tablespace_name = free.tablespace_name(+)
  group by
      total.tablespace_name,
      total.bytes;
  当然可以用一句话来看都有什么表空间 select tablespace_name from dba_data_files;


  (2)表空间的概念:一个数据库从逻辑上来说是由一个或多个表空间所组成,表空间是数据库中物理编组的数据仓库。每一个表空间是由段所组成,一个表空间存放一个或多个数据库的物理文件。一个数据库中的数据被逻辑地存储在表空间上。
  更直观一点说,表空间就是由一个或几个数据文件构成的逻辑存储单元。
  (3)创建表空间:

create tablespace data01
datafile 'C:/data/data01.dbf' size 500M
uniform size 128k; #默认为64k
  (4)删除表空间:drop tablespace data01 including contents and datafiles;


  (5)修改表空间大小:alter database datafile 'C:/data/data01.dbf' resize 100M;


  (6)移动表到另一个表空间:alter table ztest move tablespace data01;


  上面ztest为表的名字data01为表空间的名字
  (7)显示属于一个表空间的所有内容信息以及所有者:

select distinct owner,segment_name, segment_type
from dba_extents
where tablespace_name='DATA01';
  
  (8)显示一个表属于哪个表空间:select tablespace_name from tabs where table_name = 'ZTEST';


  通过上面关于表空间的一些讲述,我们就会想到在建表的时候,就为表直接指定表空间了,如下:
  create table zztest(id int) tablespace USERS;


  下面是我没有测试过的,但应该没有什么问题的技巧:
  a)给表空间添加数据文件:alter tablespace date01 add datafile d:/data/date02.dbf size 50m;


  b)设置数据文件自动扩展:
  alter database datafile d:/data/date02.dbf autoextend on next 10m maxsize 500m;


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251483-1-1.html 上篇帖子: Oracle 数据库sys权限基本应用 下篇帖子: Oracle CEO狂妄而真实的演讲
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表