亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

Oracle數(shù)據(jù)庫學(xué)習(xí)(一)--數(shù)據(jù)庫原理及SQL

來源:fudapeng7 發(fā)布時間:2018-12-05 11:39:49 閱讀量:998

1. 數(shù)據(jù)庫原理

1.1. 數(shù)據(jù)庫簡介

1.1.1. 文件存儲

對數(shù)據(jù)的存儲需求一直存在。保存數(shù)據(jù)的方式,經(jīng)歷了手工管理、文件管理等階段,直至數(shù)據(jù)庫管理階段。


文件存儲方式保存數(shù)據(jù)的弊端:


缺乏對數(shù)據(jù)的整體管理,數(shù)據(jù)不便修改;

不利于數(shù)據(jù)分析和共享;

數(shù)據(jù)量急劇增長,大量數(shù)據(jù)不可能長期保存在文件中。

數(shù)據(jù)庫應(yīng)運而生,是人們存放數(shù)據(jù)、訪問數(shù)據(jù)、操作數(shù)據(jù)的存儲倉庫。


1.1.2. DB和DBMS

數(shù)據(jù)庫(Database,簡稱DB)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。


數(shù)據(jù)庫管理系統(tǒng)(Database Management System,簡稱DBMS):管理數(shù)據(jù)庫的軟件。


數(shù)據(jù)庫建立了數(shù)據(jù)之間的聯(lián)系,使用結(jié)構(gòu)化的方式組織和處理數(shù)據(jù),能夠統(tǒng)一、集中及獨立的管理數(shù)據(jù),使數(shù)據(jù)的存取獨立于使用數(shù)據(jù)的程序,實現(xiàn)了數(shù)據(jù)共享。


數(shù)據(jù)庫的典型特征包括:數(shù)據(jù)的結(jié)構(gòu)化,數(shù)據(jù)間的共享,減少數(shù)據(jù)的冗余度,以及數(shù)據(jù)的獨立性。


數(shù)據(jù)庫成為數(shù)據(jù)的知識倉庫,并對這些數(shù)據(jù)的存儲、訪問、安全、數(shù)據(jù)一致性、并發(fā)操作及備份恢復(fù)負(fù)責(zé)。


圖-1 DB和DBMS


1.1.3. 關(guān)系數(shù)據(jù)庫簡介

關(guān)系是一個數(shù)學(xué)概念,描述兩個元素間的關(guān)聯(lián)或?qū)?yīng)關(guān)系。所以關(guān)系型數(shù)據(jù)庫,即是使用關(guān)系模型把數(shù)據(jù)組織到數(shù)據(jù)表(Table)中?,F(xiàn)實世界可以用數(shù)據(jù)來描述。


主流數(shù)據(jù)庫產(chǎn)品:


Oracle(Oracle)

DB2(IBM)

SQL Server(MS)

MySQL(Oracle)

1.1.4. 表的概念

在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)被存放于二維數(shù)據(jù)表(Table)中。


一個關(guān)系數(shù)據(jù)庫由多個數(shù)據(jù)表組成,數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫的基本存儲結(jié)構(gòu),由行和列組成,行(Row)也就是橫排數(shù)據(jù),也經(jīng)常被稱作記錄(Record),列(Column)就是縱列數(shù)據(jù),也被稱作字段(Field)。表和表之間是存在關(guān)聯(lián)關(guān)系的。


1.2. 主流關(guān)系型數(shù)據(jù)庫

1.2.1. Oracle數(shù)據(jù)庫概述

Oracle是當(dāng)今著名的Oracle(甲骨文)公司的數(shù)據(jù)庫產(chǎn)品,它是世界上第一個商品化的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),也是第一個推出和數(shù)據(jù)庫結(jié)合的第四代語言開發(fā)工具的數(shù)據(jù)庫產(chǎn)品。


