Oracle資料庫實驗一建立資料庫

来源:https://www.cnblogs.com/swust-rjgc-1705-monitor/archive/2019/10/18/11697681.html
-Advertisement-
Play Games

實驗日期: 2019 年 09 月 24 日 實驗報告日期: 2019 年 09 月 28 日 一、 實驗目的 熟悉oracle環境; 熟練掌握和使用PL-SQL建立資料庫基本表。 使用PL/SQL developer操作資料庫。 熟練掌握SQL 建立關係,及增刪改數據。 二、 實驗環境 Windo ...


期:   2019   09   24  

實驗報告日期:   2019    09   28

 

一、      實驗目的

熟悉oracle環境;

熟練掌握和使用PL-SQL建立資料庫基本表。

使用PL/SQL developer操作資料庫。

熟練掌握SQL 建立關係,及增刪改數據。

二、      實驗環境

Windows10專業版

Oracle database 11g

PL/SQL Developer 13

三、      實驗內容

瞭解SQL PLUS的使用

使用PL/SQL developer的圖形界面,建立圖書管理資料庫orcl中的各個關係

在建立的關係中輸入有效數據

刪除以上各關係

在PL/SQL developer用SQL代碼建立orcl資料庫中各關係

用SQL 代碼完成數據增、刪、改

四、      實驗步驟

  • 以SYSTEM登錄資料庫

打開PL/SQL developer,以用戶:SYSTEM,密碼:orcl,登錄orcl資料庫,如圖1所示:

 

圖1 登錄資料庫

  •  註冊用戶

打開Users文件夾,新建用戶。用戶名:S512017****,密碼定為orcl,並賦予connect和dba許可權。

 

23 註冊新用戶並賦予許可權

  • 重新以新用戶登錄資料庫

       

圖4 以新用戶登錄資料庫

  • 建立資料庫表

打開tables文件夾。建立以下各關係:

圖書分類(圖書分類號,類名)

書目(ISBN, 書名,作者,出版單位,單價,圖書分類號)

圖書(圖書編號,ISBN,是否借出,備註)

讀者 (借書證號,姓名,單位,性別,地址,聯繫電話,身份證編號)

借閱 (借閱流水號,借書證號,圖書編號,借書日期,歸還日期,罰款分類號,備註)

罰款分類(罰款分類號,罰款名稱,罰金)

預約 (預約流水號,借書證號,ISBN,預約時間)

(1)       圖形界面下建立:

 

 

圖5 設定表名

 

 

圖6 設定表的屬性列

 

 

圖7 設置表的主鍵

圖書分類表建立完成,其餘各表的建立同理可建,如下(第一張為表名的設置(Name),接著是模式的設置(Columns),鍵的設置(Keys),約定條件的設置(Check),如果沒有則是不需要定義相關項):

書目:

 

 

圖書:

 

 

 

 

讀者:

 

 

 

 

借閱:

 

 

 

 

罰款分類:

 

 

 

預約:

 

 

(2)       由SQL語句建立:

圖書分類:

create table 圖書分類(

圖書分類號  varchar2(3) primary key,

類名     varchar2(10) not null

);

書目:

create table 書目(

ISBN   varchar2(20) primary key,

書名     varchar2(20) not null,

作者     varchar2(20) not null,

出版單位 varchar2(30),

單價   number(10,2),

圖書分類號  varchar2(3),

foreign key(圖書分類號) references 圖書分類(圖書分類號)

);

圖書:

create table 圖書(

圖書編號   varchar2(7) primary key,

ISBN   varchar2(20),

是否借出   varchar2(2),

備註     varchar2(60),

foreign key(ISBN) references 書目(ISBN),

check (是否借出 = '是' or 是否借出 = '否')

);

讀者:

create table 讀者(

借書證號   varchar2(8) primary key,

姓名     varchar2(10) not null,

單位     varchar2(30),

性別     varchar2(2),

地址     varchar2(30),

聯繫電話   char(11),

身份證編號  varchar2(18),

check (性別 in ('男','女')),

check (regexp_like(聯繫電話,'[0-9]{11}')),

check (regexp_like(身份證編號,'[0-9]{15}')

or regexp_like(身份證編號,'[0-9]{17}[0-9,X]'))

);

借閱:

create table 借閱(

借閱流水號  number primary key,

借書證號   varchar2(8) not null,

圖書編號   varchar2(8) not null,

借書日期   date not null,

歸還日期   date,

罰款分類號 number,

備註    varchar2(60),

foreign key(借書證號) references 讀者(借書證號),

foreign key(圖書編號) references 圖書(圖書編號)

);

罰款分類:

create table 罰款分類(

罰款分類號  number primary key,

罰款名稱   varchar2(8) not null,

罰金     number not null

);

預約:

