feiyueheu 发表于 2011-12-22 08:54

ORACLE学习笔记(一)

在我对计算机的兴趣中,很长时间只是对开源文化的一种狂热的追逐,而没有过多的考虑技术之后的价值问题,因此很多的时候没有对技术的应用价值进行考虑。<br>最近在学习ORACLE数据库,在网上看的到清华大学韩顺平老师的视频讲座,学习之余将自己的学习笔记整理在这里,一方面是方面自己日后查阅,也可以让有兴趣的朋友看一下,或者给出点指正。<br>要说学习ORALCE也是一个偶然吧。公司的CAPP系统太恶心了,我虽然不会开发,但是根据自己不多的计算机和软件开发知识来看,这软件系统也是开发的很蹩脚。可我们公司不是搞这方面的,而且自己说来时间也多,就想自己学习一下,搞一点副业,就是一点爱好吧。能好好的学习一下ORACLE也是件美事。<br>要声明的一点是。自己的学习笔记很是粗糙,容我日后更新。<br>2011-6-23<br>1.oracle安装成功后,会默认生成三个用户<br>SYS用户:超级管理员,权限最高,它的角色是DBA 密码change_on_install<br>SYSTEM用户:是系统管理员,权限也很高,他的角色是dbaoper密码MANAGER<br>SCOTT用户:普通用户,密码是TIGER<br>SYS有create database的权限,而SYSTEM没有,其它相似。<br><br>2.oracle的相关命令<br>conn user/password@database //以USER登陆到数据库。<br>disc //断开当前连接<br>show user //得到当前用户名<br>passw //修改密码<br>start和@ //用来运行SQL脚本文件。<br>edit //打开编辑一个SQL文件<br>spool //将程序运行结果输出到一个文件。<br>&amp; //交互式命令,用来替代变量 如 sql&gt;select * form emp where job='&amp;job'<br>*******************<br>oracle用户的管理<br>create user xiaoming identified by m123;<br><br>在删除用户时,注意如果要删除的用户,已经创建了表,那么就需要在删除时带一个参数 cascade;<br>用户及其所创建的表一起删除掉。<br>&nbsp;<br>grant //赠于一个角色于一个用户。<br>角色:connect dba resource三个主要的角色。<br><br>**********************<br>对象权限,selecte update insert delete all create index<br>希望XIAOMING用户可以去查询EMP表,<br>grant select on emp to xiaoming<br>希望XIAOMING用户可以去修改EMP表,<br>grant update on emp to xiaoming<br>revoke//收回一个角色<br>revoke select on emp from xiaoming<br><br>//对权限的维护。<br>希望XIAOMING可以去查询SCOTT有EMP表、还希望小明可以把这个权限继续给别人。<br>——如果是对象权限,就加入with grant option<br>grant select on emp to xiaoming with option<br>——如果是系统权限<br>system给xiaoming权限时:<br>grant connect to xiaoming with admin option<br>?如果SCOTT把XIAOMING对EMP表的查询权限回收,那么XIAOHONG会怎么样?<br>答:也被回收了。<br>***********************************<br>第五讲<br>***********************************<br>oracle用户的管理<br>使用profile管理用户口令,<br>profile是口令限制,资源限制命令的集合,当建立数据库时,oracle会自动建立名称为default的profile.<br>2.1 帐户锁定<br>指定该账户登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用DBA的身份去执行该命令。<br>例:以下命令指定SCOTT用户最多只能尝试3次登陆,锁定时间为2天。<br>(1)创建profile文件<br>sql&gt;create profile lock_account limit failed_login_attempts 3 password_lock_time 2;//创建profile文件<br>sql&gt;alter user scott profile lock_account;//把用户加入到这个文件中<br>(2)给账户解锁<br>sql&gt;alter user tea account unlock;<br>(3)终止口令<br>为了让用户定期改口令<br>sql&gt;create profile myprofile limit password_life_time 10 password_grace_time 2;//第10天要修改自己的登陆密码,宽限期为2天。<br>sql&gt;alter user tea profile myprofile<br>(4)口令历史<br>sql&gt;create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10<br>(5)删除profile<br>sql&gt;drop profile passowrd_history <br>如果有CASCADE的时,就是删除所有的关系文件。<br><br><br>***********************************<br>第六讲<br>***********************************<br>1、oracle表的管理<br>2、oracle表的查询<br>3、学会创建新的oarcle数据库<br><br>一、表的管理<br>必须以字母形状<br>长度不能超过30字符<br>不能使用oracle的保留字<br>只能使用如下字符,A-Z,a-z,0-9,$<br><br>oracle的数据类型<br>1、字符型 <br>(1)char 定长 最大2000字符。例子 char(10) ‘小韩‘,那么后四个字符用空填满。<br>(2)varchar2(20) 变长,最大4000字符。可以节约空间<br>(3)clob(character large object)字符型的大对象<br>2、数字型<br>number 范围为-10的38次方到10的38次方<br>number(5,2)表示一个小数有5位有效数字,2位小数<br>范围-999.99到999.99<br><br><br>***********************************<br>第七讲<br>***********************************<br>3.时间类型<br>date和 timestamp两个日期类型<br>4.图片<br>blob&nbsp; 二进制数据,可以存放图片、声音、4G<br>在实际项目中,在数据库中存放图片、声音的路径,除非出于安全考虑。<br><br>一、建表<br>1.学生表<br>sql&gt;create table student(--表名<br>xh number(4),——学号<br>xm varchar2(20),——姓名<br>*** char(2),——姓别<br>birthday date,——出生日期<br>sal number(7,2)——薪金<br>);<br>修改表<br>1、添加一个字段<br>sql&gt;alter table student add (classid number(2));<br>2.修改字段的长度<br>sql&gt;alter table student modify (xm varchar2(30));<br>3.修改字段的类型、或者是名字<br>sql&gt;alter table student modif (xm char(30));<br>4.删除一个字段<br>sql&gt;alter table student drop column sal;<br><br>5.修改表的名字<br>sql&gt;rename student to stu;<br>6。删除表<br>sql&gt;drop table student;<br>7.select 查询表,单独讲解<br>8,插入表<br>insert into student values(a,b,c,d);<br>或者如果有些列为空时:<br>insert into student(xh,xm,***) values(3,'JOHN','女')<br>插入空值<br>insert into student(xh,xm,***,birthday)&nbsp; values(3,'martin','男',null);<br>改一个字段;<br>update student set ***='女' where xh='a001';<br>修改多个字段;<br>update student set ***='男',birthday='1980-02-04' where xh='a001';<br>修改字段为NULL的字段;<br>条件为 is null<br><br>删除数据<br>delete from student;<br>删除所有记录,表结构还在,写日志,可以恢复的,速度慢<br>恢复用rollback与savepoint配合。<br>rollback数据回滚,之前要设置savepoint a,<br><br>drop table student;删除表的结构和数据<br><br>delete from student where xh='xad';删除一条记录<br><br>truncate table student;<br>删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。<br><br><br>@<br>2011-8-11<br>数据查询<br>S<br>1、查看表结构<br>desc dept;<br>2.查询所有列;\\慎用,时间长<br>select * from dept;<br>3.查询指定列<br>select ename,sall,job,deptno from emp;<br>4.如何取消重复行。distinct是关键词<br>select distinct deptno,job from emp;<br>***************注意,ORACLE对数据库里的字段的内容是区分大小写的。<br><br>5.使用算术表达式。<br>&nbsp;select sal*12+nvl(comm,0)*12 as "nian gongzi" from emp;<br>nvl(comm,0),如果COMM为NULL,表达式为0,如何不为NULL,为COMM的值。<br><br>6,使用WHERE子句<br><br>where and and 多个条件<br>7,like操作符,匹配用 <br>%,表示0到多个字符,_:表示任意单个字符<br>select ename,sal from emp where ename like 'S%';<br>select ename, sal from emp where ename like '__O%';<br>8,where中的in;<br>select * from emp where empon in (123,456,400);<br>9,order by 按升降序来排列数据。<br>order by desc;降序;asc,升序;、、如果对多个列进行排序,ORDER BY只有一个,<br>10,使用列的别名排序,//别名中,可以不用AS<br>select ename,sal*12 "年薪" from emp order by '年薪' asc;<br><br><br>
页: [1]
查看完整版本: ORACLE学习笔记(一)