Oracle采用標(biāo)準(zhǔn)的SQL結(jié)構(gòu)化查詢語言,支持多種數(shù)據(jù)類型,提供面向?qū)ο蟮臄?shù)據(jù)支持,具有第四代語言開發(fā)工具,支持UNIX、WINDOWS、OS/2等多種平臺。Oracle公司的軟件產(chǎn)品豐富,包括Oracle服務(wù)器產(chǎn)品,Oracle開發(fā)工具和Oracle應(yīng)用軟件。其中最著名的就是Oracle數(shù)據(jù)庫,目前最新的版本是Oracle 12c。


1.2.2. DB2數(shù)據(jù)庫概述

DB2是IBM的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),DB2有很多不同的版本,可以運行在從掌上產(chǎn)品到大型機(jī)不同的終端機(jī)器上。DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分別是為OS/2和Windows系統(tǒng)的單用戶和多用戶提供的數(shù)據(jù)庫管理系統(tǒng)。


DB2在高端數(shù)據(jù)庫的主要競爭對手是Oracle。


1.2.3. Sybase數(shù)據(jù)庫

Sybase是美國Sybase公司研制的一種關(guān)系型數(shù)據(jù)庫系統(tǒng),是較早采用C/S技術(shù)的數(shù)據(jù)庫廠商,是一種典型的UNIX或Windows NT平臺上客戶機(jī)/服務(wù)器環(huán)境下的大型數(shù)據(jù)庫系統(tǒng)。 Sybase通常與Sybase SQL Anywhere用于客戶機(jī)/服務(wù)器環(huán)境,前者作為服務(wù)器數(shù)據(jù)庫,后者為客戶機(jī)數(shù)據(jù)庫,采用該公司研制的PowerBuilder為開發(fā)工具,在國內(nèi)大中型系統(tǒng)中具有廣泛的應(yīng)用。


SYBASE主要有三種版本,一是UNIX操作系統(tǒng)下運行的版本,二是Novell Netware環(huán)境下運行的版本,三是Windows NT環(huán)境下運行的版本。對UNIX操作系統(tǒng)目前廣泛應(yīng)用的為SYBASE 10 及SYABSE 11 for SCO UNIX。


2010年Sybase被SAP收購。


1.2.4. SQL Server數(shù)據(jù)庫概述

Microsoft SQL Server是運行在Windows NT服務(wù)器上,支持C/S結(jié)構(gòu)的數(shù)據(jù)庫管理系統(tǒng)。它采用標(biāo)準(zhǔn)SQL語言,微軟公司對它進(jìn)行了部分?jǐn)U充而成為事務(wù)SQL(Transact-SQL)。


SQL Server最早是微軟為了要和IBM競爭時,與Sybase合作所產(chǎn)生的,其最早的發(fā)展者是Sybase,和Sybase數(shù)據(jù)庫完全兼容。在與Sybase終止合作關(guān)系后,微軟自主開發(fā)出SQL Server 6.0版,往后的SQL Server即均由微軟自行研發(fā)。最新的版本是SQL Server 2012,上一版本是2008。


Microsoft SQL Server幾個初始版本適用于中小企業(yè)的數(shù)據(jù)庫管理,但是后來它的應(yīng)用范圍有所擴(kuò)展,已經(jīng)觸及到大型、跨國企業(yè)的數(shù)據(jù)庫管理。


1.2.5. MySQL數(shù)據(jù)庫概述

MySQL是一個開放源碼的小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。


與其它的大型數(shù)據(jù)庫例如Oracle、IBM DB2等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限等,但對于一般個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。


2008年1月16日,Sun正式收購MySQL。2009年4月20日,SUN被Oracle公司收購。目前的最新版本是MySQL5.6.


1.3. SQL概述

1.3.1. 結(jié)構(gòu)化查詢語言

SQL(Structured Query Language) 是結(jié)構(gòu)化查詢語言的縮寫。


