- 论坛徽章:
- 0
|
在我对计算机的兴趣中,很长时间只是对开源文化的一种狂热的追逐,而没有过多的考虑技术之后的价值问题,因此很多的时候没有对技术的应用价值进行考虑。 最近在学习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; (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;
|
|