create table 預約(

預約流水號  number primary key,

借書證號   varchar2(8),

ISBN   varchar2(20),

預約時間   date not null,

foreign key(借書證號) references 讀者(借書證號),

foreign key(ISBN) references 書目(ISBN)

);

  1. 各關係輸入數據如下:

圖書分類(圖書分類號,類名)

圖書分類號

類名

100

文學

200

科技

300

哲學

書目(ISBN, 書名,作者,出版單位,單價,圖書分類號)

ISBN

書名

作者

出版單位

單價

圖書分類號

7040195836

資料庫系統概論

王珊

高等教育出版社

39.00

200

9787508040110

紅樓夢

曹雪芹

人民出版社

20.00

100

9787506336239

紅樓夢

曹雪芹

作家出版社

34.30

100

9787010073750

心學之路

張立文

人民出版社

33.80

300

 

圖書(圖書編號,ISBN,是否借出,備註)

圖書編號

ISBN

是否借出

備註

2001231

7040195836

 

2001232

7040195836

 

1005050

9787506336239

 

1005063

9787508040110

 

3007071

9787010073750

 

讀者 (借書證號,姓名,單位,性別,地址,聯繫電話,身份證編號)

借書證號

姓名

單位

性別

地址

聯繫電話

身份證編號

20051001

王菲

四川綿陽西科大電腦學院

..

20062001

張江

四川綿陽中心醫院

..

20061234

郭敬明

四川江油305

..

..

..

20071235

李曉明

四川成都工商銀行

..

..

..

20081237

趙鑫

四川廣元廣元中學

..

..

..

借閱 (借閱流水號,借書證號,圖書編號,借書日期,歸還日期,罰款分類號,備註)

借閱流水號

借書證號

圖書編號

借書日期

歸還日期

罰款分類號

備註

1

20081237

3007071

2010/09/19

2010/09/20

 

 

2

20071235

1005063

2010/10/20

2011/02/20

1

 

3

20071235

2001232

2011/09/01

 

 

 

4

20061234

1005063

2011/9/20

 

 

 

5

20051001

3007071

2011/9/10

 

 

 

6

20071235

1005050

2011/10/20

2012/02/20

1

 

罰款分類(罰款分類號,罰款名稱,罰金)

罰款分類號

罰款名稱

罰金

1

延期

10

2

損壞

20

3

丟失

50

預約 (預約流水號,借書證號,ISBN,預約時間)

預約流水號

借書證號

ISBN

預約時間

1

20081237

9787508040110

2011/09/11

(1)      對於各表內容的圖形化插入:

如“圖書分類”表的編輯:首先右鍵點擊表格選擇“Edit data”,如下圖:

 

在所給視窗中編輯數據,如下:

 

接著點選綠勾、綠鎖並點擊commit按鈕,則提交成功

 

其餘各表的數據插入如下:

書目:

 

圖書:

 

讀者:

 

借閱:

 

罰款分類:

 

預約:

 

(2)      SQL語句插入:

/*圖書分類*/

insert into 圖書分類 values('100','文學');

insert into 圖書分類 values('200','科技');

insert into 圖書分類 values('300','哲學');

/*書目*/

insert into 書目(ISBN,書名,作者,出版單位,單價,圖書分類號) values ('7040195836','資料庫系統概論','王珊','高等教育出版社',39.00,'200');

insert into 書目(ISBN,書名,作者,出版單位,單價,圖書分類號) values ('9787508040110','紅樓夢','曹雪芹','人民出版社',20.00,'100');

insert into 書目(ISBN,書名,作者,出版單位,單價,圖書分類號) values ('9787506336239','紅樓夢','曹雪芹','作家出版社',34.30,'100');

insert into 書目(ISBN,書名,作者,出版單位,單價,圖書分類號) values ('9787010073750','心學之路','張立文','人民出版社',33.80,'300');

/*圖書*/

insert into 圖書(圖書編號,ISBN,是否借出) values('2001231','7040195836','否');

insert into 圖書(圖書編號,ISBN,是否借出) values('2001232','7040195836','是');

insert into 圖書(圖書編號,ISBN,是否借出) values('1005050','9787506336239','否');

insert into 圖書(圖書編號,ISBN,是否借出) values('1005063','9787508040110','是');

insert into 圖書(圖書編號,ISBN,是否借出) values('3007071','9787010073750','是');

/*讀者*/

insert into 讀者 values('20051001','王菲','四川綿陽西科大電腦學院','女','','','');

insert into 讀者 values('20062001','張江','四川綿陽中心醫院','男','','','');

insert into 讀者 values('20061234','郭敬明','四川江油305','男','','','');

insert into 讀者 values('20071235','李曉明','四川成都工商銀行','男','','','');

insert into 讀者 values('20081237','趙鑫','四川廣元廣元中學','女','','','');