SQL是在關(guān)系數(shù)據(jù)庫上執(zhí)行數(shù)據(jù)操作、檢索及維護(hù)所使用的標(biāo)準(zhǔn)語言,可以用來查詢數(shù)據(jù),操縱數(shù)據(jù),定義數(shù)據(jù),控制數(shù)據(jù),所有數(shù)據(jù)庫都使用相同或者相似的語言。


SQL可分為:


數(shù)據(jù)定義語言(DDL) : Data Definition Language

數(shù)據(jù)操縱語言(DML) : Data Manipulation Language

事務(wù)控制語言(TCL):Transaction Control Language)

數(shù)據(jù)查詢語言(DQL):Data Query Language

數(shù)據(jù)控制語言(DCL) : Data Control Language

執(zhí)行SQL語句時,用戶只需要知道其邏輯含義,而不需要知道SQL語句的具體執(zhí)行步驟。


1.3.2. 數(shù)據(jù)定義語言(DDL)

用于建立、修改、刪除數(shù)據(jù)庫對象,包括創(chuàng)建語句(CREATE)、修改語句(ALTER)、刪除語句(DROP),比如使用CREATE TABLE創(chuàng)建表,使用ALTER TABLE修改表,使用DROPTABLE刪除表等動作。這類語言不需要事務(wù)的參與,自動提交。


1.3.3. 數(shù)據(jù)操作語言(DML)

用于改變數(shù)據(jù)庫數(shù)據(jù),包括INSERT、UPDATE、DELETE三條語句。其中,INSERT語句用于將數(shù)據(jù)插入到數(shù)據(jù)庫中,UPDATE語句用于更新數(shù)據(jù)庫中已存在的數(shù)據(jù),DELETE用于刪除數(shù)據(jù)庫中已存在的數(shù)據(jù)。DML語言和事務(wù)是相關(guān)的,執(zhí)行完DML操作后必須經(jīng)過事務(wù)控制語句提交后才真正的將改變應(yīng)用到數(shù)據(jù)庫中。


1.3.4. 事務(wù)控制語言(TCL)

用來維護(hù)數(shù)據(jù)一致性的語句,包括提交(COMMIT)、回滾(ROLLBACK)、保存點(SAVEPOINT)三條語句,其中COMMIT用來確認(rèn)已經(jīng)進(jìn)行的數(shù)據(jù)庫改變, ROLLBACK語句用來取消已經(jīng)進(jìn)行的數(shù)據(jù)庫改變,當(dāng)執(zhí)行DML操作后(也就是上面說的增加、修改、刪除等動作),可以使用COMMIT語句來確認(rèn)這種改變,或者使用ROLLBACK取消這種改變。SAVEPOINT語句用來設(shè)置保存點,使當(dāng)前的事務(wù)可以回退到指定的保存點,便于取消部分改變。


1.3.5. 數(shù)據(jù)查詢語言(DQL)

用來查詢所需要的數(shù)據(jù)。使用最廣泛,語法靈活復(fù)雜。


1.3.6. 數(shù)據(jù)控制語言(DCL)

用于執(zhí)行權(quán)限的授予和收回操作、創(chuàng)建用戶等,包括授予(GRANT)語句,收回(REVOKE)語句,CREATE USER語句,其中GRANT用于給用戶或角色授予權(quán)限, REVOKE用于收回用戶或角色已有的權(quán)限。DCL語句也不需要事務(wù)的參與,是自動提交的。


1.4. Oracle數(shù)據(jù)庫安裝和訪問

1.4.1. Oracle數(shù)據(jù)庫安裝(Windows)

打開Oracle首頁http://www.oracle.com/,通過Downloads進(jìn)入Oracle數(shù)據(jù)庫的下載頁面。


安裝過程(以本地安裝為例):


步驟1:解壓,雙擊setup.exe,啟動安裝向?qū)В?/span>



圖-2 Oracle數(shù)據(jù)庫的安裝頁面


在此步驟的設(shè)置如下:


選擇基本安裝,指定要安裝的Oracle數(shù)據(jù)庫的基位置和主目錄位置;

安裝類型為企業(yè)版;

