成本低
安全性要求不高
成本在万元内
比如商务网站
大型数据库的安全性能高,价格也很昂贵!
万元以上
二、oracle安装,启动及卸载
1.系统要求:
操作系统最好为windows2000
内存最好在256M以上
硬盘空间需要2G以上
2.oracle安装会自动的生成sys和system两个用户
说明:
Sys用户是超级用户,具有最高权限,具有sysdba角色,createdatabase的权限,默认密码是manager
System用户是管理操作员,权限也很大,具有sysoper角色,没有createdatabase权限,默认密码是change_on_install
一般讲,对数据库维护,使用system用户登录就可以了
3.启动oracle
右键单击我的电脑->服务和应用程序:
服务->启动OracleServiceMYORA1(MYORA1是安装oracle时起的名字各有不同)和OracleOracleHome90TNSLlistener
4.卸载oracle
1、先关掉oralce,netstopOracleServiceORCL(ORCL是我的实例名字,换成你的),或者去我的电脑服务中关闭
2、开始->程序->Oracle-oracle的版本号,我的是10ghome->OracleInstallationProducts->UniversalInstaller卸载oracle
3、进注册表,regedit,删除选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application这个里面所有有oracle这个字眼的,删除
4、删除c盘\ProgramFiles\Oracle目录的东西以及oracle安装目录下所有的文件以及文件夹
5、环境变量中删除有关oracle的classpath和path
三、oracle开发工具
Sqlplus是Oracle自带的工具软件,主要用于执行sql语句,pl/sql块。
如何使用:
1)在开始à程序àoracleorachome90à
applicationdevelopmentàsql*plus(这个是在dos下操作)
2)在运行栏中输入:
sqlplusw或者sqlplus即可
3)在开始à程序àoracleorahome90à
Applicationdevelopmentàsql*plusworksheet
4)pl/sqldeveloper属于第三方软件,主要用于开发,测试,优化oraclepl/sql的存储过程.如:
触发器,此软件oracle不带,需要单独安装。
5)oracle的企业管理器(oemoracleenterprisemanager)
位置在开始à程序àoracleàoracleoraclehome90àenterprisemanagerconsole
即可启动oracle的企业管理器,是一个图形界面环境
四、Sql*plus的常用命令
1.连接命令
(1)conn[ect]
用法:
conn用户名/密码@网络服务名[assysdba/sysoper](角色登陆)当用特权用户身份连接时,必须带上assysdba或是assysoper
例:
connscott/tiger;
showuser;显示当前用户
2.断开连接命令
(2)disc[onnect]
说明:
该命令用来断开与当前数据库的连接
(3)passw[ord]说明:
该命令用于修改用户名的密码。
如果要想修改其他用户的密码,需要用sys/system登陆。
(4)showuser
说明:
显示当前用户名
(5)exit
说明:
该命令会断开与数据库的连接,同时会退出sql*plus
3.文件操作命令
(1)start和@
说明:
运行sql脚本
案例:
sql>@d:
\a.sql或者sql>startd:
a.sql
(2)edit
说明:
该命令可以编辑指定的sql脚本。
案例:
sql>editd:
\a.sql
(3)spool
说明:
该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例:
sql>spoold:
\b.sql并输入sql>spooloff
4.交互式命令
(1)&
说明:
可以替代变量,而该变量在执行时,需要用户输入。
如:
sql>select*fromempwherejob=‘&job’输入job是注意大小写
(2)edit
说明:
该命令可以编辑指定的sql脚本
案例:
sql>editd:
\a.sql
5.显示和设置环境变量
概述:
可以用来控制输出的各种格式,setshow如果希望永久的保存相关的设置,可以去修改glogin.sql脚本
(1)linesize
说明:
设置显示行的宽度,默认是80个字符
sql>showlinesize
sql>setlinesize90
(2)pagesize
说明:
设置每页显示的行数目,默认是14,用法和linesize一样,至于其他环境参数的使用也是大同小异
sql>setpagesize8实际得到的不是14/8=2页而是:
14/(8-3)=5页
五Oracle用户的管理
1.创建用户
概述:
在oracle中要创建一个新的用户使用createuser语句,一般是具有dba(数据库管理员)的权限才能使用。
createuser用户名identifiedby密码;
2.给用户修改密码
概述:
如果给自己修改密码可以直接使用sql>password用户名
如果给别人修改密码则需要具有dba的权限,或是拥有alteruser的系统权限
sql>alteruser用户名identifiedby新密码
3.删除用户
概述:
一般以dba的身份去删除某个用户,如果用其他用户去删除用户则需要具有dropuser的权限。
比如dropuser用户名【cascade】
注意:
在删除用户时,如果要删除的用户已经创建了表,就需要在删除的时候带一个参数cascade
4.用户管理的综合案例
概述:
创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。
给一个用户赋权限(connect登陆,dba管理员,resource建表)使用命令grant,回收权限使用命令revoke.
为了给讲清楚用户管理,给大家举一个案例。
案例:
新建一个用户lady并给该用户赋可登陆可创建表
Sql>createuserladyidentifiedbylady123(密码)
受登陆权限:
àgrantconnecttolady
受可创建表:
grantresourcetolady
可以多个同时授权:
grantconnect,resourcetolady;
注意授权用户级别应该为(dba以上sys/system)
还可以使用PL/SQL工具创建:
文件->新建->用户
现在我要把scott用户里面的emp表的权限赋给lady用户但lady只能有对emp查询权限:
grantselectonemptolady;(授权用户级别应该:
授权本身,或者sys/system)
lady查询emp的方式:
select*fromscott.emp;
案例:
同上我想把update的权限也赋给lengàgrantupdateonemptoleng;
2)我想把emp所有的(增,删,改,查/insert,delete,update,select这四个一起可以用all代替)
操作权限赋给leng
grantallonemptoleng;(此时登陆用户为scott)
案例2:
这时我想把权限收回来怎么办呢?
这时用关键字revoke(撤回)à
revokeselectonempfromlady;收回lady的查权限
案例:
现在scott希望吧查询emp表权限通过lady用户继续给别的用户?
Scott>grantselectonemptoladywithgrantoption;
Leng>grantselectonscott.empto新建用户
案例:
scott想把emp表的权限从leng用户赋权给新用户yoyo;
Scott>grantselectonemptolengwithgrantoption;
Leng>grantselectonscott.emptoyoyo;
Yoyo>select*fromscott.emp;
如果是对象权限,就加入withgrantoption
例:
grantselectonemptoxiaomingwithgrantoption
如果是系统管理权限,system给xiaoming权限时:
例:
grantconnecttoxiaomingwithadminoption
如果scott把xiaoming对emp表的查询权限回收,那么xiaohong会怎么样
Scott->xiaoming->xiaohong,结果就是xiaoming,xiaohong,都不能查询emp表
5.oracle用户的管理
使用profile管理用户口令
概述:
profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile.当建立用户没有指定profile选项,那oracle就会将default分配给用户。
(1)账户锁定
概述:
指定该用户锁定登陆时最多多可以输入密码的次数,也可以指定用户锁定的时间一般用dba的身份去执行该命令
例子:
指定scott这个用户最多只能尝试3次登陆
使用profile管理用户口令
(1)账户锁定
概述:
指定该用户锁定登陆时对多可以输入密码的次数,也可以指定用户锁定的时间一般用dba的身份去执行该命令
例子:
指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。
创建profile文件(相当于创建规则)
sql>createprofileaaa1limit
(aaa1创建规则的名称)
failed_login_attempts3password_lock_time2;
(设置登陆的次数为3次及锁定时间为:
2天)
结果:
createprofileaaa1limitfailed_login_attempts3password_lock_time2;
Sql>alteruserlengprofileaaa1
2)给账户(用户)解锁
sql>alteruserlengaccountunlock;
(3)终止口令
为了让用户定期修改密码可以使用终止口令的指令来完成同样这个命令也需要dba身份来操作。
例子:
给前面创建的用户lady创建一个profile文件,要求该用户每隔10天要修改自家的登陆密码,宽限期为2天。
看看怎么做。
sql>createprofilemyprofilelimitpassword_life_time10password_grace_time2;
sql>alteruserlengprofilemyprofile;
sql>alteruserlengaccountunlock;
6.口令历史
概述:
如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oralce就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。
例子:
1)建立profile
sql>createprofilepassword_historylimit
password_life_time10paaword_grace_time2
password_reuse_time10;
createprofile//创建的文件名。
Password_life_time//使用期为10天
passwrod_grace_time//宽限期为两天
password_reuse_time//指定口令可重用时间即10天后就可以重用:
修改密码在10天内不能与旧密码一样,10天就可以重用
2)分配给某个用户。
删除profile
概述:
当不需要某个profile文件时,可以删除该文件。
sql>dropprofilepassword_history【cascade】
第2讲:
表
内容介绍:
1、oracle的表的管理(创建和维护)
2、基本查询
3、复杂查询
4、Oracle数据库的创建
一.表名和列的命名规则:
表名必须以字母开头
长度不能超过30字符
不能使用oracle的保留字
只能使用如下字符A-Z,a-z,0-9,$,#等
二oracle支持的数据类型
1.字符型
char定长最大2000字符
例子:
char(10)‘小韩’前四个字符放’小韩’,后添6个空格补全。
‘小韩’char型查询速度极快
varchar2(20)变长最大4000字符。
例子:
varchar2(20)‘小寒’oracle分配四个字符。
这样可以节省空间varchar2会自动去匹配
clob字符型大对象最大4G
2.数字型
number范围负(10的38次方)到10的38次方可以表示
整数,也可以表示小数。
number(5,2):
括号里面的数据可改变
表示一个小数有5位有效数,2位小数范围:
-999.99~999.99
范围负999.99到999.99
number(5)
表示一个五位整数
范围负99999到99999
3.日期类型
date包括年月日和时分秒(一般项目足够用)
timestamp这是oracle9i对date数据类型的扩展(精度更高)
4、二进制(可存放图片,声音,视频文件)
blob二进制数据可以存放图片/声音4G
一般来讲不会把图片,声音,视频文件网数据库里面存放,一般存放他们的路径;
如果这些数据保密性高,可以考虑存在数据库里面。
三、表的管理
1.建表
----班级表
sql>createtableclass(---表名
classIdnumber
(2),---班级编号
cnamevarchar2(40),----班级名称
);
班级表:
sql>createtableclass(classIdnumber
(2),cnamevarchar2(40));
----学生表
sql>createtablestudent(----表名
xhnumber(4),---学号
xmvarchar2(20),----姓名
sexchar
(2),----性别
birthdaydate,----出生日期
salnumber(7,2)----奖金
);
方法2:
利用pl/sqldeveloper工具建
在左边的工具栏的对象栏-->选中Tables文件夹右键-->新建à填写内容单击应用
分析存储栏:
表示你要把所建的表存放在哪里,默认放在system这个表空间。
表空间:
表存放在一个文件里,存放在一个磁盘里,不会在内存了,最终会放在数据库某一空间里。
所以表空间就是存放表的一个空间
列:
索引:
主要用于提高速度
2.修改表
添加一个字段
sql>altertablestudentadd(classidnumber
(2));
查看表结构descstudent;
修改字段的长度
sql>altertablestudentmodify(xmvarchar2(30));
修改字段的类型(不能有数据)
sql>altertablestudentmodify(xmchar(30));
删除一个字段
sql>altertablestudentdropcolumnsal;
修改表的名字
sql>renamestudenttostu;
删除表
sql>droptablestudent;
3.添加数据
所有字段都插入
insertintostudentvalues(‘A001’,’刘权’,’男’,’07-5月-89,10);
ORACLE中默认的日期格式’DD-MON-YY’dd日子(天)
mon月份yy2位的年?
1996年6月9号
改日期的默认格式
altersessionsetnls_date_format=‘yyyy-mm-dd’;
修改后,可以用我们熟悉的格式添加日期类型
insertintostudentvalues(‘A002’,’李四’,’男’,’1990-05-28’,10);
插入部分字段
Insertintostudent(xh,xm,sex)values(‘A002’,’john’,’女’);
插入空值
Insertintostudent(xh,xm,sex,birthday)
values(‘A003’,’MARTIN’,’男’,null);
查出没有生日的人
Select*fromstudentwherebirthdayisnull;
查看有生日的人
Select*fromstudentwherebirthdayisnotnull;
4.修改数据
改一个字段
updatestudentsetsex=‘女’wherexh=‘A001’;
修改多个字段
updatestudentsetsex=‘男’,birthday=‘1996-11-12’
wherexh=‘A001’;
修改含有null值的数据
注意:
select时查询null时,要用isnull
5.删除数据
删除数据
deletefromstudent;(只删数据不删除表,表结构还存在)
数据回滚
rollback;(恢复数据)
在rollback之前要先设置savapoint才能恢复数据
例:
deletefromstudent;
Savapointaa;
Rollbacktoaa;
有经验的dba工作之前一般会做一个savapoint
删除所有记录,表结构还在,写日志,可以恢复的,速度慢
droptablestudent;删除表的结构和数据
deletefromstudentwherexh=‘A001’;删除一条记录
truncatetablestudent;
删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
四、表的查询
介绍
在我们讲解的过程中我们利用scott用户存在的几张表(emp,dept)为大家演示如何使用select语句,select语句在软件编程中非常的有用,希望大家好好的掌握。
select*fromemp;查询结果如下:
EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
----------------------------------------------------------------
7369SMITH