欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Oracle數(shù)據(jù)庫實驗報告

      時間:2019-05-12 00:41:37下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Oracle數(shù)據(jù)庫實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Oracle數(shù)據(jù)庫實驗報告》。

      第一篇:Oracle數(shù)據(jù)庫實驗報告

      中南林業(yè)科技大學

      實驗報告

      課程名稱:

      Oracle數(shù)據(jù)庫 專業(yè)班級: 姓名:

      學號:

      ****年**月**日

      實驗一

      安裝和使用Oracle數(shù)據(jù)庫

      【實驗?zāi)康摹?/p>

      1.掌握Oracle軟件安裝過程,選擇安裝組件 2.掌握建立Oracle數(shù)據(jù)庫,配置網(wǎng)絡(luò)連接 3.掌握Oracle企業(yè)管理器的基本操作 4.使用SQL*Plus,登錄到實例和數(shù)據(jù)庫 5.掌握命令方式的關(guān)閉和啟動實例及數(shù)據(jù)庫 【實驗內(nèi)容】

      1.查看已安裝的Oracle組件

      2.查看服務(wù),記錄下和數(shù)據(jù)庫有關(guān)的服務(wù)名,將他們設(shè)為手動方式,啟動相關(guān)服務(wù)。

      3.配置監(jiān)聽器,查看是否在服務(wù)中有LISTENER,是否能啟動。4.配置本地net服務(wù),提示:設(shè)置正確的服務(wù)器地址和端口號。5.打開SQL*Plus,用SYS和SYSTEM用戶名和密碼登錄。6.思考題:有幾種打開SQL*Plus的方法?分別是什么? 7.用命令關(guān)閉實例和數(shù)據(jù)庫,記錄命令

      8.用命令以NOMOUNT的方式啟動實例,再加載數(shù)據(jù)庫,打開數(shù)據(jù)庫。

      【實驗結(jié)論】

      1.查看已安裝的Oracle組件

      2.查看服務(wù),記錄下和數(shù)據(jù)庫有關(guān)的服務(wù)名,將他們設(shè)為手動方式,啟動相關(guān)服務(wù)。

      3.配置監(jiān)聽器,查看是否在服務(wù)中有LISTENER,是否能啟動。

      4.配置本地net服務(wù),提示:設(shè)置正確的服務(wù)器地址和端口號。

      5.打開SQL*Plus,用SYS和SYSTEM用戶名和密碼登錄。

      6.思考題:有幾種打開SQL*Plus的方法?分別是什么?(1)直接打開 sql plus 即窗口方式(2)cmd 命令行方式

      (3)WEB 頁面中 iSQL*Plus 方式 7.用命令關(guān)閉實例和數(shù)據(jù)庫,記錄命令 SQL>shutdown immediate

      8.用命令以NOMOUNT的方式啟動實例,再加載數(shù)據(jù)庫,打開數(shù)據(jù)庫。

      sql>startup nomount sql>alter database mount;sql>alter database open;sql>startup

      (1).用SQLplus 命令:show parameters參數(shù)名

      (2).用select [列名] from 表名

      2.初始化文件有幾種?默認的保存位置在哪里?

      初始化文件有三種:數(shù)據(jù)文件,日志文件,控制文件; 默認的保存位置E:oracleproduct10.2.0oradataorcl

      4.打開OEM,查看三類物理文件信息

      三類物理文件:數(shù)據(jù)文件、控制文件、日志文件 數(shù)據(jù)文件:.DBF存儲表、索引及數(shù)據(jù)結(jié)構(gòu)信息

      日志文件:.LOG記錄對數(shù)據(jù)庫的所有修改信息,用于恢復(fù)

      控制文件:.CTL二進制文件,記錄數(shù)據(jù)庫名、文件標識、檢查點

      5.分別用select命令查詢V$parameter動態(tài)性能視圖,用show命令查看全局數(shù)據(jù)庫名、實例名、是否啟動自動歸檔、標準數(shù)據(jù)塊大小這四個參數(shù)的值,記錄命令和結(jié)果。用select命令查詢V$parameter動態(tài)性能視圖

      用show命令查看全局數(shù)據(jù)庫名、實例名

      用show命令查看是否啟動自動歸檔、標準數(shù)據(jù)塊大小

      6.如何用命令查看數(shù)據(jù)文件、控制文件的文件名、存儲位置和狀態(tài)信息?

      (1).查看數(shù)據(jù)文件的文件名、存儲位置和狀態(tài)信息

      (2).查看控制文件的文件名、存儲位置和狀態(tài)信息

      0

      和服務(wù)器型文件都要找到),查看各類默認位置并記錄下來(包括物理文件所在目錄,該數(shù)據(jù)庫相關(guān)的各個目錄等),登錄到mydb數(shù)據(jù)庫。

      2.用命令方式手工創(chuàng)建數(shù)據(jù)庫testorcl

      (1)創(chuàng)建批處理文件,建立必需的各級目錄,參考第一題MYDB數(shù)據(jù)庫的默認目錄。

      (4)運行數(shù)據(jù)庫建立腳本,更改相關(guān)服務(wù)為手動啟動方式

      (5)運行數(shù)據(jù)字典等創(chuàng)建腳本

      3.在DBCA中刪除MYDB數(shù)據(jù)庫。

      Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:oracleproduct10.2.0db_2RDBMSlog

      二、完成下面的查詢,記錄查詢命令和結(jié)果。1.查詢HR方案種有哪些表,列出表名 2.設(shè)置行寬為160,每頁行數(shù)為40 3.查詢employees表中所有薪水在3000到6000元之間的員工編號、姓、名、受聘日期、工作代號、薪水、經(jīng)理代號、部門號,按部門號升序排列,同一部門按員工編號降序排列

      4.查詢每個部門的人數(shù)、平均薪水、最高薪水、最低薪水,按部門編號升序排列

      5.查詢first_name的第三個字母是t的員工編號,first_name,電話號碼,部門編號,部門名稱

      6.在job_history表中查詢?nèi)温殨r間超過1年的員工編號,任職歷時月份(保留整數(shù)),工作代號,部門代號。

      7.查詢每個部門經(jīng)理的員工編號、姓名、薪水、部門號。

      【實驗結(jié)論】

      一、需要訪問HR示例方案中的表,如果機器上沒有該示例方案,則運行相關(guān)包和相應(yīng)配置裝入HR方案。

      1.將hr.rar解壓到D:oracleproduct10.2.0db_2demoschema human_resources目錄下,然后在SQL*PLUS 中執(zhí)行 hr_main.sql

      二、完成下面的查詢,記錄查詢命令和結(jié)果。1.查詢HR方案種有哪些表,列出表名

      5.查詢first_name的第三個字母是t的員工編號,first_name,電話號碼,部門編號,部門名稱

      738

      實驗五

      PL/SQL編程

      【實驗?zāi)康摹?/p>

      1.熟悉PL/SQL的數(shù)據(jù)類型和書寫規(guī)則 2.熟悉控制結(jié)構(gòu)和游標的使用 3.編寫和運行函數(shù)、過程和觸發(fā)器 【實驗內(nèi)容】

      編寫腳本文件,調(diào)試運行腳本文件,并記錄結(jié)果。

      1.在SQL*Plus中編寫一個PL/SQL塊,功能用于打印學生信息 在DECLARE部分完成:

      (2)建立學生信息記錄類型stu_record_type,包括學號,姓名,性別,籍貫,學習成績和活動成績。均為可變長字符類型(3)編寫本地子過程:學生信息打印過程PrintStuRecord,把(1)中定義的記錄類型作為參數(shù)(4)定義學生信息記錄變量stu_record 在BEGIN…END部分完成:

      (1)為stu_record變量的各個元素賦值如下: 學號:‘2001001’ 姓名:’李新’

      性別:‘m’

      籍貫:‘黑龍江省哈爾濱市’ 學習成績:‘Excellent’

      0

      (1)建立學生信息記錄類型stu_record_type,包括學號,姓名,性別,籍貫,學習成績和活動成績。均為可變長字符類型

      set serveroutput on declare type stu_record_type is record

      (s_no varchar2(8), s_name varchar2(10), s_sex varchar2(2), s_address varchar2(20), s_studyscore varchar2(10), s_activescore varchar2(10));(2)編寫本地子過程:學生信息打印過程PrintStuRecord,把中定義的記錄類型作為參數(shù)

      procedure PrintStuRecord as begin dbms_output.put_line('學號:'|| stu_record.s_no);dbms_output.put_line('姓名 :'|| stu_record.s_name);dbms_output.put_line('性別:'|| stu_record.s_sex);dbms_output.put_line('籍貫:'|| stu_record.s_address);dbms_output.put_line('學習成績:'|| stu_record.s_studyscore);dbms_output.put_line('活動成績:'|| stu_record.s_activescore);end PrintStuRecord;(3)定義學生信息記錄變量stu_record stu_record stu_record_type;在BEGIN…END部分完成:

      (4)為stu_record變量的各個元素賦值如下: 學號:‘2001001’ 姓名:’李新’

      性別:‘m’

      籍貫:‘黑龍江省哈爾濱市’

      2.建立對bookinfo表的DML觸發(fā)器,一旦bookinfo表發(fā)生了任何變化,立即觸發(fā),對bookinfo表的數(shù)據(jù)進行統(tǒng)計,結(jié)果存儲在數(shù)據(jù)統(tǒng)計表中

      (1)如果沒有則建立bookinfo表,選擇建立在scott用戶下,表結(jié)構(gòu)為(bookno varchar2(36)Primary key, bookname varchar2(40)not null, authorname varchar2(10)not null, publishtime date, bookprice float)

      create table bookinfo(bookno varchar2(36)Primary key,4

      Selectcount(bookno),count(distinct authorname)from bookinfo;end;/

      (4)在bookinfo表中插入、刪除和更新信息,再查看major_stats表中數(shù)據(jù)的變化 <1>插入

      647

      實驗六

      模式對象管理與安全管理

      【實驗?zāi)康摹?/p>

      1.了解模式對象的類型

      2.掌握在OEM中操作模式對象的方法

      3.掌握命令方式建立表、視圖、索引等常見對象的方法 4.熟悉Oracle中權(quán)限分類和設(shè)置,理解系統(tǒng)提供用戶的角色和權(quán)限

      5.熟練使用建立用戶、角色,為用戶授權(quán)、授予角色的命令

      【實驗內(nèi)容】

      1.創(chuàng)建一個TESTUSET用戶,密碼為test,默認表空間為user表空間

      2.創(chuàng)建用戶后為其授予登錄數(shù)據(jù)庫和創(chuàng)建數(shù)據(jù)庫對象的權(quán)限 3.用TESTUSER用戶登錄數(shù)據(jù)庫

      4.創(chuàng)建學生信息表(學號,姓名,性別,入學成績),定義主鍵和輸入數(shù)據(jù)(至少5條數(shù)據(jù)),提交添加的數(shù)據(jù)。并完成下面的題目:

      (1)再繼續(xù)添加2條數(shù)據(jù),設(shè)置一個保存點savepoint,再添加1條數(shù)據(jù),執(zhí)行回退到保存點的回退命令。查看此時表中數(shù)據(jù)(2)查詢?nèi)雽W成績大于480的學生信息(3)建立男生信息視圖

      (4)在“成績”字段上建立B-樹索引

      5.創(chuàng)建一個表簇,名為empl_dep,容納empl表和dep表,有公

      第二篇:Oracle數(shù)據(jù)庫 圖書管理系統(tǒng)實驗報告

      圖書管理系統(tǒng)(Oracle)

      1、創(chuàng)建表空間student_library

      2、(1)創(chuàng)建表Administrator

      (2)創(chuàng)建表library

      (3)創(chuàng)建表student

      (4)創(chuàng)建表lent_library

      (5)創(chuàng)建表booktype

      3、(1)創(chuàng)建表空間student_library

      create tablespace student_library datafile 'C:oracleproduct10.2.0oradataorclstudent_library' size 100M autoextend on;

      (2)創(chuàng)建表Administrator create table Administrator(AdministratorID number(20)primary key,AdministratorName varchar2(25),sex varchar2(5),beizhu varchar2(30),bookID varchar2(20), foreign key(bookID)references library(bookID))tablespace student_library;

      向Administrator表插入數(shù)據(jù) insert into Administrator values(100421101,'張三','男',' ',100421)insert into Administrator values(100421102,'李四','女',' ',100422)insert into Administrator values(100421103,'王五','男',' ',100423)對Administrator表刪除數(shù)據(jù)

      delete from Administrator where AdministratorID=100421103 ——刪除Administrator表中管理員編號為‘100421103’的一行數(shù)據(jù) 對Administrator表查詢數(shù)據(jù)

      select * from Administrator order by AdministratorID ——按照管理員的ID號對Administrator表進行排列 向Administrator表修改數(shù)據(jù)

      update Administrator set AdministratorName=‘王明’where AdministratorID=100421101 ——對Administrator表中管理員編號為‘100421101’的姓名改為“王明” update Administrator set sex=‘女’where AdministratorID=100421103 ——對Administrator表中管理員編號為‘100421103’的性別改為“女”(3)創(chuàng)建表library create table library(bookID number(20)primary key,bookName varchar2(20),author varchar2(10),press varchar2(20),publishDate varchar2(50),price number(20),leibienumber number(20),state varchar2(8),studentID number(20),foreign key(studentID)references student(studentID))tablespace student_library;

      向library表插入數(shù)據(jù) insert into library

      values(100421,'Oracle數(shù)據(jù)庫管理','馬曉玉','清華大學出版社','2011-11-8',40,'013999',' ',100421203)insert into library

      values(100422,'ASP.NET網(wǎng)站設(shè)計','唐慧','南京大學出版社','2011-5-18',32,'165923',' ',100421205)insert into library

      values(100423,'JavaScript程序設(shè)計','徐元','蘇州大學出版社','2011-2-12',28,'265894',' ',100421207)對library表刪除數(shù)據(jù)

      delete from library where bookID=100422 ——刪除library表中書籍編號為‘100422’的一行數(shù)據(jù) 向library表查詢數(shù)據(jù)

      select bookID,bookName,author,press,publishDate,price from library order by bookID ——查詢library表中的bookID,bookName,author,press,publishDate,price的數(shù)據(jù)根據(jù)書籍的編號進行排序

      向library表修改數(shù)據(jù)

      update library set author=‘張敏’where bookID=100422 ——對library表中書籍編號為‘100422’的作者改為“張敏”

      (4)創(chuàng)建表student create table student(studentID number(20)primary key,studentName varchar2(50),sex varchar2(2),department varchar2(10),studentPhone number(15),borrowID number(20),password number(10))tablespace student_library;

      向student表插入數(shù)據(jù) insert into student values(100421203,'王逸','男','信電系','***','123456','521568')insert into student values(100421205,'劉娟','女','食品系','***','256302','269756')insert into student values(100421207,'張一凡','男','園林園藝系','***','687456','305621')對student表刪除數(shù)據(jù)

      delete from student where studentName=‘張一凡’

      ——刪除student表中學生姓名為‘張一凡’的一行數(shù)據(jù) 向student表修改數(shù)據(jù)

      update student set department=‘經(jīng)貿(mào)系’where studentID=100421205 ——對student表中學生學號為‘100421205’的系部名稱改為“經(jīng)貿(mào)系”

      (5)創(chuàng)建表lent_library create table lent_library(lentID number(20)primary key,bookID number(20),borrowbookID number(20),borrowDate varchar2(50),borrowState varchar2(30),foreign key(bookID)references library(bookID))tablespace student_library;

      向lent_library表插入數(shù)據(jù) insert into lent_library values(12345,'100421','1360','2012-3-15','還未歸還')insert into lent_library values(21350,'100422','2035','2012-1-6','已經(jīng)歸還')insert into lent_library values(13056,'100423','1503','2012-3-22','還未歸還')向lent_library表刪除數(shù)據(jù) delete from lent_library where bookID=‘100423’

      ——刪除lent_library表中書籍編號為‘100423’的一行數(shù)據(jù) 向lent_library表查詢數(shù)據(jù)

      select lentID,bookID,borrowbookID,borrowState from lent_library where bookID=‘10042%’ ——查詢lent_library表中的lentID,bookID,borrowbookID,borrowState數(shù)據(jù)根據(jù)書籍編號前五位數(shù)位‘10042’進行排序

      (6)創(chuàng)建表booktype create table booktype(Leibienumber number(20)primary key,booktype varchar2(20))tablespace student_library;

      向booktype表插入數(shù)據(jù) insert into booktype values('4630','文學類')insert into booktype values('1623','科普類')insert into booktype values('2412','理工科類')向booktype表刪除數(shù)據(jù)

      delete from booktype where leibienumber=‘1623’

      ——刪除booktype表中類別編號為‘1623’的一行數(shù)據(jù) 向booktype表修改數(shù)據(jù)

      update booktype set booktype=‘計算機類’where leibienumber=‘2412’ ——對booktype表中類別編號為‘2412’的書籍類型改為“計算機類”

      4、(1)創(chuàng)建索引

      【1】create index AdministratorID _index on Administrator(AdministratorID)tablespace users;

      —在Administrator表的AdministratorID列創(chuàng)建一個名為Aid_index的索引

      【2】create bitmap index studentName_index on student(studentName)tablespace users;—在student表的學生姓名列上創(chuàng)建位圖索引

      (2)創(chuàng)建視圖

      create or replace view view_library as select bookID,bookName,author,press,publishDate,price from library;—創(chuàng)建視圖view_library,查詢library表中的bookID,bookName,author,press,publishDate,price

      5、(1)創(chuàng)建匿名塊

      set serveroutput on declare out_text varchar2(50);begin out_text:='程序塊示例';dbms_output.put_line(out_text);exception when others then dbms_output.put_line('捕獲一個異常');end;

      (2)創(chuàng)建存儲過程

      create or replace procedure InsertAdministrator as begin insert into Administrator(AdministratorID,administratorName,sex)values(100421105,'李凡','男');exception when dup_val_on_index then

      dbms_output.put_line('重復(fù)的編號');when others then

      dbms_output.put_line('發(fā)生其他錯誤!');end InsertAdministrator;—創(chuàng)建一個存儲過程InsertAdministrator,向Administrator表的AdministratorID,administratorName和sex列分別插入數(shù)據(jù)100421105,李凡和男三個值。

      (3)創(chuàng)建函數(shù)

      create or replace function Factorial(n in number)return number as result number: =1;begin for i in 1...n loop result: =result*i;end loop;return(result);end Factorial;(4)創(chuàng)建觸發(fā)器 create table student_log(studentID number(20),studentName varchar2(50),sex varchar2(2),department varchar2(10));—創(chuàng)建一個日志表,記錄對student表所做的修改,日志表名為student_log create or replace trigger insertlog_trigger after insert on student begin insert into student_log values(100421230,'路奇', '女', '園林系');end;—在student表上創(chuàng)建一個語句級Insert觸發(fā)器

      6、用戶權(quán)限和角色管理

      (1)創(chuàng)建用戶user_student create user user_student identified by student default tablespace student_library

      (2)為用戶user_student設(shè)置系統(tǒng)權(quán)限 grant create session to user_student;

      (3)為用戶user_student撤銷系統(tǒng)權(quán)限

      revoke create session from user_student;

      (4)創(chuàng)建角色user_library

      create role user_library identified by student

      (5)為角色user_library授予權(quán)限

      grant user_library to public;

      (6)啟用角色user_library

      set role user_library identified by student

      第三篇:Oracle實驗報告

      Oracle數(shù)據(jù)庫實驗報告

      實驗一:Oracle 10g安裝卸載及相關(guān)工具配置

      一、實驗?zāi)繕耍?/p>

      安裝Oracle 10g,了解OEM,通過DBCA安裝數(shù)據(jù)庫,通過DBCA刪除數(shù)據(jù)庫,sqldeveloper連接數(shù)據(jù)庫,卸載oracle 10g。

      二、實驗學時數(shù) 2學時

      三、實驗步驟和內(nèi)容:

      1、安裝Oracle10g(默認安裝數(shù)據(jù)庫)雙擊setup.exe,選擇基本安裝,安裝目錄D:盤,標準版,默認數(shù)據(jù)庫orcl,口令bhbh。進入先決條件檢查界面時:網(wǎng)絡(luò)配置需求選項不用打勾,直接下一步,是。直到安裝成功。

      2、登陸和了解OEM 主要是已網(wǎng)頁的形式來對數(shù)據(jù)庫進行管理。

      第1頁 http://主機IP:1158/em 用戶名:sys 口令:bhbh 身份:sysdba 或者

      用戶名:system 口令:bhbh 身份:normal

      3、通過DBCA刪除已安裝的默認數(shù)據(jù)庫orcl 程序->OracleOraDb10g_home1->配置和移植工具->Database Configuration Assistant->創(chuàng)建數(shù)據(jù)庫->……

      5、sqldeveloper連接數(shù)據(jù)庫 打開sqldeveloper,新建連接 連接名:system_ora 用戶名:system 口令:bhbh 主機名:本機計算機名 SID:xscj 測試,顯示成功,連接,保存。

      第2頁

      6、卸載oracle 10g Windows下

      1>停止所有Oracle服務(wù),點Universal Installer卸載

      2>刪除注冊表中的所有關(guān)于Oracle項

      在HKEY_LOCAL_MACHINESOFTWARE下,刪除Oracle目錄

      3>刪除硬盤上所有Oracle文件。(1)Oracle安裝文件

      (2)系統(tǒng)目錄下,在Program files文件夾中的Oracle文件

      四、上機作業(yè)

      根據(jù)實驗步驟完成逐個實驗?zāi)繕酥械娜蝿?wù)。

      五、心得體會

      通過這次的實驗,我了解了oracle數(shù)據(jù)庫的情況。懂得了數(shù)據(jù)庫就是把數(shù)據(jù)存儲在一個類似與倉庫的地方,需要用時才從數(shù)據(jù)庫里調(diào)出來。通過上機實踐,知道了裝數(shù)據(jù)庫和卸載數(shù)據(jù)庫,并且學會了怎樣連數(shù)據(jù)庫。

      實驗二:Oracle 10g手工建數(shù)據(jù)庫

      一、實驗?zāi)繕耍?/p>

      安裝Oracle 10g數(shù)據(jù)庫環(huán)境,手工建立數(shù)據(jù)庫;通過Net Configuration Assistant建立監(jiān)聽,使用sqldeveloper連接數(shù)據(jù)庫測試。

      二、實驗學時數(shù) 2學時

      三、實驗步驟和內(nèi)容:

      先安裝好Oracle 10g數(shù)據(jù)庫環(huán)境(不安裝默認數(shù)據(jù)庫)。1.創(chuàng)建好相關(guān)的目錄

      第3頁 假設(shè)oracle安裝在D盤,打開命令行,運行->cmd-> md D:oracleproduct10.2.0adminmydbpfile md D:oracleproduct10.2.0adminmydbbdump md D:oracleproduct10.2.0adminmydbcdump md D:oracleproduct10.2.0adminmydbudump md D:oracleproduct10.2.0oradatamydb md D:oracleproduct10.2.0flash_recovery_areamydb 2.創(chuàng)建數(shù)據(jù)庫實例

      (1)設(shè)置環(huán)境變量SID(注:以后每打開一次CMD都要運行此句)set ORACLE_SID=mydb(2)創(chuàng)建口令文件

      orapwd file=D:oracleproduct10.2.0oradatamydbPWDmydb.ora Password=bhbh entries=5(3)使用oradim命令創(chuàng)建數(shù)據(jù)庫實例mydb oradim-new-sid mydb-startmode manual-pfile “D:oracleproduct10.2.adminmydbpfileinitmydb.ora” 3.用sys賬戶以sysdba的身份登錄 輸入sqlplus sys/bhbh as sysdba 4.創(chuàng)建實例初始化參數(shù)文件initmydb.ora,并將其放到D:oracleproduct10.2.adminmydbpfile路徑下。

      initmydb.ora # Copyright(c)1991, 2001, 2002 by Oracle Corporation

      第4頁 job_queue_processes=10 # Job Queues # Shared Server dispatchers=“(PROTOCOL=TCP)(SERVICE=mydbXDB)” # Miscellaneous compatible=10.2.0.1.0 # Security and Auditing remote_login_passwordfile=EXCLUSIVE # Sort, Hash Joins, Bitmap Indexes pga_aggregate_target=25165824 sort_area_size=65536 # Database Identification db_domain=“" db_name=mydb # File Configuration control_files=(”D:oracleproduct10.2.0oradatamydbcontrol01.ctl“, ”D:oracleproduct10.2.0oradatamydbcontrol02.ctl“,”D:oracleproduct10.2.0oradatamydbcontrol03.ctl“)db_recovery_file_dest=D:oracleproduct10.2.0flash_recovery_area db_recovery_file_dest_size=2147483648 # Pools

      第5頁 java_pool_size=50331648 large_pool_size=8388608 shared_pool_size=83886080 # Cursors and Library Cache open_cursors=300 # System Managed Undo and Rollback Segments undo_management=AUTO undo_tablespace=UNDOTBS1 # Diagnostics and Statistics background_dump_dest=D:oracleproduct10.2.0adminmydbbdump core_dump_dest=D:oracleproduct10.2.0adminmydbcdump user_dump_dest=D:oracleproduct10.2.0adminmydbudump # Processes and Sessions processes=150 # Cache and I/O db_block_size=8192 db_cache_size=25165824 db_file_multiblock_read_count=16

      5.運行命令實例初始化 STARTUP NOMOUNT

      第6頁 pfile=”D:oracleproduct10.2.0adminmydbpfileinitmydb.ora“;6.運行創(chuàng)建數(shù)據(jù)庫SQL命令 CREATE DATABASE mydb MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 DATAFILE 'D:oracleproduct10.2.0oradatamydbsystem01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED SYSAUX DATAFILE 'D:oracleproduct10.2.0oradatamydbsysaux01.dbf' size 20M UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:oracleproduct10.2.0oradatamydbundotbs01.dbf' SIZE 150M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE TEMP1 TEMPFILE 'D:oracleproduct10.2.0oradatamydbtemp01.dbf' SIZE 100M REUSE CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16 LOGFILE 'D:oracleproduct10.2.0oradatamydbredo01.log' SIZE 50M,第7頁

      'D:oracleproduct10.2.0oradatamydbredo02.log' SIZE 50M,'D:oracleproduct10.2.0oradatamydbredo03.log' SIZE 50M;7.創(chuàng)建用戶表空間USERS CREATE TABLESPACE USERS DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' SIZE 128M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED;8.創(chuàng)建數(shù)據(jù)字典(需要幾分鐘,報錯不要緊)

      @D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;9.創(chuàng)建內(nèi)部包(需要幾分鐘,報錯不要緊)

      @D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;10.創(chuàng)建自啟動文件,以便以后不用每次打開數(shù)據(jù)庫實例都要運行一次第5步。

      create spfile FROM pfile='D:oracleproduct10.2.0adminmydbpfileinitmydb.ora';11.重啟數(shù)據(jù)庫,即關(guān)閉再打開。shutdown;connect sys/bhbh as sysdba;startup;12.授權(quán)用戶system為dba,置密碼為bhbh

      第8頁 grant dba to system identified by bhbh;13.使用system用戶登錄 conn system/bhbh;14.為system用戶創(chuàng)建一張KC表 CREATE TABLE KC(KCH CHAR(3)NOT NULL, KCM CHAR(16)NOT NULL, KKXQ NUMBER(1)NOT NULL, XS NUMBER(2)NOT NULL, XF NUMBER(2), CONSTRAINT CH_KKXQ CHECK(kkxq between 1 and 8), CONSTRAINT ”PK_KCH“ PRIMARY KEY(”KCH“))TABLESPACE USERS;15.給KC表插入一條數(shù)據(jù),并提交。

      INSERT INTO KC VALUES('001','數(shù)據(jù)庫',7,68,4);commit;16.測試查詢 Select * from kc;17.使用Net Configuration Assistant添加監(jiān)聽器,并重啟監(jiān)聽器(運行cmd->netca也一樣)。

      第9頁 18.創(chuàng)建Em資料檔案庫(這一步可以省略,只為創(chuàng)建OEM,我們以后學習用不到)。

      cmd->emca-config dbcontrol db-repos create 19.打開SQLDeveloper,并新建數(shù)據(jù)庫連接并測試是否成功。

      20.若之前手工安裝數(shù)據(jù)庫出現(xiàn)差錯,可使用以下命令刪除數(shù)據(jù)庫實例: cmd->oradim-delete-sid mydb 然后刪除第1步所建目錄即可。

      四、上機作業(yè)

      根據(jù)實驗步驟完成逐個實驗?zāi)繕酥械娜蝿?wù)。

      五、心得體會:

      通過這次的實驗,明白了手動建數(shù)據(jù)庫,建表空間等。還知道了運行數(shù)據(jù)庫的命令,授權(quán)命令插表等等。這次學習讓我對數(shù)據(jù)庫的了解和運用又新的體會。

      實驗三:數(shù)據(jù)庫修改

      一、實驗?zāi)繕耍?/p>

      學習簡化實驗二里的實驗步驟,學習修改數(shù)據(jù)庫某些屬性,完成數(shù)據(jù)庫作業(yè)1:手工快速創(chuàng)建數(shù)據(jù)庫實例XSCJ和數(shù)據(jù)庫XSCJ。

      二、實驗學時數(shù) 2學時

      三、實驗步驟和內(nèi)容:

      第10頁 1.安裝好ORACLE 10g,(不需要安裝數(shù)據(jù)庫)。

      2.快速安裝數(shù)據(jù)庫實例mydb和數(shù)據(jù)庫mydb需要3個文件:init.bat,initmydb.ora,ctreatedb.sql。

      (1)雙擊運行init.bat文件;

      (2)將initmydb.ora放到正確的路徑下(參考實驗二);(3)在sqlplus環(huán)境下運行ctreatedb.sql

      3.了解startup nomount,startup mount和startup三種狀態(tài)的使用情況的區(qū)別,即打開實例不裝載數(shù)據(jù)庫、打開實例裝載數(shù)據(jù)庫但不打開數(shù)據(jù)庫和打開實例裝載數(shù)據(jù)庫同時打開數(shù)據(jù)庫。

      (1)運行P45頁例子2-7修改數(shù)據(jù)庫(提示:startup;)ALTER DATABASE mydb DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' RESIZE 200M;(2)運行P45頁例子2-9刪除數(shù)據(jù)庫(提示:startup mount;)取消數(shù)據(jù)庫的受限制狀態(tài):

      alter system enable restricted session;刪除數(shù)據(jù)庫: DROP DATABASE;(3)重建數(shù)據(jù)庫

      sys重新登錄,運行ctreatedb.sql。

      4.刪除數(shù)據(jù)庫實例mydb和數(shù)據(jù)庫mydb。使用命令 oradim-delete-sid mydb 以及刪除相關(guān)文件夾。

      四、上機作業(yè)

      第11頁 適當?shù)匦薷慕◣焖玫降?個文件里的參數(shù),手工安裝數(shù)據(jù)庫實例xscj和數(shù)據(jù)庫xscj(快速安裝),用戶表空間myts。

      五、心得體會

      這次學習,讓我明白了怎樣修改數(shù)據(jù)庫某些屬性,手工快速創(chuàng)建數(shù)據(jù)庫實例XSCJ和數(shù)據(jù)庫XSCJ。DROP DATABASE命令可以刪除數(shù)據(jù)庫…

      實驗四:表的創(chuàng)建、修改和刪除 以及表數(shù)據(jù)的插入、修改和刪除

      一、實驗?zāi)繕耍?/p>

      學習表的創(chuàng)建、插入、修改和刪除以及表數(shù)據(jù)的插入、修改和刪除。

      二、實驗學時數(shù) 4學時

      三、實驗步驟和內(nèi)容: 1.手工創(chuàng)建好數(shù)據(jù)庫XSCJ。

      2.為用戶system創(chuàng)建3個表XSB、KCB和CJB(P66-67 例子3.7-3.9,create table用法,自己照書完成)。

      CREATE TABLE XSB(XH char(6)NOT NULL PRIMARY KEY, XM char(8)NOT NULL, XB char(2)DEFAULT '1' NOT NULL,第12頁

      CSSJ date NOT NULL, ZY char(12)NULL, ZXF number(2)NULL, BZ varchar2(200)NULL)TABLESPACE myts;CREATE TABLE KCB(KCH char(3)NOT NULL PRIMARY KEY,KCM char(16)NOT NULL, KKXQ number(1)NULL, XS number(2)NULL, XF number(1)NOT NULL)TABLESPACE myts;CREATE TABLE CJB(XH CHAR(6)NOT NULL, KCH CHAR(3)NOT NULL, CJ NUMBER(2), XF NUMBER(1), PRIMARY KEY(XH,KCH))TABLESPACE myts;3.學習修改表結(jié)構(gòu)(P70 例子3.11(1)-(3)alter table用法)。(1)在表XSB中增加兩列:JXJ(獎學金等級)、DJSM(獎學金等級說明)。

      第13頁 ALTER TABLE XSB ADD(JXJ number(1), DJSM varchar2(40)DEFAULT '獎金1000元');(2)在表XSB中修改名為DJSM的列的默認值。ALTER TABLE XSB MODIFY(DJSM DEFAULT '獎金800元');(3)在表XSB中刪除名為JXJ和DJSM的列。ALTER TABLE XSB DROP COLUMN JXJ;ALTER TABLE XSB DROP COLUMN DJSM;修改好可用命令:describe table_name;查看。4.刪除表(P71 drop table用法)。DROP TABLE table_name;5.向XSCJ數(shù)據(jù)庫的表XSB中插入一行(P75 例子3.12 insert用法)。INSERT INTO XSB(XH, XM, XB, CSSJ, ZY, ZXF)VALUES('101101', '王林', '男',TO_DATE('19900210','YYYYMMDD'), '計算機', 50);提交數(shù)據(jù): Commit;

      插入后可用命令:select * from table_name;查看。

      第14頁 6.學習刪除表數(shù)據(jù)(P78 DELETE和TRUNCATE的用法)。將XSCJ數(shù)據(jù)庫的XSB表中總學分小于50的行刪除: DELETE FROM XSB WHERE ZXF<50;使用TRUNCATE TABLE語句刪除表中的所有數(shù)據(jù),且不能恢復(fù)。TRUNCATE TABLE table_name;插入后可用命令:select * from table_name;查看。7.為3個表XSB、KCB和CJB插入數(shù)據(jù)(使用insert.sql)8.學習修改表數(shù)據(jù)(P78-79 例子3.17-3.20 UPDATE 用法)。UPDATE XSB SET BZ='三好' WHERE XH='101110';UPDATE XSB SET ZXF=ZXF+10;

      UPDATE XSB SET ZY='通信工程', BZ='轉(zhuǎn)專業(yè)學習', XH='101241' WHERE XM= '羅林琳';

      UPDATE XS

      第15頁 SET ZXF=ZXF+ 4, BZ= '提前修完《數(shù)據(jù)結(jié)構(gòu)》,并獲得學分'

      插入后可用命令:select * from table_name where(條件);查看。9.將數(shù)據(jù)恢復(fù)到剛插入時的狀態(tài)(即把修改過的表清空再插入)。10.了解一下同義詞,知道同義詞的作用(不作重點)。

      四、上機作業(yè)

      手工安裝數(shù)據(jù)庫實例xscj和數(shù)據(jù)庫xscj(快速安裝),用戶表空間myts后,為用戶system創(chuàng)建3個表XSB、KCB和CJB,并插入所有數(shù)據(jù)。

      五、心得體會

      這次學習的表創(chuàng)建,刪除和修改的學習使我對數(shù)據(jù)庫的表的認識更進一步。通過這次的學習,學會對表的創(chuàng)建、修改、刪除。創(chuàng)建表就是按格式寫些代碼;修改(UPDATE+表名+需修改的內(nèi)容)和刪除(DROP TABLE + 表名)就是使用指定的指令對表進行操作,使之完成想要的目的。

      WHERE XM='李明';

      實驗五:數(shù)據(jù)庫查詢練習

      一、實驗?zāi)繕耍?/p>

      學習數(shù)據(jù)庫數(shù)據(jù)查詢語句的基本方法以及視圖的使用方法。

      二、實驗學時數(shù)

      第16頁 6學時

      三、實驗步驟和內(nèi)容:

      課本例子:4.5,4.6,4.8,4.9,4.12(2),4.14,4.15(2),4.16,4.17 4.18,4.19,4.28,4.29,4.37,4.39(1),(3),4.42,4.43,4.46

      (一)學習和掌握課本查詢語句的基本語法和使用方法,完成下面練習(*為必做,@為選做)。

      *

      1、查詢所有計算機系學生的信息。Select * from xsb;*

      2、查詢王同學所修的學號

      Select kch from xsb where xm like '王%';*

      3、查詢出生于85和86年的女同學的學號和姓名。Select xh,xm from xsb where cssj between to_date('19900101','yyyymmdd')and to_date('19911231','yyyymmdd')and xb='女';*

      4、查詢學號為101104所選修的全部課程成績。Select cj from cjb where xh='101104';*

      5、檢索每個學生的姓名和年齡。

      Select xm,to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')as 年齡 from xsb;*

      6、在XS表中檢索學生的姓名和出生年份,輸出的列名為姓名和生年 Select xm,to_char(cssj,'yyyy')as 出生時間 from xsb;*

      7、在XS_KC表中,求選修課程206的學生的學號和得分,并將結(jié)果按分數(shù)降序排序。

      第17頁 Select xh,cj from cjb where kch=’206’ order by cj desc;*

      8、把課程名為軟件工程的成績從學生選課數(shù)據(jù)表XS_KC中刪除。Delete from kcb where kcm=(select kch from kcb where kcm=‘軟件工程’);*

      9、把女同學的成績提高10%。

      Update cjb set cj=cj*1.1 where xh in(select xh from xsb where xb='女')and cj<=90;*

      10、如果學號為061106的學生的成績少于90,則加上10分。Update cjb set cj=cj+10 where xh=’061106’and cj<90;*

      11、查詢學號為061104的學生選修的課程號和課程名。

      Select xh,xm from xsb where xh in(select xh from cjb where kcb=’061104’;

      *

      12、檢索學習課程號為206的學生學號與姓名。Select xm,xh from xsb where kch=’206’;*

      13、檢索‘李明’所選修的全部課程名稱。

      Select kcm from kch where xm=(select xm from xsb where xm=’李明’);*

      14、查找每個同學的學號及選修課程的平均成績情況。Select xh,avg as 課程號平均成績 from cjb;*

      15、求選修了各課程的學生的人數(shù)。

      Select count(distinct xh)as 選修課程總?cè)藬?shù) from cjb;Select kch as課程號 ,count(xh)as 選修人數(shù) group by kch;

      第18頁 *

      16、查詢平均成績都在80分以上的學生學號及平均成績。Select xh,cj from cjb group by xh having avg(cj)>80;Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj);Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj)desc;*

      17、查詢至少有6人選修的課程號。

      Select kch as 課程號 from cjb group by having count(*)>=6;*

      18、檢索選修課程號為101或102的學生學號,姓名和所在系

      Select xh,xm,zy from kch=(select kch from kcb where kch=’101’and kch= ‘102’;

      *

      19、統(tǒng)計被學生選修的課程門數(shù)。Select cjb 每個學生情況以及選修課程情況

      Select * from xsb inner join cjb on xsb.xh=cjb.xh Select xsb.*,cjb.* from xsb,cjb where xsb.xh=cjb.xh *20、查詢沒有選修數(shù)據(jù)庫的學生學號,姓名和專業(yè)名。

      @

      21、取出選修‘操作系統(tǒng)’課程的學生姓名。

      @

      22、檢索至少選修課程“數(shù)據(jù)結(jié)構(gòu)”和“計算機基礎(chǔ)”的學生學號。@

      23、檢索至少選修課程號為101和206的學生姓名。@

      24、列出學生所有可能的選課情況。@

      25、查詢101號課程得最高分的學生的學號

      @

      26、‘計算機基礎(chǔ)’課程得最高分的學生的姓名、性別、所在系。

      第19頁 @

      27、將成績最低的學生的成績加上10分。@

      28、所有成績都在70分以上的學生姓名及所在系。@

      29、列出選修課程超過3門的學生姓名及選修門數(shù)。@30、至少選修了兩門課及以上的學生的姓名和性別 @

      31、檢索至少有兩名男生選修的課程名。

      @

      32、統(tǒng)計每門課程的學生選修人數(shù)(超過10人的課程才統(tǒng)計)。@

      33、計算機基礎(chǔ)成績比離散數(shù)學成績好的學生

      @

      34、列出每個同學的學號、姓名及選修課程的平均成績情況,沒有選修的同學也列出。

      @

      35、列出每個同學的學號及選修課程號,沒有選修的同學也列出

      (二)視圖

      1、創(chuàng)建一個名為zy_view的視圖,該視圖可以用來查看每個系名稱和學生人

      Create or replace view zy_view(專業(yè),專業(yè)人數(shù))as select zy,count(xh)from xsb group by zy;

      2、創(chuàng)建一名為xs_view的視圖,該視圖可以用來查看每個學生的姓名、選修的課程名和成績。查看視圖。

      Create or replace view xs_view(姓名,課程名,成績)as select xm kcm cj from xsb,kcb,cjb where xsb.xh=cjb.xh and cjb.kch=kcb.kch;

      3、創(chuàng)建一個名為kc_view的視圖,該視圖可以用來查看每門課的課程號,課程名,選修人數(shù)和平均成績。

      Create or replace view kc_view(課程號,課程名,選修人數(shù),平均成績)as select kcb.kch,kcm,count(xh),avg(cj)from cjb,kcb where cjb.kch=kcb.kch group by kcb.kch,kcm;

      4、利用kc_view視圖,查看平均成績最高的課程名。

      Select 課程名 from kc_view where平均成績=(select max(平均成績)from kc_view);

      5、修改xs_view視圖,將視圖重定義為每個學生的姓名、選課門數(shù)和平均

      第20頁 成績。

      Create or replace view xs_view(姓名,選課門數(shù),平均成績)as select xm,count(kch),avg(cj)from cjb,xsb where xsb.xh=cjb.xh group by xsb.xh,xm;

      6、刪除zy_view視圖。Drop view zy_view;

      四、上機作業(yè)

      完成實驗內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。

      五、心得體會

      這次學習,我知道了對表的內(nèi)容的查詢,修改的操作,并通過實踐對這次操作命令進一步的熟悉,運用和掌握。還學會了怎么建立視圖,視圖是可以快速的查詢多個表的不同的信息的圖表,它使我們更方便。

      實驗六:索引和約束

      一、實驗?zāi)繕耍?/p>

      (1)掌握索引的使用方法。

      (2)掌握各種約束即數(shù)據(jù)完整性的實現(xiàn)方法。

      二、實驗學時數(shù) 2學時

      三、實驗步驟和內(nèi)容: 1.關(guān)于索引

      第21頁 建立索引的最大好處是快速存取數(shù)據(jù)。

      假設(shè)有10個學生,10門課,則成績表會有100條記錄,對于成績表中某人某門課成績的查找,最壞情況是逐行查找100次,即最后一行。而如果對成績表中的學號和課程號創(chuàng)建索引,則最壞情況只需查找20次(先查找學號,再查找課程號)。

      建立索引的原則:(1)先插數(shù)據(jù)再建索引。

      (2)如果經(jīng)常檢索的內(nèi)容僅為包含大量數(shù)據(jù)的表中少于15%的行,就需要創(chuàng)建索引。

      (3)建立索引的先后順序會影響查詢的性能。2.創(chuàng)建索引表空間 CREATE TABLESPACE INDX DATAFILE 'D:oracleproduct10.2.0oradataxscjindx01.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 1280K MINIMUM EXTENT 128K DEFAULT STORAGE(INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);2.創(chuàng)建索引

      CREATE INDEX kc_name_idx ON KCB(KCM)TABLESPACE ”INDX";3.維護索引

      第22頁 ALTER INDEX kc_name_idx

      4.刪除索引 DROP INDEX kc_idx;5.數(shù)據(jù)完整性

      生活中有些數(shù)據(jù)除了數(shù)據(jù)類型和寬度,還必須要定義其他規(guī)則的,比如學生學號必須是唯一的,不能重復(fù)的;性別必須是男或女,成績必須是0-100的范圍等。因此必須使用一些方法對數(shù)據(jù)進行約束,才得以保持數(shù)據(jù)完整性。

      6.約束

      (1)建表同時添加約束: XSB表: 主鍵為學號。KCB表: 課程號為主鍵,開課學期默認值為1,且只能為1-8。CJB表

      主鍵為學號和課程號,存在外鍵XH參照XSB表的XH,存在外鍵KCH參照KCB表的KCH。(2)建表后時添加約束 XSB表:

      第23頁 RENAME TO kc_idx;性別必須為“男”或者“女”。CJB表:

      成績必須>=0且<=100或者為空。7.插入數(shù)據(jù)驗證。8.思考題

      (1)建KCB表時添加約束,使課程號必須為三位0-9數(shù)字

      (2)建XSB表時添加約束,使學號為101開頭,后三位為0-9數(shù)字

      四、上機作業(yè)

      完成實驗內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。

      五、心得體會

      通過這次的學習,我知道了索引的最大好處是快速存取數(shù)據(jù)。1:先插數(shù)據(jù)再建索引。2:如果經(jīng)常檢索的內(nèi)容僅為包含大量數(shù)據(jù)的表中少于15%的行,就需要創(chuàng)建索引。3:建立索引的先后順序會影響查詢的性能。這3條是建立索引的原則。

      我還知道了可以增加約束,就是制約范圍。

      實驗七:PL/SQL編程

      一、實驗?zāi)繕耍?/p>

      (1)掌握變量、運算符以及控制語句的使用。(2)掌握系統(tǒng)函數(shù)和自定義函數(shù)的使用。

      二、實驗學時數(shù) 4學時

      三、實驗步驟和內(nèi)容: SYS登錄,先導入數(shù)據(jù)字典:

      第24頁 @D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;(1)定義變量

      例子1:定義一個長度為10的變量count,其初始值為1,是varchar2類型。

      count varchar2(10):= '1';例子2:在表XSB中包含XH列,為了聲明一個變量my_xh與XH列具有相同的數(shù)據(jù)類型,聲明時可使用點和%TYPE屬性,格式如下:

      my_xh XSB.XH%TYPE;例子3:可以使用%ROWTYPE屬性聲明描述表的行數(shù)據(jù)的記錄。

      如:聲明一個記錄名為cj_rec,它與CJB表具有相同的名稱和數(shù)據(jù)類型,格式如下:

      DECLARE cj_rec CJB%ROWTYPE;對于用戶定義的記錄,必須聲明自己的域: DECLARE TYPE TimeRec IS RECORD(HH number(2),MM number(2));(2)程序塊

      例子6.6:查詢總學分大于50的學生人數(shù) set serveroutput on DECLARE v_num number(3);

      第25頁 BEGIN SELECT COUNT(*)INTO v_num

      FROM xsb

      WHERE zxf>50;

      IF v_num<>0 THEN dbms_output.put_line('總學分>:50的人數(shù)為:'|| TO_CHAR(v_num));END IF;END;/ 例子6.9:求10的階乘。DECLARE n number:=1;count1 number:=2;BEGIN LOOP

      n:=n*count1;

      count1:=count1+1;

      IF count1>10 THEN

      EXIT;END IF;

      第26頁 END LOOP;DBMS_OUTPUT.PUT_LINE(to_char(n));END;/(3)函數(shù)

      系統(tǒng)函數(shù):例子6.20、6.21、6.22、6.23、6.24 自定義函數(shù):例子6.26、6.27、6.28

      如果李明同學的年齡大于20歲,則顯示“李明同學年齡為X歲”,否則打印“李明同學不符合條件” set serveroutput on declare age number(2);begin select to_char(sysdate, 'yyyy')-to_char(cssj, 'yyyy')into age from xsb where xm='李明';if age>20 then dbms_output.put_line('李明同學年齡為'||to_char(age)||'歲');else dbms_output.put_line('李明同學不符合條件');end if;end;/

      2.計算1+3+5+……+99的和,并顯示結(jié)果。

      declare s number:=0;i number:=1;begin loop

      第27頁 s:=s+i;i:=i+2;exit when i>99;end loop;dbms_output.put_line(to_char(s));end;/

      3.編寫一個函數(shù)f_age,可以在xs表中根據(jù)姓名求出某人的年齡。

      create or replace function f_age(sname in char)return number as age number;begin select to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')into age from xsb where xm=sname;return(age);end;/

      4.改寫第1題的程序塊,調(diào)用函數(shù)f_age來求年齡。set serveroutput on;declare age number(2);begin age:=f_age('李明');if age>20 then dbms_output.put_line('李明同學年齡為'||to_char(age)||'歲');else dbms_output.put_line('李明同學不符合條件');end if;end;/

      第28頁

      四、上機作業(yè)

      完成實驗內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。

      五、心得體會

      通過這次的學習,學會了用sql語言編寫簡單的程序,定義和調(diào)用簡單函數(shù)。在此基礎(chǔ)上還鞏固了sql語句查詢的方法。在以后的學習中要多加理解,上機練習。

      實驗八:游標與存儲過程

      一、實驗?zāi)繕耍?/p>

      (1)掌握游標的使用方法。(2)掌握存儲過程的使用方法。

      二、實驗學時數(shù) 6學時

      三、實驗步驟和內(nèi)容: 游標 例子:

      set serveroutput on DECLARE v_xh char(6);v_zxf number(2);CURSOR XS_CUR3

      第29頁 IS SELECT XH,ZXF FROM XSB WHERE ZYM='計算機';BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_zxf;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_zxf));FETCH XS_CUR3 INTO v_xh,v_zxf;END LOOP;CLOSE XS_CUR3;END;1.使用游標,將平均分大于75分的學生的學號、姓名、平均分逐行輸出。

      set serveroutput on DECLARE v_xh char(12);v_xm char(12);v_cj number(38);CURSOR XS_CUR3 IS SELECT CJB.XH,XSB.XM,avg(CJ)FROM XSB,CJB WHERE xsb.xh=cjb.xh group by CJB.XH,XSB.XM having avg(cj)>75;

      第30頁 BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_xm)||v_cj);FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;END LOOP;CLOSE XS_CUR3;END;存儲過程 例子1:

      CREATE OR REPLACE PROCEDURE update_info(xname in char)AS xf number;BEGIN SELECT ZXF INTO xf FROM XS WHERE XM=xname;IF XF>60 THEN UPDATE XSB SET BZ='三好學生' WHERE XM= xname;

      第31頁

      END IF;IF XF<35 THEN UPDATE XS SET BZ='學分未修滿' WHERE XM=xname;END IF;END update_info;執(zhí)行:

      (1)EXECUTE update_info('李明');(2)begin update_info('李明');end;例子2: CREATE OR REPLACE PROCEDURE count_grade(zym in char,person_num out number)AS BEGIN

      SELECT COUNT(XH)

      INTO person_num

      FROM XS WHERE ZYM=zym;END count_grade;

      第32頁 執(zhí)行:

      set serveroutput on DECLARE v_num number;BEGIN count_grade('計算機',v_num);dbms_output.put_line(v_num);END;/ 1.創(chuàng)建一個存儲過程p_delete可以刪除CJB表的信息。CREATE OR REPLACE PROCEDURE p_delete AS

      BEGIN delete FROM CJB;END p_delete;執(zhí)行

      EXECUTE p_delete;

      2.創(chuàng)建一個存儲過程p_insert,可以給學生表添加一條記錄。CREATE OR REPLACE PROCEDURE p_insert(XH IN CHAR,XM IN CHAR,XB IN CHAR,CSSJ IN DATE,ZY IN CHAR,ZXF IN NUMBER,BZ IN CHAR)AS BEGIN insert into xsb values(XH,XM,XB,CSSJ,ZY,ZXF,BZ);END p_insert;執(zhí)行:

      execute p_insert('102222','羅','女',to_date('19860310','yyyymmdd'),'通信工程',50,'轉(zhuǎn)專業(yè)學習');

      第33頁

      3.創(chuàng)建一個存儲過程p_count,輸入?yún)?shù)為姓名,輸出參數(shù)為選課門數(shù),平均成績。CREATE OR REPLACE PROCEDURE p_count(XNO IN CHAR,K_COUNT OUT NUMBER,AVG_CJ OUT NUMBER)BEGIN SELECT count(kch),avg(cj)INTO K_COUNT,AVG_CJ FROM XSB,CJB WHERE XSB.XH=CJB.XH AND XSB.XH=XNO;END p_count;

      set serveroutput on DECLARE v_num1 number;v_num2 number(4,2);BEGIN p_count('101104',v_num1,v_num2);dbms_output.put_line(v_num1||' '||v_num2);END;

      四、上機作業(yè)

      完成實驗內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。

      五、心得體會

      通過這次學習,我知道了游標和存儲過程,還知道了游標和存儲過程的使用方法,并且掌握了它們的使用方法,為以后打下基礎(chǔ)。

      實驗九:觸發(fā)器、用戶角色創(chuàng)建和邏輯備份

      第34頁

      一、實驗?zāi)繕耍?/p>

      (1)掌握觸發(fā)器的使用。

      (2)掌握用戶和角色的創(chuàng)建和使用。(3)掌握數(shù)據(jù)表的導入導出。

      二、實驗學時數(shù) 2學時

      三、實驗步驟和內(nèi)容:

      (一)觸發(fā)器

      例子1: 假設(shè)XSCJ數(shù)據(jù)庫中增加一個新表XSB_HIS,表結(jié)構(gòu)和表XSB相同,用來存放從XSB表中刪除的記錄。創(chuàng)建一個觸發(fā)器,當XSB表被刪除一行,把刪除的記錄寫到日志表XSB_HIS中。

      CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN INSERT INTO XSB_HIS(XH,XM, XB,CSSJ, ZY, ZXF,BZ)VALUES(:OLD.XH,:OLD.XM, :OLD.XB, :OLD.CSSJ, :OLD.ZY, :OLD.ZXF, :OLD.BZ);END;1.創(chuàng)建一個觸發(fā)器,當XSB表刪除一個人時,把這個人的選課信息也刪掉。CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN

      第35頁 DELETE FROM CJB WHERE XH=:OLD.XH;END del_xs;

      (二)用戶和角色

      1.創(chuàng)建一個用戶tom,密碼為cat。該用戶角色為dba。使用該用戶建表,插入數(shù)據(jù)。

      CREATE USER tom identified by cat default tablespace users;grant dba to tom;導入table.sql和insert.sql drop user tom cascade;

      (三)數(shù)據(jù)庫邏輯備份 exp和imp的使用

      (1)將XSB,KCB和CJB表導出成為DMP文件

      (2)將XSB,KCB和CJB表刪除

      (3)將剛導出DMP文件導入恢復(fù)3個表

      (1)將用戶tom導出成為DMP文件

      (2)將用戶tom刪除再重建

      (3)將剛導出DMP文件導入恢復(fù)用戶tom

      四、上機作業(yè)

      完成實驗內(nèi)容中的任務(wù)。

      五、心得體會

      第36頁 通過這次實踐,我明白了什么是觸發(fā)器,并掌握的它的使用方法,還掌握了用戶和角色的創(chuàng)建和使用。還學會了數(shù)據(jù)表的導入導出,使保存數(shù)據(jù)變的很容易。

      第37頁

      第四篇:ORACLE數(shù)據(jù)庫學習心得

      ORACLE數(shù)據(jù)庫結(jié)課論文

      一個好的程序,必然聯(lián)系著一個龐大的數(shù)據(jù)庫網(wǎng)路...今年我們學習了 oracle數(shù)據(jù)庫這門課程,起初的我,對這個字眼是要多陌生有多陌生,后來上課的時候聽一會老師講課,偶爾再跟上上機課,漸漸的學會了不少東西,但我感覺,我學到的仍是一些皮毛而已,懷著疑惑和求知的心態(tài),我在網(wǎng)上搜索了關(guān)于 oracle數(shù)據(jù)庫的一些知識。

      1.ORACLE的特點: 可移植性 ORACLE采用C語言開發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強的獨立性。從大型機到微機上都可運行ORACLE的產(chǎn)品??稍赨NIX、DOS、Windows等操作系統(tǒng)上運行??杉嫒菪?由于采用了國際標準的數(shù)據(jù)查詢語言SQL,與IBM的SQL/DS、DB2等均兼容。并提供讀取其它數(shù)據(jù)庫文件的間接方法。

      可聯(lián)結(jié)性 對于不同通信協(xié)議,不同機型及不同操作系統(tǒng)組成的網(wǎng)絡(luò)也可以運行ORAˉCLE數(shù)據(jù)庫產(chǎn)品。

      2.ORACLE的總體結(jié)構(gòu)

      (1)ORACLE的文件結(jié)構(gòu) 一個ORACLE數(shù)據(jù)庫系統(tǒng)包括以下5類文件:ORACLE RDBMS的代碼文件。

      數(shù)據(jù)文件 一個數(shù)據(jù)庫可有一個或多個數(shù)據(jù)文件,每個數(shù)據(jù)文件可以存有一個或多個表、視圖、索引等信息。

      日志文件 須有兩個或兩個以上,用來記錄所有數(shù)據(jù)庫的變化,用于數(shù)據(jù)庫的恢復(fù)??刂莆募?可以有備份,采用多個備份控制文件是為了防止控制文件的損壞。參數(shù)文件 含有數(shù)據(jù)庫例程起時所需的配置參數(shù)。

      (2)ORACLE的內(nèi)存結(jié)構(gòu) 一個ORACLE例程擁有一個系統(tǒng)全程區(qū)(SGA)和一組程序全程區(qū)(PGA)。

      SGA(System Global Area)包括數(shù)據(jù)庫緩沖區(qū)、日志緩沖區(qū)及共享區(qū)域。

      PGA(Program Global Area)是每一個Server進程有一個。一個Server進程起動時,就為其分配一個PGA區(qū),以存放數(shù)據(jù)及控制信息。

      (3)ORACLE的進程結(jié)構(gòu)ORACLE包括三類進程: ①用戶進程 用來執(zhí)行用戶應(yīng)用程序的。

      ②服務(wù)進程 處理與之相連的一組用戶進程的請求。

      ③后臺進程 ORACLE為每一個數(shù)據(jù)庫例程創(chuàng)建一組后臺進程,它為所有的用戶進程服務(wù),其中包括: DBWR(Database Writer)進程,負責把已修改的數(shù)據(jù)塊從數(shù)據(jù)庫緩沖區(qū)寫到數(shù)據(jù)庫中。LGWR(Log Writer)進程,負責把日志從SGA中的緩沖區(qū)中寫到日志文件中。

      SMON(System Moniter)進程,該進程有規(guī)律地掃描SAG進程信息,注銷失敗的數(shù)據(jù)庫例程,回收不再使用的內(nèi)存空間。PMON(Process Moniter)進程,當一用戶進程異常結(jié)束時,該進程負責恢復(fù)未完成的事務(wù),注銷失敗的用戶進程,釋放用戶進程占用的資源。ARCH(ARCHIVER)進程。每當聯(lián)機日志文件寫滿時,該進程將其拷貝到歸檔存儲設(shè)備上。另外還包括分布式DB中事務(wù)恢復(fù)進程RECO和對服務(wù)進程與用戶進程進行匹配的Dnnn進程等。

      3.ORACLE的邏輯結(jié)構(gòu)

      構(gòu)成ORACLE的數(shù)據(jù)庫的邏輯結(jié)構(gòu)包括:(1)表空間

      (2)5種類型的段(segment)

      ①數(shù)據(jù)段;②索引段;③回滾(rollbock)段;④臨時段;⑤自舉(bootstrap)段。

      段的分配單位叫范圍(Extent)

      表空間(Tablespace)一個數(shù)據(jù)庫劃分成的若干邏輯部分稱為表空間。一個數(shù)據(jù)庫可以有一個或多個表空間,初始的表空間命名為SYSTEM,每一個邏輯表空間對應(yīng)于一個或多個物理文件。DBA使用表空間做以下工作: 控制數(shù)據(jù)庫對象,如表、索引和臨時段的空間分配。為數(shù)據(jù)庫用戶設(shè)置空間配額。

      利用個別表空間的在線或離線,控制數(shù)據(jù)的可用性。后備或恢復(fù)數(shù)據(jù)。

      通過分配空間,以改進性能。

      在每個數(shù)據(jù)庫中都存在SYSTEM表空間,它在建立數(shù)據(jù)庫時自動建立。在該表空間中,包含數(shù)據(jù)庫的數(shù)據(jù)字典,其中存儲全部數(shù)據(jù)庫對象的名字和位置。SYSTEM表空間總是在線的,像其它表空間一樣,可以通過增加新的數(shù)據(jù)庫文件來擴大。一個表空間可包含許多表和索引。但一個表和索引不能跨越表空間,可跨越組成表空間的文件。在DB的打開的情況下,DBA利用ALTER TABLESPACE語句,可以實施表空間的在線或離線。SYSTEM表空間必須在線。表空間離線有下列原因: 一般為了使部分數(shù)據(jù)庫不能使用,而允許正常存取數(shù)據(jù)庫其余部分。執(zhí)行表空間離線備份。

      一個離線的表空間,不能被應(yīng)用用戶讀或編輯。

      可以增加數(shù)據(jù)文件擴大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫容量增大,或分配空間給某個應(yīng)用。使用ALFER TABLESPACE ADD FILE語句將另一個數(shù)據(jù)文件加入到已存在表空間中。使用CREATE TABLESPACE語句可建立一個新的表空間。段(segment)表空間中的全部數(shù)據(jù)存儲在以段劃分的數(shù)據(jù)庫空間中。一個段是分配給數(shù)據(jù)庫用于數(shù)據(jù)存儲的范圍的集合。數(shù)據(jù)可以是表、索引或RDBMS所需要的臨時數(shù)據(jù)。段是表空間的下一個邏輯存儲的級別。一個段不能跨越一個表空間,但可跨越表空間內(nèi)的文件。一個數(shù)據(jù)庫最多需要五種段類型: 數(shù)據(jù)段 一個包含一個表(或聚集)的全部數(shù)據(jù),一個表(或聚集)總有一個單個數(shù)據(jù)段。

      索引段 一個索引段包含對一個表(或聚集)建立的一個索引的全部索引數(shù)據(jù)。一個表可以有一個、多個或者沒有索引段,取決于它所擁有的索引個數(shù)。一個聚集必須至少有一個索引段,即在聚集碼上建立聚集索引。

      回滾段 每個DB有一個或多個回滾段。一個回滾段是DB的一部分,它記錄在某一情況下被撤消的動作?;貪L段用于事務(wù)控制和恢復(fù)。

      臨時段 在處理查詢時,ORACLE需要臨時工作空間,用于存儲語句處理的中間結(jié)果,這個區(qū)稱為臨時段。

      自舉段 自舉段在SYSTEM表空間中,在數(shù)據(jù)庫建立時建立。它包括數(shù)據(jù)字典定義,在數(shù)據(jù)庫打開時裝入。

      4.用戶數(shù)據(jù)庫對象

      由用戶建立的對象駐留在表空間中,含有真正的數(shù)據(jù)。數(shù)據(jù)庫對象有表、視圖、聚集、索引、偽列和序號生成器。

      (1)聚集(Cluster)聚集是存儲數(shù)據(jù)的一種可選擇的方法。聚集包括存儲在一起的一組表,它們共享公共列并經(jīng)常一起使用。由于內(nèi)容相關(guān)并且物理地存儲在一起,存取時間得到改進,存儲空間可以減少。聚集是一種優(yōu)化措施。

      聚集對性能的改進,依賴于數(shù)據(jù)的分布和SQL操作的內(nèi)容。特別是使用聚集對連接非常有利??梢悦黠@地提高連接的速度。建立聚集命令的基本格式: SQL>CREATE CLUSTER〈聚集名〉(列定義[,…]);利用聚集建立表命令基本格式: SQL>CREATE TABLE〈新表名〉(列定義[,…]CLUSTER〈聚集名〉(聚集列);在聚集碼上必須建立一個聚集索引,對于每一數(shù)據(jù)塊上每個聚集碼值有一索引項。這個索引必須在DML語句對聚集表操作前建立。建立索引的語句是:CREATE INDEX索引名ON CLUSTER聚集名;(2)序號生成器 序號(SEQUENCE)生成器為表中的單列或多列生成順序號。利用序號可自動地生成唯一主碼。使用SQL語句定義序號,給出一些信息(如序號名、是升序或降序、每個序號間的間隔和其它信息)。所有序號存儲在數(shù)據(jù)字典表中。

      所有序號定義存儲在數(shù)據(jù)字典的SEQUENCE表中。用戶可以通過字典視圖

      USER-SE-QUENCES、ALL-SEQUENCES

      和DBA-SEQUENCES查詢和存取。建立序號生成器的語句是: CREATE SEQUENCE序號生成器名 其它選項。

      一旦序號生成器S被定義??捎肧.Currval來引用S序號生成器的當前值。用S.nextval產(chǎn)生下一個新的序號并加以引用。

      (3)偽列 偽列的行為像表的一列,但不真正存在于表中,在查詢時可引用偽列,但偽列不能插入、刪除或修改。

      5.數(shù)據(jù)字典

      數(shù)據(jù)字典ORACLE RDBMS最重要的部分之一。數(shù)據(jù)字典含有一組系統(tǒng)定義的表,只能讀,是關(guān)于數(shù)據(jù)庫的引用指南。它可提供以下信息:ORACLE用戶的用戶名;每個用戶被授予的權(quán)限和角色;實體的名字和定義;完整性約束 為數(shù)據(jù)庫實體分配的空間;通用的數(shù)據(jù)庫結(jié)構(gòu);審計信息;觸發(fā)子程序等的存儲。數(shù)據(jù)字典是以表和視圖構(gòu)成的,像其它數(shù)據(jù)庫數(shù)據(jù)一樣,可用SQL語言查詢數(shù)據(jù)字典。

      數(shù)據(jù)字典在DB建立時建立。每當DB進入操作,數(shù)據(jù)字典就由ORACLE RDBMS負責修改。數(shù)據(jù)庫建立時有兩個默認DBA用戶:SYS、SYSTEM。SYS持有基本表中的數(shù)據(jù)。數(shù)據(jù)字典包含一組基表和相關(guān)的視圖,可分為以下幾類: 類

      描 述

      DBA-××× 只有DBA可存取的視圖,給出數(shù)據(jù)庫中定義的任何實體的信息

      USER-××× 對任何用戶可用的視圖,給出他們自己的實體的信息

      ALL-×××

      對任何用戶可用的視圖,給出用戶可存取的所有實體的信息

      其中×××代表表名或視圖名

      下面列出的是一些常用的表或視圖的名稱。(1)DTAB 描述了組或數(shù)據(jù)字典的所有表。(2)TAB 用戶建的所有基本表、視圖和同義詞。(3)COL 用戶創(chuàng)建基本表的所有列的信息。

      (4)SYNONYMS 用戶可存取的同義名詞、專用名和公用名。(5)CATALOG 用戶可存取的表、視圖、同義詞、序列。(6)CONSTRAINTS 用戶可存取的約束。(7)INDEXES 用戶可存取的表和聚集的序列。(8)OBJECTS 用戶可存取的對象。(9)TABLES 用戶可存取的表。(10)USERS 查看當前全部用戶。(11)VIEWS 查看用戶可存取的視圖。

      (12)SYSTABAUTH 用戶對數(shù)據(jù)對象的使用權(quán)限??梢杂肧QL>SELECT*FROM〈字典表名或視圖名〉WHERE〈條件〉來讀取有關(guān)信息。

      可以用SQL>DESCRIBE〈表名〉來查看表的結(jié)構(gòu)定義。但是數(shù)據(jù)庫字典的結(jié)構(gòu)不可改。用DESCRIBE命令還可以查看視圖及過程的定義。

      6.ORACLE的SQL、PL/SQL與SQL*PLUS 作為ORACLE數(shù)據(jù)庫核心的SQL語言是ANSI和ISO的標準SQL的擴充。用來存儲、檢索和維護數(shù)據(jù)庫中的信息,并控制對數(shù)據(jù)庫的存取事務(wù)。由于RDBMS執(zhí)行SQL語句時,是一次只執(zhí)行一條語句,它是非過程化的。這就使得單條的SQL語句使用方便,功能強大。用戶只需說明操作目的,不必關(guān)心具體操作的實現(xiàn)方法。

      但在實際數(shù)據(jù)庫應(yīng)用開發(fā)中,往往要依據(jù)前一步對數(shù)據(jù)庫操作的結(jié)果或上一個事務(wù)提交的情況來確定下一步的操作。故ORACLE推出了一種PL/SQL工具,它擴充了SQL語句,使之具有可進行過程化編程的能力,如循環(huán)、分支功能。PL/SQL可支持變量和常量的使用。例如在SELECT查詢語句的where子句中可以使用變量來書寫條件表達式。SQL*PLUS是ORACLE用來存儲、查詢、操縱、控制和報告數(shù)據(jù)庫中信息的一個交互式工具。它是一種集編輯、調(diào)試、運行于一體的開發(fā)環(huán)境。在SQL*PLUS的這種運行環(huán)境下,既可以使用SQL命令、PL/SQL語句、及SQL*PLUS自己提供的命令,又可以運行由上述三類命令(或語句)編輯而成的命令文件。SQL*PLUS提供的附加命令主要用來編輯、運行上述三類命令及命令文件和對查詢結(jié)果進行格式化輸出等功能。

      7.數(shù)據(jù)庫系統(tǒng)的管理

      ORACLE作為一個大型的數(shù)據(jù)系統(tǒng),通常包含很多用戶的數(shù)據(jù)。在應(yīng)用開發(fā)過程中,有許許多多的各類人員進行開發(fā)和應(yīng)用。所以必須要求有人對數(shù)據(jù)庫系統(tǒng)進行臨時管理,并進行數(shù)據(jù)的備份等工作。這種人被稱為數(shù)據(jù)庫管理員(Data Base Administrator)。他們必須理解數(shù)據(jù)庫系統(tǒng)管理,清楚數(shù)據(jù)庫包含的數(shù)據(jù)內(nèi)容、運行狀況等。

      一般說來,DBA不是指具體的人,而是指對數(shù)據(jù)庫可以行使DBA特權(quán)的用戶。DBA具有如下責任:(1)ORACLE服務(wù)器和客戶工作站軟件的安裝和升級;(2)創(chuàng)建基本的數(shù)據(jù)庫存儲結(jié)構(gòu)(表空間);(3)創(chuàng)建基本的數(shù)據(jù)庫客體(表、視圖、索引);(4)修改數(shù)據(jù)庫結(jié)構(gòu);(5)給用戶授權(quán),維護系統(tǒng)安全;(6)控制和管理用戶對數(shù)據(jù)庫的訪問;(7)監(jiān)視和優(yōu)化數(shù)據(jù)庫的性能;(8)計算數(shù)據(jù)庫信息的后備和恢復(fù);(9)后備和恢復(fù)數(shù)據(jù)庫;(10)構(gòu)造ORACLE服務(wù)器,如創(chuàng)建數(shù)據(jù)庫鏈、客體同義詞等。而應(yīng)用開發(fā)人員須完成:(1)應(yīng)用程序設(shè)計;(2)應(yīng)用的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計和修改;(3)為DBA提供必要的信息;(4)完成應(yīng)用程序的開發(fā)。

      看了許多關(guān)于ORACLE的知識論壇,總算是對ORACLE有個整體的認識,不僅僅是拘泥于課堂上學習的知識而已,雖然自己對ORACLE學習并不是多么的透徹,但是總歸多接觸點新的東西總是好的。

      這一個學期,也是臨近畢業(yè)的時候了,很感謝賈老師的嚴格要求,讓我在學習上有了很大的進步,同時也改掉了一些惰性,能積極的投入到學習中去了,不懂就大膽的問同學,請學習好的同學幫助講解,最后,真心的祝福賈老師工作順利,身體健康!

      第五篇:Oracle數(shù)據(jù)庫總結(jié)范文

      創(chuàng)建表及命名規(guī)則?

      表名和列名:

      必須以字母開頭 必須在1–30個字符之間

      必須只能包含A–Z, a–z, 0–9, _, $, 和# 必須不能和用戶定義的其他對象重名 必須不能是Oracle 的保留字 Oracle默認存儲是都存為大寫

      增刪改查語法?

      增加: 例如:使用INSERT語句往customers表中插入數(shù)據(jù),指定相關(guān)列和值 INSERT INTO customers(customer_id, first_name, last_name, dob, phone)VALUES(6, 'Fred', 'Brown', '01-1月-1970', '800-555-1215');

      如果為表所有列都指定值,那么可以忽略列清單

      INSERT INTO customersVALUES(6, 'Fred', 'Brown', '01-1月-1970', '800-555-1215');

      可以使用NULL為某些列指定空值

      INSERT INTO customersVALUES(8, 'Sophie', 'White', NULL, NULL);

      查詢:select * fromcustomers;或者select字段 fromcustomerswhere條件 刪除:deletefromcustomerswhere條件

      更改:update customersset name = 'xiaoming',age = ‘16’(更改多個字段時候用逗號隔開)where 條件

      對查詢結(jié)果進行排序?

      語句:select * fromcustomersorderby字段 desc;

      (asc(升序),desc(降序)如果不寫,默認升序)

      NULL值了解么?

      NULL值表示未知的值。它是一個特殊的值,但并不是空字符串,NULL值表示該列是未知的。當某些查詢語句在輸出結(jié)果列上看不到值的時候,可能就是NULL值

      NVL()和NVL2():

      NULL值被查詢出來的時候沒有顯示信息,如何告知用戶這是空字符串還是NULL,這可以通過NVL()函數(shù)來進行處理

      NVL(x,value)是有value顯示本身,null顯示為替換的value NVL2(x,value1,value2)是如果x不為NULL值,返回value1,否則返回value2 例程:

      select name,nvl2(email,'已知','未知')from student;【代碼含義:代表如果email字段中有值,則顯示已知,null則顯示未知,如果想顯示本來的查詢結(jié)果select name,nvl(email,'未知')from student;】 update student set name = replace(name,'小','大');【代碼含義:代表將STUDENT表中NAME 字段中如果含有小字,那么就將小字替換為大字(操作的不是顯示結(jié)果,而是將表中數(shù)據(jù)進行更改)】

      Oracle中的簡單函數(shù)?

      字符串函數(shù)

      ? concat:將x和y拼接起來,并返回新字符串

      例程:

      select concat(first_name,'-'||last_name)姓名 from customers;? Instr字符查找,從1開始。

      select instr('asdbcrdbewqrbmde','b')from dual;select instr('asdbcrdbewqrbmde','b',5,2)from dual;【代表從第5個字符開始,第二個b所在的位置】

      ? Ltrim : LTRIM(x,[trim_string])從x字符串左側(cè)去除所有的trim_string字符串,如果沒有指定trim_string字符串,則默認為去除左側(cè)空白字符

      ? Rtrim RTRIM(x,[trim_string])從x字符串右側(cè)去除所有的trim_string字符串,如果沒有指定trim_string字符串,則默認為去除右側(cè)空白字符 ? Trim TRIM(trim_string FROM x)從x字符串兩側(cè)去除trim_string字符串

      ? Replace REPLACE(x, search_string, replace_string)從字符串x中搜索search_string字符串,并使用replace_string字符串替換。用select執(zhí)行并不會修改數(shù)據(jù)庫中原始值,但是用update執(zhí)行可以修改。

      ? Substr SUBSTR(x, start,[length])返回字符串中的指定的字符,這些字符從字符串的第start個位置開始,長度為length個字符;如果start是負數(shù),則從x字符串的末尾開始算起;如果length省略,則將返回一直到字符串末尾的所有字符

      例程:

      select substr('abcd月fg',4,2)from dual;(結(jié)果:d月)select substr('abcdefg',-2)from dual;(結(jié)果:fq)

      日期函數(shù)

      ? Sysdate 例程:

      Selectsysdatefromdual;

      Select to_char(sysdate, 'yyyy-mm-dd-hh-mm-ss')from dual;

      ? Add_months(d1,n1)? last_day():

      轉(zhuǎn)換函數(shù)

      ? To_char TO_CHAR(x,[ format])將x轉(zhuǎn)化為字符串。format為轉(zhuǎn)換的格式,可以為數(shù)字格式或日期格式

      select to_char(sysdate,'yyyy-mm-dd')from dual;【一般在查詢時候使用,使返回的值成為指定格式】

      ? to_date TO_DATE(x,[format])將x字符串轉(zhuǎn)換為日期

      insert into student values(seq_stu.nextval,'小明',to_date('1992-2-18','yyyy-mm-dd'),default,'北京',null);【一般在添加使用】 返回所查詢的值中最后一個日期數(shù)據(jù)。

      聚合函數(shù)

      ? Avg:平均數(shù) ? Sum:求和 ? Max:最大值 ? Min:最小值 ? Count:返回統(tǒng)計的行數(shù) ? Round:四舍五入

      例程:

      select round(avg(bid),1)from bug;分組了解么?

      有時需要對表中的行進行分組,然后統(tǒng)計每組的信息,可以使用GROUP BY進行分組,然后再對每組進行統(tǒng)計。

      (1)可以使用GROUP BY對多個列進行分組

      例:

      SELECT product_id, avg(customer_id)FROM purchases GROUP BY product_id;

      (2)可以對分組后的行使用聚集函數(shù),聚集函數(shù)會統(tǒng)計每組中的值,對于每組分別統(tǒng)計后返回一個值 例:

      SELECT

      product_type_id,BY

      COUNT(ROWID)FROM

      BY

      productsGROUP product_type_id;注意:

      product_type_idORDER a)如果查詢中使用了聚集函數(shù),被查詢的列未使用聚集函數(shù)處理,那么這些列必須出現(xiàn)在GROUP BY子句后,否則,會提示ORA-00937錯誤

      b)不能使用聚集函數(shù)作為WHERE子句的篩選條件,否則,會提示ORA-00934錯誤

      c)可以使用HAVING子句過濾分組后的行

      SELECT...FROM...WHERE GROUP BY...HAVING...ORDER BY...;(GROUP BY使用時可以不使用HAVING,但是使用HAVING時必須有GROUP BY才有意義)

      (3)同時使用WHERE, GROUP BY和HAVING

      a)首先,執(zhí)行WHERE篩選掉不符合條件的行 b)然后,將符合條件的行使用GROUP BY進行分組 c)最后,使用HAVING對分組統(tǒng)計的結(jié)果進行再次篩選 例:

      SELECT product_type_id, AVG(price)FROM products

      WHERE price < 15

      GROUP BY product_type_id HAVING AVG(price)> 13 ORDER BY product_type_id;

      表的約束條件?

      目的:

      確保表中數(shù)據(jù)的完整性。

      常用的約束類型: 主鍵約束(PRIMARY KEY):要求主鍵列數(shù)據(jù)唯一,并且不允許為空 非空約束(NOT NULL):指定的列的值不允許為空

      唯一鍵約束(UNIQUE):要求該列唯一,允許為空,但只能出現(xiàn)一個空

      檢查約束(CHECK):指定表中一列或多列可以接受的數(shù)據(jù)值格式 默認約束(DEFAULT):指定某列的默認值

      外鍵約束(FOREIGN KEY):用于建立和加強兩個表數(shù)據(jù)之間連接的一

      列或多列。通過將表中的主鍵列添加到另一個表中??梢詣?chuàng)建兩個表之間的連接。這個主鍵的列就稱為第二個表的外鍵。外鍵約束就可以確保添加到外鍵表中的任何行都在主表中都存在相應(yīng)的行

      多表查詢?

      不同的數(shù)據(jù)存儲在不同的表中,通常要查詢多張表才能找到需要的數(shù)據(jù)

      例程: SELECT products.name, product_types.name FROM products, product_types WHERE

      products.product_type_id

      = product_types.product_type_id AND products.product_id = 3;

      products表和product_types表相關(guān)字段會用在SELECT語句及WHERE子句上,可以給表起別名,提高代碼可讀性、降低書寫難度 例程:

      SELECT p.name, pt.name FROM products p, product_types pt WHERE p.product_type_id = pt.product_type_id AND p.product_id = 3 注意:

      如果查詢兩張表,并且沒有定義連接條件,那么查詢的結(jié)果集是兩表相乘的結(jié)果,這樣的情況稱之為笛卡爾乘積。總結(jié):多表查詢WHERE時,連接次數(shù)=查詢時連接表的數(shù)量-1

      常見的三種連接類型:

      內(nèi)連接:

      內(nèi)連接返回的行只有滿足連接條件才會返回。如果連接條件的列中有NULL值,那么該行則不會返回 外連接:

      外連接返回的行滿足連接條件,也包括在連接條件的列包含空值的行

      自連接:

      連接的表為同一張表

      子查詢?

      子查詢是嵌入到另一個SELECT語句中的一個SELECT語句。通過使用子查詢,可以使用簡單的語句組成強大的語句。當需要從表中選擇行,而選擇條件卻取決于該表自身中的數(shù)據(jù)時,子查詢非常有用。

      單行子查詢:(1)可以將另外一個查詢作為WHERE子句的子查詢

      例:查詢尾名是‘Brown’的首名和尾名

      SELECT first_name, last_name FROM customers

      WHERE customer_id =

      (SELECT customer_id FROM customers WHERE last_name = 'Brown');(2)在單行子查詢還可以使用其他比較運算符,如<>、<、>、<=和>= 例:查詢價格大于平均價格的商品編號、名稱及價格

      WHERE子句中使用>,以及子查詢中使用AVG()聚集函數(shù)

      SELECT product_id, name, price FROM products WHERE price >(SELECT AVG(price)FROM products);(3)在HAVING子句中使用子查詢

      HAVING是在分組統(tǒng)計后用于過濾行,同樣在HAVING子句后面可以跟子查詢。單行子查詢將返回結(jié)果用于HAVING子句過濾分組統(tǒng)計的行

      例如:查詢平均價格小于最大平均值的商品編號及平均值

      SELECT product_type_id, AVG(price)FROM products GROUP BY product_type_id HAVING AVG(price)<(SELECT MAX(AVG(price))FROM products GROUP BY product_type_id)ORDER BY product_type_id;

      分頁查詢?

      可以通過ROWNUM來實現(xiàn)。

      序列?

      序列是一個數(shù)據(jù)庫對象,用于生成一系列的整數(shù)。

      索引?

      索引是與表關(guān)聯(lián)的可選結(jié)構(gòu)??梢詣?chuàng)建索引以加快對表執(zhí)行SQL語句的速度。就像書的索引可以幫助我們更快速的查找信息一樣,Oracle中的索引也提供了一種更快地訪問表數(shù)據(jù)的途徑。

      視圖?

      視圖是基于一張表或多張表或另外一個視圖的邏輯表。視圖不同于表,視圖本身不包含任何數(shù)據(jù)。表是實際獨立存在的實體,是用于存儲數(shù)據(jù)的基本結(jié)構(gòu)。而視圖只是一種定義,對應(yīng)一個查詢語句。視圖的數(shù)據(jù)都來自于某些表,這些表被稱為基表。數(shù)據(jù)庫中只在數(shù)據(jù)字典中存儲對視圖的定義。

      下載Oracle數(shù)據(jù)庫實驗報告word格式文檔
      下載Oracle數(shù)據(jù)庫實驗報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        ORACLE數(shù)據(jù)庫工作總結(jié)

        2014-2015學年度第一學期ORACLE教學工作總結(jié) 班級:13高軟班 數(shù)據(jù)庫技術(shù)是計算機科學技術(shù)中發(fā)展最快的領(lǐng)域之一,也是應(yīng)用最為廣泛的技術(shù)之一,它已經(jīng)成為計算機信息系統(tǒng)與應(yīng)用的......

        數(shù)據(jù)庫實驗報告

        數(shù)據(jù)庫實驗報告 一、題目要求 某銀行準備開發(fā)一個銀行業(yè)務(wù)管理系統(tǒng),通過調(diào)查,得到以下的主要需求: 銀行有多個支行。各個支行位于某個城市,每個支行有唯一的名字。銀行要監(jiān)控每......

        數(shù)據(jù)庫實驗報告

        實驗4SQL高級應(yīng)用 【實驗?zāi)康摹?1、掌握在SQL SERVER 2005下進行數(shù)據(jù)還原的方法。 2、掌握SQL語句的查詢統(tǒng)計功能和數(shù)據(jù)更改功能。 【實驗內(nèi)容】 1. 還原factory數(shù)據(jù)庫。 2......

        數(shù)據(jù)庫實驗報告

        南華大學 計算機科學與技術(shù)學院 實驗報告 ( 2013 ~2014 學年度 第二學期 ) 課程名稱 實驗名稱 數(shù)據(jù)庫原理與技術(shù) 姓名 張濤 學號 20124350230 專業(yè) 軟件工程 班級 02班 地點......

        數(shù)據(jù)庫實驗報告

        10包三 李雅 100910306 實驗報告 一、 實驗題目: 數(shù)據(jù)庫基本操作實驗 二、 實驗?zāi)康模?掌握數(shù)據(jù)庫的建立、表的設(shè)計基本方法,通過實際操作熟練掌握數(shù)據(jù)庫的基本操作——數(shù)據(jù)的輸......

        數(shù)據(jù)庫實驗報告

        實驗7 索引和數(shù)據(jù)完整性的使用 1、 目的與要求 (1) 掌握索引的使用方法; (2) 掌握數(shù)據(jù)完整性的實現(xiàn)方法; 2、 實驗準備 (1) 了解索引的作用與分類; (2) 掌握索引的創(chuàng)建方法; (3) 理解數(shù)據(jù)......

        數(shù)據(jù)庫實驗報告

        數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計 總結(jié)報告 學院: 軟件學院 專業(yè): 軟件工程 年級: 2009 學號: 20092647 姓名: 李野 1、開發(fā)環(huán)境 Windows7系統(tǒng) 2、DBMS系統(tǒng)架構(gòu) 采用向量的存儲結(jié)構(gòu)存儲數(shù)......

        數(shù)據(jù)庫實驗報告

        課 程 實 驗 報 告 課程名稱: 數(shù)據(jù)庫系統(tǒng)概論專業(yè)班級:計科1207班學號: U201215002 姓名: 李文勇 指導教師:江勝報告日期: 2015年6月8日計算機科學與技術(shù)學院 目 錄 1 實驗一 基......