創(chuàng)建啟動數(shù)據(jù)庫(在安裝數(shù)據(jù)庫軟件同時創(chuàng)建數(shù)據(jù)庫,也可以在安裝完畢后單獨創(chuàng)建,此處選擇默認(rèn)值同時創(chuàng)建);

指定全局?jǐn)?shù)據(jù)庫名稱為orcl,以及口令,需要記住自己的密碼,這里設(shè)置為oracle。

然后點擊“下一步”按鈕,


步驟2:進(jìn)入檢查安裝環(huán)境的步驟,用來檢查軟硬件環(huán)境是否符合Oracle11g的安裝要求,如圖-3。如果滿足安裝要求,點擊“下一步”按鈕。



圖-3 Oracle數(shù)據(jù)庫的安裝環(huán)境檢查


步驟3:檢查通過后,進(jìn)入安裝概要頁面,如圖-4。在這步可以檢查之前的設(shè)置,包括安裝類型和要安裝的組件,如果有問題,點擊“上一步”按鈕回去修改,如果確認(rèn)沒問題,點擊“安裝”按鈕,進(jìn)入安裝階段。



圖-4 Oracle數(shù)據(jù)庫的安裝概要


步驟4:提示正在安裝。根據(jù)機(jī)器的軟硬件配置不同,這個步驟可能耗費不同的時間。圖略。


步驟5:進(jìn)入配置助手步驟,這個過程不需要用戶干涉。圖略。


步驟6:創(chuàng)建數(shù)據(jù)庫,圖略。


步驟7:數(shù)據(jù)庫創(chuàng)建完成后,提示配置助手界面,顯示數(shù)據(jù)庫的初始信息。圖略。


在此步驟中可以點擊“口令管理”按鈕進(jìn)行數(shù)據(jù)庫初始用戶的口令管理,這個步驟此時可以忽略,待安裝完成后再進(jìn)行口令管理。完成后,點擊“確定”按鈕離開口令管理界面。


步驟8:彈出安裝成功窗口,圖略。


步驟9:在安裝成功界面上點擊“下一步”按鈕,提示安裝結(jié)束。如圖-5。



圖-5 Oracle數(shù)據(jù)庫安裝結(jié)束


1.4.2. Oracle數(shù)據(jù)庫安裝(Linux)

在Oracle官網(wǎng)下載所需的軟件包,檢查軟硬件環(huán)境是否符合要求,規(guī)劃空間和目錄結(jié)構(gòu),安裝數(shù)據(jù)庫并創(chuàng)建配置。


安裝過程略。


1.4.3. 遠(yuǎn)程登錄數(shù)據(jù)庫服務(wù)器

Oracle數(shù)據(jù)庫作為市場以及技術(shù)上領(lǐng)先的數(shù)據(jù)庫產(chǎn)品,提供了豐富和簡單易用的數(shù)據(jù)庫開發(fā)和管理工具。有兩種主要工具,一是命令行工具,Oracle自帶的SQL*PLUS,二是Oracle提供的圖形界面工具:SQL Developer。


這些工具可能和數(shù)據(jù)庫在同一臺服務(wù)器上,也可能安裝在另一臺機(jī)器中。



圖-6 數(shù)據(jù)庫和客戶端


1.4.4. 使用SQL*PLUS

SQL*Plus是Oracle數(shù)據(jù)庫提供的和數(shù)據(jù)庫進(jìn)行交互的工具,是被系統(tǒng)管理員和開發(fā)人員廣泛使用的開發(fā)和管理工具,功能強(qiáng)大,使用簡單,可以運行在任何Oracle運行的平臺上,默認(rèn)和數(shù)據(jù)庫一起安裝。SQL*Plus是一個基于傳統(tǒng)的C/S結(jié)構(gòu)的SQL開發(fā)工具,客戶端和服務(wù)器端可以在同一臺主機(jī)或不同主機(jī)上。


在圖-6中,我們主要使用最上面那種訪問方式。