/*罰款分類*/

insert into 罰款分類(罰款分類號,罰款名稱,罰金) values(1,'延期',10);

insert into 罰款分類(罰款分類號,罰款名稱,罰金) values(2,'損壞',20);

insert into 罰款分類(罰款分類號,罰款名稱,罰金) values(3,'丟失',50);

/*借閱*/

insert into 借閱(借閱流水號,借書證號,圖書編號,借書日期,歸還日期) values(1,'20081237','3007071',to_date('2010/09/19','yyyy/mm/dd'),to_date('2019/09/20','yyyy/mm/dd'));

insert into 借閱(借閱流水號,借書證號,圖書編號,借書日期,歸還日期,罰款分類號,備註) values(2,'20071235','1005063',to_date('2010/10/20','yyyy/mm/dd'),to_date('2011/02/20','yyyy/mm/dd'),1,'');

insert into 借閱(借閱流水號,借書證號,圖書編號,借書日期) values(3,'20071235','2001232',to_date('2011/09/01','yyyy/mm/dd'));

insert into 借閱(借閱流水號,借書證號,圖書編號,借書日期) values(4,'20061234','1005063',to_date('2011/9/20','yyyy/mm/dd'));

insert into 借閱(借閱流水號,借書證號,圖書編號,借書日期) values(5,'20051001','3007071',to_date('2011/9/10','yyyy/mm/dd'));

insert into 借閱(借閱流水號,借書證號,圖書編號,借書日期,歸還日期,罰款分類號,備註) values(6,'20071235','1005050',to_date('2011/10/20','yyyy/mm/dd'),to_date('2012/02/20','yyyy/mm/dd'),1,'');

/*預約*/

insert into 預約(預約流水號,借書證號,ISBN,預約時間) values(1,'20081237','9787508040110',to_date('2011/09/11','yyyy/mm/dd'));

 

另外,對於plsqldev時間格式的設定如下:

 

8 設置日期型格式

  1. 使用SQL語句練習表的創建、刪除、修改操作。

新建一個“實驗”表,進行表的創建、刪除、修改的操作:

創建表:

create table 實驗(

實驗編號   varchar2(5) primary key,

實驗名稱   varchar2(30) not null

);

select * from 實驗;

 

修改:

alter table 實驗

modify 實驗名稱 varchar2(40);

select * from 實驗;

(此處“實驗名稱”變數類型變為varchar2(40))

alter table 實驗

add 實驗難度 varchar2(2);

select * from 實驗;

 

刪除:

alter table 實驗

drop column 實驗名稱;

 

select * from 實驗;

drop table 實驗;

(此處將表進行了刪除)

  1. 使用SQL語句練習表中數據的增加、刪除、修改操作。

以上題所建實驗(實驗編號(primary key),實驗名稱(not null),實驗難度)表進行操作。

create table 實驗(

實驗編號   varchar2(5) primary key,

實驗名稱   varchar2(30) not null,

實驗難度   varchar2(2)

);

數據插入:

insert into 實驗 values('19001','建立資料庫','中');

insert into 實驗(實驗名稱,實驗編號) values('刪庫跑路','19002');

結果查看:

 

數據修改:

update 實驗 set 實驗編號 = '19003'

where 實驗名稱 = '刪庫跑路';

 

數據刪除:

delete from 實驗

where 實驗名稱 = '建立資料庫';

 

另外,在本實驗中之過程中也有許多對於數據表模式、數據表數據內容的新增、更改、查詢和刪除操作,進行了大量的練習。

  1. 試根據下麵的完整性約束要求,用SQL對上面已經建立好的資料庫表進行完整性約束定義。

讀者關係中屬性  聯繫電話  取值為11位數字

                身份證編號  取值為18位,並且滿足身份證編號規則

圖書關係中屬性 是否借出  取值為:‘是’或‘否’

借閱關係中屬性 借書日期  取值不為空

   完整性約束如下:

讀者關係中:

電話號碼約束:使第一位為1其餘10位為數字。

check (regexp_like(聯繫電話,'^1[0-9]{10}$'))

         身份證約束:(第一個約束條件使身份證第1位不為0,第7到10位使身份證信息中的出生年份為1900到2099,第11到12位組合為月份01到12月份,且分別分出了31和30天的月份,再使2月份的天數為29天,最後一位約定可以為x和X;第二個約束條件使出生年份不超過2019年)

check (regexp_like(idc,'^[1-9]\d{5}(19|20)\d{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2]\d|30|31)|(04|06|09|11)(0[1-9]|[1-2]\d|30)|02(0[1-9]|[1-2]\d))\d{3}(\d|x|X)$')

and regexp_like(idc,'^\d{6}((19\d{10})|(20(0|1)\d{9}))$'))

 

