(一)Oracle的安装与配置(1)Oracle 11g的安装1)将两个压缩包解压在一个文件夹之后,打开文件夹,找到setup.exe,双击即可进入安装界面。
2)配置安全更新,电子邮箱不用写,取消默认的“我希望通过My Oracle Support接收安全更新(W)”单击下一步3)安装选项,选择“创建和配置数据库”,单击下一步4)系统类:选择服务器类,单击下一步5)网络安全选项:选择单实例数据库安装,单击下一步6)安装类型:选择“高级安装”,单击下一步7)数据库版本选择:企业版,单击下一步8)配置类型:选择“一般用途/事务处理”,单击下一步9)数据库标识符,填写数据库名和标识,如下图所示,单击下一步10)方案口令,选择使用相同口令。
11)完成配置后,单击完成就可以正式安装了,如下图所示(2)利用DBCA创建数据库1)欢迎界面,点击下一步2)选择创建数据库,单击下一步3)数据库模板,选择一般用途或事务处理4)数据库标识为自己名字的首字母5)管理选项6)数据库身份证明7)恢复配置8)链接模式设置为共享9)数据库存储10)创建选项11)创建数据库12)创建数据库概要(二)用户与权限管理(1)表空间的创建我在D,E盘创建了。
SQL> create tablespace MYTBS logging datafile 'D:\MYTBS1.DBF' size 300m; 表空间已创建。
SQL> alter tablespace MYTBS add datafile 'E:\MYTBS2.DBF' size 200m;表空间已更改。
(2)创建配置文件的创建SQL> create profile userprofile limit2 password_life_time 103 failed_login_attempts 34 password_lock_time 1;配置文件已创建查看该配置文件中的资源配置结果,dba_profiles数据字典表(3)创建用户新建一个用户ls,设置默认表空间为MYTBS用户ls的配置文件为userprofile查看新建的用户默认表空间,dba_users数据字典表(4)分配权限为ls用户授权:赋予创建任何表、创建任何索引的权限,将DBA的角色给新建用户;查看对应的用户获得的权限和角色用数据字典表user_sys_privs,user_tab_privs,user_role_等SQL> grant connect,resource to ls;授权成功。
SQL> grant create any table,create any index to ls;授权成功。
SQL> grant dba to ls;授权成功。
SQL> conn ls/1615925195;已连接。
SQL> select * from user_sys_privs;SQL> select * from user_tab_privs;SQL> select * from user_role_privs;(5)用新建的帐号登录。
并执行show user命令,显示当前登录用户(三)Oracle对象的创建与管理此系统为图书馆管理系统(一)需求分析:一:普通用户查看个人信息已经更改个人信息,查询书籍,借书操作,还书操作二:管理员用户可以添加书籍,更新书籍信息,为用户借书,还书操作。
(二)数据库设计1)概念设计:用户表(卡号,密码,身份类别)用户信息(卡号,,性别,已借,可借)已借书目录(卡号,书号)书籍目录(书号,书名,是否借出)书籍信息(书号,书名,作者,主题)2)逻辑结构ls_user(CardNum,PassWord,Identity)用户表ls_usermessage(CardNum,UserName,Sex,CBorrow,NBorrow)用户信息ls_jie(CardNum,BookNum,BookName)已借书目录ls_book(BookNum, BookName,YON)书籍目录ls_bookmessage(BookNum, BookName,Author,Theme)书籍信息目录3)创建代码的实现1:创建用户表,ls_user(CardNum ,PassWord ,Identity )CardNum为主键SQL> create table ls_user(2 CardNum char(11) not null,3 PassWord varchar(11) not null,4 Identity char(1) default 'P',5 constraint f_Identity_ck check(Identity in('U','P')),6 constraint PK_user primary key(CardNum)7 );表已创建。
2:创建用户信息表ls_usermessage(CardNum,UserName,Sex,CBorrow,NBorrow)用户信息CardNum为外键,依赖ls_user表中的CardNum,性别默认为男,约束只能选男、女SQL> create table ls_usermessage(2 CardNum char(11) not null,3 UserName varchar(8) not null,4 Sex char(4) default '男',5 CBorrow number default 6,6 NBorrow number default 0,7 constraint f_Sex check(Sex in('男','女')),8 constraint FK_user foreign key(CardNum)9 references ls_user(CardNum)10 );表已创建。
ls_book(BookNum, BookName,YON)书籍目录SQL> create table ls_book(2 BookNum char(11) not null,3 BookName varchar(20) not null,4 YON char(1) default 'N',5 constraint f_YON check(YON in('Y','N')),6 constraint PK_Book primary key(BookNum)7 );表已创建。
ls_jie(CardNum,BookNum,BookName)已借书目录SQL> create table ls_jie(2 CardNum char(11) not null,3 BookNum char(11) not null,4 constraint Fk_CardNum foreign key(CardNum)5 references ls_user(CardNum),6 constraint FK_BookNum foreign key(BookNum)7 references ls_book(BookNum)8 );表已创建。
ls_bookmessage(BookNum, BookName,Author,Theme)书籍信息目录SQL> create table ls_bookmessage(2 BookNum char(11) not null,3 BookName varchar(20) not null,4 Author varchar(10) not null,5 Theme varchar(10) not null,6 constraint FK_book foreign key(BookNum)7 references ls_book(BookNum)8 );表已创建。
3:创建索引和视图:为ls_book创建索引Book_CBorrow用来查找图书时以从高到低的顺序可以先显示未借出的书籍。
SQL> create index Book_CBorrow on ls_book(YON desc);索引已创建。
视图1:查看借书的详细信息SQL> create or replace view show_Borrow as2 select * from ls_bookmessage where BookNum=(3 select BookNum from ls_jie);视图已创建。
视图二:查看未借出的书籍信息SQL> create or replace view show_book as2 select * from ls_bookmessage where BookNum=(3 select BookNum from ls_book where YON='N');视图已创建。
视图三:查询借被书的详细信息:SQL> create or replace view show_personbook as2 select ls_jie.CardNum,ls_bookmessage.* from ls_jie,ls_bookmessage where3 ls_jie.BookNum = ls_bookmessage.BookNum;视图已创建。
(四)PL/SQL编程函数:返回该用户已经借阅书的数量SQL> create or replace function Get_BookNums(ID char)2 return number is3 nums number;4 begin5 select count(*) into nums from ls_jie where CardNum=ID;6 return nums;7 end Get_BookNums;8 /函数已创建。
创建触发器:当添加书籍信息成功后触发SQL> create trigger AddBook2 after insert on ls_book3 for each row4 begin5 dbms_output.put_line('添加书籍成功');6 end;7 /触发器已创建登录存储过程SQL> create or replace procedure login(2 p_id in ls_user.CardNum%TYPE,3 p_password in ls_user.PassWord%TYPE)4 as5 v_password ls_user.PassWord%TYPE;6 begin7 select PassWord into v_password from ls_user8 where CardNum=p_id;9 if v_password=p_password then10 dbms_output.put_line('登录成功');11 else dbms_output.put_line('密码错误');12 end if;13 exception14 when no_data_found then15 dbms_output.put_line('没有此用户');16 end login;17 /过程已创建。