首先,遠(yuǎn)程登錄到數(shù)據(jù)庫所在的機(jī)器上,輸入遠(yuǎn)程機(jī)器操作系統(tǒng)的帳號和密碼:



圖-7 遠(yuǎn)程登錄數(shù)據(jù)庫服務(wù)器


然后在%提示符下,輸入SQLPlus命令,并輸入數(shù)據(jù)庫的帳號和密碼:



圖-8 運行sqlplus,登錄數(shù)據(jù)庫


如果出現(xiàn)SQL提示符,則表示登錄成功:



圖-9登錄數(shù)據(jù)庫成功


退出時,在SQL>后輸入exit即可:



圖-10退出SQL*Plus


再輸入exit,即退出遠(yuǎn)程服務(wù)器。


1.4.5. 使用Oracle SQL Developer

Oracle SQL Developer是Oracle官方出品的免費圖形化開發(fā)工具,相對SQL*Plus來說,圖形化的界面便于操作,不必記憶大量的命令,輸出結(jié)果美觀。它的基本功能包括結(jié)果的格式化輸出,編輯器自動提示,代碼美化,顯示SQL的執(zhí)行計劃,監(jiān)控會話,編寫以及調(diào)試存儲過程等。官方和免費兩個特征讓這個工具極具吸引力。


SQL Developer工具的主界面,如圖-11所示。



圖-11SQL Developer打開后的界面


第一次進(jìn)入SQL Developer,需要設(shè)置連接參數(shù)。首先在窗口左邊的Connection上按右鍵,開啟一個新的連接,輸入遠(yuǎn)程數(shù)據(jù)庫的參數(shù),界面如圖-12。



圖-12在SQL Developer中設(shè)置連接用戶信息


成功建立了連接之后,在連接上按右鍵點擊Connect,將打開對應(yīng)用戶方案中的數(shù)據(jù)庫對象。如圖-13。



圖-13在SQL Developer中打開用戶scott


在這個界面中,即可操作SQL語句了。


2. SQL(DDL、DML)

2.1. Oracle數(shù)據(jù)類型

2.1.1. NUMBER

NUMBER表示數(shù)字類型,經(jīng)常被定義成NUMBER(P,S)形式,其中:


P表示數(shù)字的總位數(shù)

S表示小數(shù)點后面的位數(shù)

例如在表Emp中的Sal列的定義如下:


Sal NUMBER(6,2)

表示Sal列中的數(shù)據(jù),整數(shù)位最大為4位,小數(shù)位最大位數(shù)是2位,也就是最大取值:9999.99。


2.1.2. CHAR

CHAR表示固定長度的字符類型,經(jīng)常被定義成CHAR(N)形式, N表示占用的字節(jié)數(shù),N的最大取值是2000。


例如在表Emp中的Ename列的定義如下:


Ename CHAR(20);

表示Ename列中最多可存儲20個字節(jié)的字符串,并且占用的空間是固定的20個字節(jié)。


2.1.3. VARCHAR2

VARCHAR2表示變長的字符類型,定義格式是VARCHAR2(N), N表示最多可占用的字節(jié)數(shù),最大長度是4000字節(jié)。


例如在表Emp中的JOB列的定義如下:


JOB VARCHAR2(100);

表示JOB列中最多可存儲長度為100個字節(jié)的字符串。根據(jù)其中保存的數(shù)據(jù)長度,占用的空間是變化的,最大占用空間為100個字節(jié)。


2.1.4. DATE

DATE用于定義日期時間的數(shù)據(jù),長度是7個字節(jié),默認(rèn)格式是:DD-MON-RR, 例如:“11-APR-71”。如果是中文環(huán)境,是“11-4月-71”這種形式。


例如在表Emp中的Hiredate列的定義如下:


Hiredate DATE;

表示Hiredate列中存放的是日期數(shù)據(jù)。


2.2. 創(chuàng)建表

2.2.1. CREATE語句

創(chuàng)建表的語法是:


