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