圖書關係中:

    check (是否借出 = '是' or 是否借出 = '否')

借閱關係中:

    借書日期   date not null

實驗心得與體會

本次實驗是第一次實驗課,在實驗之前我們需要準備好軟體平臺,Oracle database的安裝需要顧及到相應支持的軟體,如.Net Framework 3.5,以及相應註冊表的修改(使資料庫相容在Windows10上),再按照自己的需求進行軟體的安裝。在軟體使用的過程中,我們至少需要簡單瞭解相關服務項控制的是什麼,才能更加方便的使用,為了創建資料庫以及使用SQL語句的便捷性,和與實驗室環境搭配,我們也使用的pl/sql development軟體,用圖形界面的方法方便我們對資料庫的相關操作。

實驗中圖形化界面的使用弄懂了之後,編輯起來是很快,但是總會有一些報錯,由於巨集觀操作數據,並不能很直觀的知道到底是哪裡出了問題,在之後的SQL語句創建資料庫創建表的過程中,相當於重覆著之前的行為,這時候再微觀的構建資料庫中便能更加直觀的發現自己之前的錯誤,加深了自己的印象,自己也發現有沒有理解透徹的知識點,回頭翻書再仔細咀嚼一番,掌握的也更扎實了。

在資料庫構建的時候,主鍵和外鍵的設置在我看來顯得尤為重要,再加上完整性約束,三者在資料庫健壯性中顯得格外突出。我在實驗中便經過了很多相關的坎,從未設置約束和外鍵,到完善約束條件,其中感悟心得挺多的:當你數據插入報錯時,有可能是違反唯一性原則,反覆插入了相同主鍵的數據;有可能是插入的數據外鍵指向的主鍵指定的表中找不到,不存在或者之前插入的值並沒有commit。

這次構建資料庫發生了許多低級的錯誤,給我的警示是,做事要仔細小心,不要冒失冒進,一味的求快可能效率會更低,踏踏實實走好每一步才行。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis 的複製功能分為同步( sync )和命令傳播( command propagate )兩個步驟: 一、同步用於將從伺服器的資料庫狀態更新至主伺服器當前所處的資料庫狀態。 二、命令傳播則用於在主伺服器的資料庫狀態被修改,導致主從伺服器的資料庫狀態出現不一致時,讓主從伺服器的資料庫重新回... ...
  • NameNode && Secondary NameNode工作機制 1)工作流程 2) fsimage和edits NameNode是HDFS的大腦,它維護著整個文件系統的目錄樹,以及目錄樹里所有的文件和目錄,這些信息以倆種文件存儲在文件系統:一種是命名空間鏡像(也稱為文件系統鏡像,File Sy ...
  • 一、下載、安裝 1、下載 (1)下載地址 (2)此處我下載最新版(8.0.18) 2、安裝 (1)解壓、並配置環境變數 step1:右擊“我的電腦”,點擊屬性,選擇高級屬性設置,添加環境變數PATH,將bin目錄下的路徑添加到Path中。 step2:查看當前版本。若成功顯示版本號,則環境變數配置成 ...
  • 之前在腳本中使用sqlldr導入數據時,如果表的數據量較大的話,會使日誌文件變得極大,之後在網上查找了很久,才在一個偶然的機會找到這個參數 silent=all ...
  • 在windows server 2012R2安裝Oracle客戶端或者服務端時,會彈窗報錯INS-13001 環境不滿足最低要求此時可以進行以下操作進行解決 在解壓後的Oracle安裝文件目錄中,找到 stage\cvu\cvu_prereq.xml 文件,修改文件配置如下,複製windows7的配 ...
  • 利用Excel以及word文檔進行操作 將表的欄位以及數據全部放入Excel表中並保存。 在word表中將寫好的sql語句放入文檔,利用郵件--選擇收件人--使用現有列表--(選擇之前做好的Excel表)--插入合併域(添加在sql語句中的條件中) 完成併合並(編輯單個文檔選擇全部)--完成(不過為 ...
  • 前言: 日常工作或學習過程中,我們可能會經常用到某些SQL,建議大家多多整理記錄下這些常用的SQL,這樣後續用到會方便很多。筆者在工作及學習過程中也整理了下個人常用的SQL,現在分享給你!可能有些SQL你還不常用,但還是希望對你有所幫助,說不定某日有需求就可以用到。 註:下文分享的SQL適用於MyS ...
  • Redis支持的鍵值數據類型如下: 字元串類型 散列類型 列表類型 集合類型 有序集合類型 一、字元串類型 字元串類型是Redis中最基本的數據類型,它能存儲任何形式的字元串,包括二進位數據。一個字元串類型鍵允許存儲的數據最大容量是512MB. 1、字元串常用命令 1.1 賦值與取值 SET key ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...