CREATE TABLE [schema.]table_name(

    column_name datatype[DEFAULT expr][,…]

);

創(chuàng)建職員表的例子:


--創(chuàng)建表emp

CREATE TABLE emp(

    id NUMBER(10),

    name VARCHAR2(20),

    gender CHAR(1),

    birth DATE,

    salary NUMBER(6,2),

    job VARCHAR2(30),

    deptid NUMBER(2)

);

2.2.2. DESC語句

DESC是查看表的數(shù)據(jù)結(jié)構(gòu),語法是:


DESC table_name;

查看emp表的結(jié)構(gòu),將會得到的結(jié)果如圖-14所示:



圖-14查看數(shù)據(jù)表的結(jié)構(gòu)


2.2.3. DEFAULT

可以通過DEFAULT子句給列指定默認(rèn)值,例如,在emp表中給gender列賦默認(rèn)值‘M’,如果插入數(shù)據(jù)時沒有指定性別的員工,則默認(rèn)是男性。


創(chuàng)建表emp1:


CREATE TABLE emp1(

    id NUMBER(10),

    name VARCHAR2(20),

    gender CHAR(1) DEFAULT ‘M’,

    birth DATE,

    salary NUMBER(6,2),

    job VARCHAR2(30),

    deptid NUMBER(2)

);

2.2.4. NOT NULL

默認(rèn)情況下,任何列都允許有空值。非空(Not Null)是一種約束條件,用于確保字段值不為空,當(dāng)某個字段被設(shè)置了非空約束條件,這個字段中必須存在有效值,也就是說,當(dāng)執(zhí)行插入數(shù)據(jù)的操作時,必須提供這個列的數(shù)據(jù),當(dāng)執(zhí)行更新操作時,不能給這個列的值設(shè)置為NULL。


創(chuàng)建表emp2,設(shè)置name字段為非空,也即是表emp2中的每條記錄,name列都必須有值。


CREATE TABLE emp2(

    id NUMBER(10),

    name VARCHAR2(20) NOT NULL,

    gender CHAR(1),

    birth DATE,

    salary NUMBER(6,2),

    job VARCHAR2(30),

    deptid NUMBER(2)

);

2.3. 修改表

2.3.1. 修改表名

在建表后如果希望修改表名,可以使用RENAME語句實現(xiàn),語法如下,將改變表名old_name為new_name:


RENAME old_name TO new_name;

舉例說明,如果要將表名emp修改為employee,使用如下語法:


RENAME emp TO employee;

2.3.2. 增加列

在建表之后,要給表增加列可以使用ALTER TABLE的ADD子句實現(xiàn)。語法如下:


ALTER TABLE table_name ADD

(column datatype [DEFAULT expr] [, column datatype…])

注意一點,列只能增加在最后,不能插入到現(xiàn)有的列中。下例給表employee增加一列hiredate,并設(shè)置默認(rèn)值為當(dāng)前日期。


ALTER TABLE employee ADD (hiredate DATE DEFAULT sysdate);

2.3.3. 刪除列

在建表之后,使用ALTER TABLE的DROP子句刪除不需要的列。語法如下:


    ALTER TABLE table_name DROP (column);

刪除字段需要從每行中刪掉該字段占據(jù)的長度和數(shù)據(jù),并釋放在數(shù)據(jù)塊中占據(jù)的空間,如果表記錄比較大,刪除字段可能需要比較長的時間。


下例刪除表employee的列hiredate:


ALTER TABLE employee DROP (hiredate);

2.3.4. 修改列

建表之后,可以改變表中列的數(shù)據(jù)類型、長度和默認(rèn)值,注意這種修改僅對以后插入的數(shù)據(jù)有效,另外如果表中已經(jīng)有數(shù)據(jù)的情況下,把長度由大改小,有可能不成功,比如原來的類型是VARCHAR2(100),其中已經(jīng)存放了100個字節(jié)長度的數(shù)據(jù),如果要改為VARCHAR2(80),則不會修改成功。


語法如下:


ALTER TABLE table_name MODIFY

(column datatype [DEFAULT expr] [, column datatype…])

下例修改表employee的列job,并增加默認(rèn)值的設(shè)置:


ALTER TABLE employee

MODIFY(job VARCHAR2(40) DEFAULT 'CLERK' );

2.4. DML語句

在做后續(xù)練習(xí)之前,先熟悉本部分使用的樣例表emp和dept的結(jié)構(gòu)和數(shù)據(jù):


DROP TABLE dept;

CREATE TABLE dept

(deptno NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,

    dname VARCHAR2(14) ,

    loc VARCHAR2(13) ) ;

DROP TABLE emp;

CREATE TABLE emp

(empno NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,

    ename VARCHAR2(10),

    job VARCHAR2(15),

    mgr NUMBER(4),

    hiredate DATE,

    sal NUMBER(7,2),

    comm NUMBER(7,2),

    deptno NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);

INSERT INTO dept VALUES

    (10,'ACCOUNTING','NEW YORK');

INSERT INTO dept VALUES

(20,'RESEARCH','DALLAS');

INSERT INTO dept VALUES

    (30,'SALES','CHICAGO');

INSERT INTO dept VALUES

    (40,'OPERATIONS','BOSTON');

SELECT * FROM dept;

INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);

INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);

INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);

INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);

INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);

INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);

INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);

INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,to_date('19-4-87','dd-mm-yyyy'),3000,NULL,20);

INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);

INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);

INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,to_date('23-5-87','dd-mm-yyyy'),1100,NULL,20);

INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);

INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);

INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);

2.4.1. INSERT語句

INSERT語句用來給數(shù)據(jù)表增加記錄,每次增加一條記錄。語法如下:


INSERT INTO table_name[(column[, column…])]

VALUES(value[, value…]);

需要注意的一點,所有的DML操作,都需要再執(zhí)行事務(wù)提交語句commit,才算真正確認(rèn)了此操作。


向employee表插入一條記錄的例子如下:


INSERT INTO employee(id, name, job, salary)

VALUES(1001, 'rose', 'PROGRAMMER', 5500);

Oracle中的日期數(shù)據(jù)比較特殊,如果插入的列有日期字段,需要考慮日期的格式。Oracle的默認(rèn)的日期格式‘DD-MON-RR,你或者按照默認(rèn)格式插入數(shù)據(jù),或者自定義日期格式,用TO_DATE函數(shù)轉(zhuǎn)換為日期類型的數(shù)據(jù)。


--使用默認(rèn)日期格式插入記錄

INSERT INTO employee(id, name, job,birth)

VALUES(1002, 'martha', 'ANALYST', '01-9月-89');

--使用自定義日期格式插入記錄

INSERT INTO employee(id, name, job, birth)

VALUES(1003, 'donna', 'MANAGER',

TO_DATE('1978-09-01', 'YYYY-MM-DD'));

2.4.2. UPDATE語句

UPDATE語句用來更新表中的記錄,語法如下:


UPDATE table_name

SET column = value [, column = value]…

[WHERE condition];

其中WHERE子句是可選的,但是如果沒有WHERE子句,則全表的數(shù)據(jù)都會被更新,務(wù)必小心。


下例更改職員ROSE的薪水為8500:


UPDATE employee SET salary = 8500 WHERE name = 'ROSE';

2.4.3. DELETE語句

DELETE語句用來刪除表中的記錄,語法如下:


DELETE [FROM] table_name [WHERE condition];

和UPDATE語句一樣,WHERE子句是可選的,但是如果沒有WHERE子句,則全表的數(shù)據(jù)都會被刪除,務(wù)必確認(rèn)后再予以刪除。


下例將刪除職位是空的員工記錄:


DELETE FROM employee WHERE job is null;

--------------------- 



標(biāo)簽: 數(shù)據(jù)庫
分享:
評論:
你還沒有登錄,請先