




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、玩轉(zhuǎn)Oracle 10g實(shí)戰(zhàn)教程O(píng)racle第一講0、 引言1、 為什么要學(xué)習(xí)oracle2、 Oracle的安裝、啟動(dòng)及卸載3、 介紹oracle及oracle公司的背景4、 Oracle開(kāi)發(fā)工具介紹5、 Sql*plus的常用命令6、 Oracle用戶(hù)的管理學(xué)習(xí)目標(biāo)1、 學(xué)會(huì)安裝、啟動(dòng)、卸載oracle2、 使用Sql*plus工具3、 掌握oracle用戶(hù)管理4、 學(xué)會(huì)在oracle中編寫(xiě)簡(jiǎn)單的select語(yǔ)句引言 一個(gè)問(wèn)題淘寶網(wǎng),天涯網(wǎng),校友網(wǎng).都有各自的功能,那么當(dāng)我們關(guān)閉系統(tǒng)的時(shí)候,下次再訪問(wèn)這些網(wǎng)站時(shí),問(wèn)什么它們各自的信息還存在?再比如C/S的軟件,比如網(wǎng)游、QQ,它們又是怎樣保
2、存數(shù)據(jù)的?A. 游戲積分 B.QQ聊天記錄.引言 解決之道n 解決之道-文件、數(shù)據(jù)庫(kù)我們剛學(xué)習(xí)過(guò)文件,大家可能回答用文件就可以保存數(shù)據(jù)嘛!沒(méi)有錯(cuò),可以如果用文件保存數(shù)據(jù)存在幾個(gè)缺點(diǎn):(1) 文件的安全性問(wèn)題(2) 文件不利于查詢(xún)和對(duì)數(shù)據(jù)的管理(3) 文件不利于存放海量數(shù)據(jù)(4) 文件在程序中控制不方便為了解決上述問(wèn)題,專(zhuān)家們?cè)O(shè)計(jì)出更加利于管理數(shù)據(jù)的東西-數(shù)據(jù)庫(kù)(本質(zhì)就是一個(gè)軟件),他能更有效的管理數(shù)據(jù)。數(shù)據(jù)庫(kù)是衡量一個(gè)程序員水平的重要指標(biāo)。舉一個(gè)生活化的案例說(shuō)明如果說(shuō)圖書(shū)館是保存書(shū)籍的,那么數(shù)據(jù)庫(kù)就是保存數(shù)據(jù)的。數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系l 所謂數(shù)據(jù)庫(kù)服務(wù)器,只是在機(jī)器上裝了一個(gè)數(shù)據(jù)庫(kù)管理
3、程序,這個(gè)管理程序可以管理多個(gè)數(shù)據(jù)庫(kù),一般開(kāi)發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。l 為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會(huì)在數(shù)據(jù)庫(kù)創(chuàng)建多個(gè)表,以保存程序中實(shí)體的數(shù)據(jù)。l 數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系如圖所示:Client(專(zhuān)門(mén)用于訪問(wèn)數(shù)據(jù)庫(kù))Oracledbms(database management system)DB實(shí)例數(shù)據(jù)庫(kù)對(duì)象(表、視圖、序列、函數(shù)、包、過(guò)程、觸發(fā)器)數(shù)據(jù)庫(kù)對(duì)象(表、視圖、序列、函數(shù)、包、過(guò)程、觸發(fā)器)數(shù)據(jù)庫(kù)對(duì)象(表、視圖、序列、函數(shù)、包、過(guò)程、觸發(fā)器)數(shù)據(jù)庫(kù)的三層結(jié)構(gòu)DB實(shí)例DB實(shí)例為什么選擇oracle-性能優(yōu)越概述:目前主流數(shù)據(jù)庫(kù)包括l 微軟: sql server
4、和accessl 瑞典MySQL: AB公司MySQLl IBM公司: db2【處理海量數(shù)據(jù)】l 美國(guó)Sybase公司: Sybasel IBM公司: informixl 美國(guó)oracle公司: oracle小型數(shù)據(jù)庫(kù)中型數(shù)據(jù)庫(kù)大型數(shù)據(jù)庫(kù)海量數(shù)據(jù)庫(kù)accessSql Server 2008oracleDb2foxbaseMy sqlsysbaseFoxproinformixSql Server 2008My sql應(yīng)當(dāng)如何選擇數(shù)據(jù)庫(kù)(項(xiàng)目中)(1) 標(biāo)的(2) 功能要求(3) 多少人用(并發(fā)問(wèn)題)(4) 安全、穩(wěn)定性要求(5) 操作系統(tǒng)(UNIXsolaris,freebsd,hp unix,
5、aix/Linux/Windows)Oracle 數(shù)據(jù)庫(kù)的認(rèn)證考試簡(jiǎn)單介紹ocm(高級(jí)認(rèn)證)masterocp(中級(jí)認(rèn)證)professionaloca(初級(jí)認(rèn)證)Oracle certified associateOracle的安裝系統(tǒng)要求n 操作系統(tǒng)最好為windows servern 內(nèi)存最好在256M以上n 硬盤(pán)空間需要2G以上Oracle公司介紹-oracle的含義神喻 代神說(shuō)話的人 甲骨文 暗示公司預(yù)作霸主的決心地位:全球第一大數(shù)據(jù)庫(kù)廠商,全球第二大獨(dú)立軟件供應(yīng)商oracle 10g比oracle 9i增加了什么?簡(jiǎn)單說(shuō):10g支持網(wǎng)格(Grid),支持自動(dòng)管理(Automatic
6、 Management)。詳細(xì)說(shuō):10g的g是“Grid”縮寫(xiě),支持網(wǎng)格計(jì)算,即:多臺(tái)結(jié)點(diǎn)服務(wù)器利用高速網(wǎng)絡(luò)組成一個(gè)虛擬的高性能服務(wù)器,負(fù)載在整個(gè)網(wǎng)格中均衡(LoadBalance),按需增點(diǎn),避免單點(diǎn)故障(Single Point of Faliure)。安裝容易,安裝工作量比9i減少了一半。新增給予瀏覽器的企業(yè)管理器(EnterpriseManager)。如果在安裝的時(shí)候,忘記對(duì)某個(gè)用戶(hù)解鎖,比如scott,可以通過(guò)system來(lái)對(duì)此用戶(hù)解鎖,步驟:(1) 先使用system登錄(2) 然后輸入:alter user scott account unlockoracle公司介紹-產(chǎn)品線v
7、數(shù)據(jù)庫(kù)服務(wù)器:2007年最新版本11Gv 應(yīng)用服務(wù)器:Oracle Application Serverv 開(kāi)發(fā)工具:OracleJDeveloper,Oracle Designer,Oracle Developer,等等v 應(yīng)用軟件(主要競(jìng)爭(zhēng)對(duì)手:德國(guó)SAP公司。)v 企業(yè)資源計(jì)劃(ERP)軟件v 客戶(hù)關(guān)系管理(CRM)軟件v 人力資源管理軟件(HCM)oracle管理工具的介紹u sql*plus是oracle自帶的工具軟件,主要用于執(zhí)行sql語(yǔ)句,pl/sql塊。如何使用:1) 在開(kāi)始程序oracle oradb_home10gapplication developmentsql*plu
8、s2) 在運(yùn)行欄中輸入:sqlplusw即可。u sqlplus是DOS下操作oracle的工具,其功能和sql*plus相似。1) 在運(yùn)行欄中輸入sqlplus2) 找到該可執(zhí)行文件sqlplus.exe,在oracle主目錄ora10gbinsqlplus.exe,鼠標(biāo)雙擊即可。u pl/sql developer屬于第三方軟件,主要用于開(kāi)發(fā)、測(cè)試、優(yōu)化oracle pl/sql的存儲(chǔ)過(guò)程,比如:觸發(fā)器,此軟件oracle不帶,需要單獨(dú)安裝。u Enterprise manager console(企業(yè)管理器)oracle 10g是通過(guò)web管理的,一般默認(rèn)端口是5500,也有1158的。
9、訪問(wèn)url(請(qǐng)一定保證oracle服務(wù)啟動(dòng)了):OracleDBConsole數(shù)據(jù)庫(kù)實(shí)例名http:/ip:1158(也可能是5500)/emhttp:/機(jī)器名:端口/emsql*plus常用命令n 連接命令(1) connect用法:conn 用戶(hù)名/密碼網(wǎng)絡(luò)服務(wù)器名 as sysdba/sysoper當(dāng)用特權(quán)用戶(hù)身份連接時(shí),必須帶上as sysdba或是as sysoper該命令常用于切換當(dāng)前用戶(hù)。建議在登錄的時(shí)候使用普通用戶(hù),比如scott,如果確實(shí)需要system用戶(hù),則可以使用該命令切換為高級(jí)用戶(hù)。(2) disconnect 說(shuō)明:該命令用來(lái)斷開(kāi)與當(dāng)前數(shù)據(jù)庫(kù)的連接,但是不規(guī)程sql
10、plus窗口(3) password 說(shuō)明:該命令用于修改用戶(hù)的密碼,如果要想修改其它用戶(hù)的密碼,需要用sys/system登錄?;居梅ǎ簆assword 用戶(hù)名如果給自己修改密碼,則可以不帶用戶(hù)名,如果給別人修改密碼(前提:是system用戶(hù)或者sys用戶(hù)來(lái)修改),則需要帶用戶(hù)名。(4) show user 說(shuō)明:顯示當(dāng)前用戶(hù)名(5) exit 說(shuō)明:該命令會(huì)斷開(kāi)與數(shù)據(jù)庫(kù)的連接,同時(shí)會(huì)退出sql*plusn 交互命令(1) & 說(shuō)明:可以替代變量,而該變量在執(zhí)行時(shí),需要用戶(hù)輸入。 sql>select * from emp where job=&job;(2) edi
11、t 說(shuō)明:該命令可以編輯指定的sql腳本,例子:sql>edit d:a.sql;(3) spool 說(shuō)明:該命令可以將sqlplus屏幕上顯示的內(nèi)容輸出到指定文件中取。例子:sql>spool d:b.sql; 并輸入sql>spool off; 基本用法:spool on; spool d:/bak.sql select * fromemp; spool offn 顯示和設(shè)置環(huán)境變量概述:可以用來(lái)控制輸出的各種格式。(1) linesize 用于控制每行顯示多少個(gè)字符,默認(rèn)80個(gè)字符?;居梅ǎ簊et linesize 字符數(shù)aql>show linesizesql
12、>set linesize 120(2) pagesize 用于控制每頁(yè)顯示多少行數(shù)目,默認(rèn)14行。sql>set pagesize 40oracle用戶(hù)管理n 創(chuàng)建用戶(hù)(簡(jiǎn)單版)概述:在oracle中要?jiǎng)?chuàng)建一個(gè)新的用戶(hù)使用create user語(yǔ)句,一般是具有dba(數(shù)據(jù)庫(kù)管理員)的權(quán)限才能使用?;菊Z(yǔ)法:create user 用戶(hù)名 identified by 密碼n 給用戶(hù)修改密碼概述:如果給自己修改密碼可以直接使用sql>password 用戶(hù)名如果給別人修改密碼則需要具有dba的權(quán)限,或是擁有alter user的系統(tǒng)權(quán)限,也可以使用password 用戶(hù)名sql
13、>alter user 用戶(hù)名 identified by 新密碼u 表空間什么是表空間:表存在的空間,一個(gè)表空間是指向具體的數(shù)據(jù)文件表1表2表3表空間USER表空間TEMP文件1文件2文件3磁盤(pán)創(chuàng)建用戶(hù)(細(xì)節(jié))例子:sql>create user shunping identified by m123 default tablespace users temporary tablespace temp quota 3m on users;identified by 表明用戶(hù)shunping將用數(shù)據(jù)庫(kù)方式驗(yàn)證default tablespace users /用戶(hù)的表空間在user
14、s上tempporary tablespace temp /用戶(hù)shunping的臨時(shí)表建在temp空間quota 3m on users /表明用戶(hù)順平建立的數(shù)據(jù)對(duì)象(表、索引、視圖、pl/sql塊.)最大只能是3m,剛剛創(chuàng)建的用戶(hù)是沒(méi)有任何權(quán)限的,因此,需要dba給該用戶(hù)授權(quán)sql>grant connect to shunping如果你希望該用戶(hù)建表沒(méi)有空間的限制sql>grant resource to shunping 如果你希望該用戶(hù)成為dba權(quán)限系統(tǒng)權(quán)限對(duì)象權(quán)限系統(tǒng)權(quán)限是和數(shù)據(jù)庫(kù)管理相關(guān)的權(quán)限:create sessioncreate tablecreate inde
15、x create viewcreate sequencecreate trriger.對(duì)象權(quán)限是和用戶(hù)操作數(shù)據(jù)對(duì)象相關(guān)的權(quán)限:updateinsertdeleteselect.xiaomingsystem分配權(quán)限角色預(yù)定義角色把常用的權(quán)限集中起來(lái),形成角色dbaconnectresource自定義角色分配角色sql>grant dba to shunping 分配權(quán)限n 用戶(hù)管理的綜合案例概述:創(chuàng)建的新用戶(hù)是沒(méi)有任何權(quán)限的,甚至連登陸的數(shù)據(jù)庫(kù)的權(quán)限都沒(méi)有,需要為其制定相應(yīng)的權(quán)限。給一個(gè)用戶(hù)賦權(quán)限使用的命令grant,回收權(quán)限使用命令revoke。基本語(yǔ)法:grant 權(quán)限/角色 to 用
16、戶(hù) revoke 權(quán)限/角色 from 用戶(hù)創(chuàng)建xiaoming,并賦予connect和resource回收權(quán)限綜合案例:創(chuàng)建一個(gè)用戶(hù)xiaohong,然后給他分配兩個(gè)角色,可以讓xiaohong登錄、創(chuàng)建表,可以操作(CRUD)自己創(chuàng)建表,然后回收角色,最后刪除用戶(hù)。(1) 使用system創(chuàng)建xiaohongcreate user xiaohong identified by m123;(2) 給xiaohong分配幾個(gè)常用角色grant connect to xiaohong;grant resource to xiaohong;(3) 讓xiaohong登錄connect xiaoho
17、ng/m123;(4) xiaohong修改密碼password xiaohong(5) xiaohong創(chuàng)建一張簡(jiǎn)單的表create table .(6) 使用system登錄,然后回收角色revoke connect from xiaohong;revoke connect from xiaohong;(7) 刪除用戶(hù)drop user xiaohong cascade;當(dāng)我們刪除一個(gè)用戶(hù)的時(shí)候,如果這個(gè)用戶(hù)自己已經(jīng)創(chuàng)建過(guò)數(shù)據(jù)對(duì)象,那么我們?cè)趧h除用戶(hù)的時(shí)候,需要加選項(xiàng)cascade,表示把這個(gè)用戶(hù)刪除的同時(shí),把該用戶(hù)創(chuàng)建的數(shù)據(jù)對(duì)象一并刪除。u 方案(schema)理解:當(dāng)一個(gè)用戶(hù)創(chuàng)建好后,
18、如果該用戶(hù)創(chuàng)建了任意一個(gè)數(shù)據(jù)對(duì)象,我們的dbms就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的方案與該用戶(hù)對(duì)應(yīng),并且該方案的名字和用戶(hù)名一致scottoracle dbmsdb實(shí)例(ORC1)scott方案對(duì)象systemEMP表xiaohong方案對(duì)象表對(duì)象xiaohong小技巧:如果希望看到某個(gè)用戶(hù)的方案究竟有什么數(shù)據(jù)對(duì)象,我們可以用pl/sql developer方案的實(shí)際應(yīng)用,要求:讓xiaohong可以查看scott的emp表步驟1:先用scott登錄,conn scott/tiger;步驟2:賦權(quán)限grant select update delete insert allon emp to xiaohong;
19、步驟3:xiaohong查詢(xún)scott的emp表時(shí),需要用戶(hù)創(chuàng)建練習(xí)1、 創(chuàng)建用戶(hù)tea、stu,并給這兩個(gè)用戶(hù)resource,connect角色conn system/123456;create user tea identified by tea;grant resource to tea;grant connect to tea;create user stu identified by stu;grant resource to stu;grant connect to stu;2、 使用scott用戶(hù)把對(duì)emp表的select權(quán)限交給teaconn scott/tiger;gran
20、t select on emp to tea;3、 使用tea查詢(xún)scott的emp表conn tea/tea;select * from scott.emp;4、 使用scott用戶(hù)把對(duì)emp表的所有權(quán)限賦給teaconn scott/tiger;grant all on emp to tea;5、 使用tea更新/刪除/插入scott的emp表conn tea/tea;update scott.emp set job=”Teacher where job=&job;delete from scott.emp where job=&job;insert into scott.
21、emp values(8888,FORD,Teache,769808-9月-81,1500,300,20);6、 使用scott收回權(quán)限conn scott/tiger;revoke select on scott.emp from tea;revoke all on scott.emp from tea;7、 想辦法讓tea把自己擁有的對(duì)scott.emp的權(quán)限轉(zhuǎn)給stu;scott->tea->stu權(quán)限轉(zhuǎn)移.conn scott/tiger;grant all on scott.emp to tea with grant option;conn tea/tea;grant s
22、elect on scott.emp to stu;/with grant option 表示得到對(duì)象權(quán)限的用戶(hù),可以把權(quán)限繼續(xù)分配。/with admin option 得到系統(tǒng)權(quán)限,可以繼續(xù)分配8、 使用stu查詢(xún)scott用戶(hù)的emp表conn stu/stu;select * from scott.emp;9、 使用tea收回stu的權(quán)限conn tea/tea;revoke select on scott.emp from stu;n 使用profile管理用戶(hù)口令概述:profile是口令限制、資源限制的命令集合,當(dāng)建立數(shù)據(jù)時(shí),oracle會(huì)自動(dòng)建立名稱(chēng)為default的profi
23、le,當(dāng)建立用戶(hù)沒(méi)有指定profile選項(xiàng),那么oracle就會(huì)將default分配給用戶(hù)。(1) 賬戶(hù)鎖定概述:指定該賬戶(hù)(用戶(hù))登錄時(shí)最多可以輸入密碼的次數(shù),也可以指定用戶(hù)鎖定的時(shí)間(天)一般用dba的身份去執(zhí)行該命令例子:指定scott這個(gè)用戶(hù)最多只能?chē)L試3次登錄,鎖定時(shí)間為2天,看看怎么實(shí)現(xiàn):創(chuàng)建profile文件sql>create profile lock_account limit failed_login_attempts 3 password lock_time 2;分配文件sql>alter user scott profile lock_account;給賬戶(hù)
24、(用戶(hù))解鎖sql>alter user 用戶(hù)名 account unlock;(2) 終止口令為了讓用戶(hù)定期修改密碼可以使用終止口令的指令來(lái)完成,同樣這個(gè)命令也需要dba身份來(lái)操作。例子:給前面創(chuàng)建的用戶(hù)tea創(chuàng)建一個(gè)profile文件,要求該用戶(hù)每隔10天要修改自家的登錄密碼,寬限期為2天,看看怎么操作。sql>create profile myprofile limit password_life_time 10 password_grace_time 2;sql>alter user tea profile myprofile;(3) 口令歷史概述:如果希望用戶(hù)在修改
25、密碼時(shí),不能使用以前使用過(guò)的密碼,可使用口令歷史這樣oracle就會(huì)將口令修改的信息存放到數(shù)據(jù)字典中,這樣當(dāng)用戶(hù)修改密碼時(shí),oracle就會(huì)對(duì)新舊密碼進(jìn)行比較,當(dāng)發(fā)現(xiàn)新舊密碼一樣是,就提示用戶(hù)重新輸入密碼。例子:(1) 建立profilesql>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 1;password_reuse_time /指定口令可重用時(shí)間即10天后就需要修改(2) 分配給某個(gè)用戶(hù)sql>alter user t
26、ea profile myprofile;(4) 刪除profile概述:當(dāng)不需要某個(gè)profile文件時(shí),可以刪除該文件sql>drop profile profile文件名;oracle數(shù)據(jù)庫(kù)啟動(dòng)流程oracle也可以通過(guò)命令行的方式啟動(dòng),我們看看具體怎樣操作。oracle啟動(dòng)流程-windows下1) lsnrctl start (啟動(dòng)監(jiān)聽(tīng))2) oradim -startup -sid 數(shù)據(jù)庫(kù)實(shí)例名oracle啟動(dòng)流程-linux下1) lsnctl start (啟動(dòng)監(jiān)聽(tīng))2) sqlplus sys/change_on_install as sysdba(以sysdba身份登
27、錄,在oracle10g后可以這樣寫(xiě))sqlplus /nologconn sys/change_on_install as sysdba3) startupOracle第2講0.數(shù)據(jù)庫(kù)的一些基本概念1.表的管理2.基本查詢(xún)3.復(fù)雜查詢(xún)4.創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例基本概念-數(shù)據(jù)在數(shù)據(jù)庫(kù)中存儲(chǔ)方式User表列(column)IDnameage行(row)1shunping202lisi233wang24java程序class Users private int d; private String name; private int age;Users user1=new Users();user1.set
28、Id(1);user1.setName(“shunping”);user1.setAge(20);類(lèi)Usersl 表的一行稱(chēng)之為一條記錄l 表中一條記錄對(duì)應(yīng)一個(gè)java對(duì)象的數(shù)據(jù)id=3name=”wang”age=24User對(duì)象在java程序和數(shù)據(jù)表對(duì)應(yīng)的時(shí)候類(lèi)Users<->表usersUsers實(shí)例<->表的一條對(duì)應(yīng)CREATE TABLE table_namefield1 datatype,field2 datatype,field3 datatype,field:指定列明 datatype:指定列類(lèi)型基本管理-創(chuàng)建表(基本語(yǔ)句)注意:創(chuàng)建表時(shí),要根據(jù)需保存的
29、數(shù)據(jù)創(chuàng)建相應(yīng)的列,并根據(jù)數(shù)據(jù)的類(lèi)型定義相應(yīng)的列類(lèi)型。例:user對(duì)象idnamepasswordbirthdayid int name stringpassword stringbirthday dateSQL> create table users( 2 id number, 3 name varchar2(32), 4 password varchar2(32), 5 birthday date);Table created基本管理-oracle常用數(shù)據(jù)類(lèi)型分類(lèi)數(shù)據(jù)類(lèi)型說(shuō)明文本、二進(jìn)制類(lèi)型CHAR(size) char(20)VARCHAR2(size) vahchar2(32)nc
30、har(n)nvchar2(n)clob(character large object)blod(binary image object)定長(zhǎng) 最大2000字符變長(zhǎng) 最大4000字符Unicode數(shù)據(jù)類(lèi)型,定長(zhǎng) 最大2000字符Unicode數(shù)據(jù)類(lèi)型,變長(zhǎng) 最大4000字符字符型大對(duì)象 最大8TB 1T=1024G二進(jìn)制數(shù)據(jù) 可以存放圖片/聲音 8TB數(shù)值類(lèi)型number(p,s)p為整數(shù),s為小數(shù)位 范圍:1<=p<=38,-84<=s<=127保存數(shù)據(jù)范圍:-1.0e-130<=number value<=1.0e+126保存在機(jī)器內(nèi)部的范圍:122by
31、tes時(shí)間日期dateTIMESTAMPn)包含年月日,時(shí)分秒。默認(rèn)格式:DD-MON-YYYY。從公元前4712年1月1日到公元4712年12月31日的所有合法日期n的取值為09表示指定TIMESTEAMP中秒的小數(shù)位數(shù)。N為可選。如果n為0,timestamp與date等價(jià)(不推薦)u number可以理解成是一個(gè)可變的數(shù)值類(lèi)型,比如number(12),你可以放一個(gè)小整數(shù),它占用的字節(jié)數(shù)就少;你放一個(gè)大整數(shù),它占用的字節(jié)數(shù)就多,很好!varchar2(size)變長(zhǎng),最大可以存放4000個(gè)字符舉例:create table test2(name varchar2(16);比如存放了abc
32、字符串,實(shí)際上在數(shù)據(jù)庫(kù)中,就只存放abc,其余字符空間就回收。如果我們的數(shù)據(jù)的長(zhǎng)度是固定的,比如商品編號(hào)(8位),則應(yīng)當(dāng)使用char來(lái)存放,因?yàn)檫@樣存取速度快,如果存放數(shù)據(jù)的長(zhǎng)度是變化的,則使用varchar2。nchar(size)1. 定長(zhǎng)2. 編碼方式:unicode3. 舉例:create table test3(name nchar(2);create table test3(name char(2);說(shuō)明:一個(gè)漢字,占用nchar的一個(gè)字符空間, 一個(gè)漢字,占用char的兩個(gè)字符空間nvchar2(size)1. 變長(zhǎng)2. 編碼方式:unicode3. 最大字符數(shù)40000clob
33、字符型大對(duì)象1. 變長(zhǎng) 2.最大8tbblob 二進(jìn)制大對(duì)象1. 變長(zhǎng) 2.最大8tb說(shuō)明:我們?cè)趯?shí)際開(kāi)發(fā)中很少把文件存放數(shù)據(jù)庫(kù)(效率問(wèn)題),實(shí)際上我們一般記錄文件的路徑,然后通過(guò)IO/網(wǎng)絡(luò)來(lái)操作。如果我們的要求對(duì)文件安全性較高,可以考慮放入數(shù)據(jù)庫(kù)。numberNUMBERprecision,scale) NUMBER(p,s)1. number可以存放整數(shù),也可以存放小數(shù)2. 變長(zhǎng)3. number(p,s) p為整數(shù)位,s為小數(shù)位,范圍:1<=p<=38,-84<=s<=127 保存數(shù)據(jù)范圍:-1.0e-130<=number value<=1.0e+1
34、26-1.0e-130(科學(xué)計(jì)數(shù)法):就是-1.0乘以10的-130次方1.0e+126(科學(xué)計(jì)數(shù)法):就是1.0乘以10的126次方 保存在機(jī)器內(nèi)部的范圍:122bytes有效位:從左到右,第一個(gè)非0數(shù)就是第一個(gè)有效位s>0精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效位是否<=p。s<0精確到小數(shù)點(diǎn)左邊s位,并四舍五入。然后檢驗(yàn)有效位是否<=p+|s|。s=0 等價(jià)于NUMBER(p) 此時(shí)NUMBER表示整數(shù)4. 舉例:number(5,2)表示一個(gè)小數(shù)有5為有效數(shù),2位小數(shù)。范圍-999.999999.99如果數(shù)值超出了位數(shù)限制就會(huì)被截取多余的位數(shù)。但在一行數(shù)據(jù)
35、中的這個(gè)字段輸入575.316,則真正保存到字段中的數(shù)值是575.32。number(5)等同于number(5,0),表示一個(gè)五位數(shù),范圍-9999999999.輸入5732.316,真正保存的數(shù)據(jù)是57523原則:如果在做實(shí)際開(kāi)發(fā)中,我們有明確要求保留到小數(shù)點(diǎn)幾位,則明確指定;如果沒(méi)有,就直接使用number就可以了。數(shù)值運(yùn)行后結(jié)果數(shù)值運(yùn)行后結(jié)果123.89number123.89123.2564number123.2564123.89number(3)1241234.9876number(6,2)1234.99123.89number(6,2)123.8912345.12345numbe
36、r(6,2)Error123.89number(6,1)123.91234.9876number(6)12345123.89number(4,2)Error12345.345number(5,-2)12300123.89number(6,-2)1001234567number(5,-2)1234600.01234number(4,5).0123412345678number(5,-2)Error.00012number(4,5).00012123456789number(5,-4)123460000.000127number(4,5).000131234567890number(*,1)Err
37、or.0000012number(2,7).00000121234.58number(4,5)12345.6.00000123number(2,7).00000120.1number(4,5)Error1.2e-4number(2,5)0.000120.01234567number(4,5)0.012351.2e-5number(2,5)0.000010.09999number(4,5)0.09999date日期類(lèi)型1. 用于表示時(shí)間(年月日時(shí)分)2. 添加時(shí)候要使用默認(rèn)格式,oracle日期的默認(rèn)格式是:dd-mm-yyyy;如果我們希望自己習(xí)慣的日期添加,也可以,但是需要借助oracle函
38、數(shù)oracle表的管理-創(chuàng)建表創(chuàng)建-學(xué)生表字段字段類(lèi)型id整形name字符型sex字符型birthday日期型fellowship小數(shù)型resume大文本型-班級(jí)表,包含:班級(jí)編號(hào)、班級(jí)名稱(chēng)create table students(Id number,name varchar2(64),sex char(2),birthday date,fellowship number(10,2),resume clob);create table class(Id number,name varchar2(32);oracle表的管理-修改表ALTER TABLE tablenameDROP colum
39、n (column);ALTER TABLE tableMODIFY (columnname datatype);ALTER TABLE tablenameADD (columnname datatype);使用ALTER TABLE語(yǔ)句添加、修改或刪除列的語(yǔ)法。修改表的名稱(chēng):rename 表名 to 新表名² 練習(xí):1、 給學(xué)生表添加班級(jí)編號(hào)alter table students add(classId number);2、 學(xué)生姓名 變成 varchar2(30)alter table students modify(name varchar2(30);3、 學(xué)生姓名 變成 c
40、har(30)alter table students modify(name char(30);4、 刪除學(xué)生表的fellowship字段alter table students drop column fellowship;5、 把學(xué)生表名student修改成sturename students to stu;6、 刪除學(xué)生表drop table stu;oracle表的管理-CRUD(create/retrive/update/delete)Insert語(yǔ)句 (增加數(shù)據(jù))Update語(yǔ)句 (更新數(shù)據(jù))Delete語(yǔ)句 (刪除數(shù)據(jù))Select語(yǔ)句 (查找數(shù)據(jù))oracle表的管理-添加數(shù)
41、據(jù)使用INSERT語(yǔ)句向表中插入數(shù)據(jù)INSERT INTO table (column , column. . .)VALUES (value ,value . . .);v 插入的數(shù)據(jù)應(yīng)與字段的數(shù)據(jù)類(lèi)型相同。v 數(shù)據(jù)的大小應(yīng)在列的規(guī)定范圍內(nèi),例如:不能將一個(gè)長(zhǎng)度為80的字符串加入到長(zhǎng)度為40的列中。v 在values中列出的數(shù)據(jù)位置必須與被加入的排列位置相對(duì)應(yīng)。v 字符和日期型數(shù)據(jù)應(yīng)包含在單引號(hào)中。create table test13(name varchar2(64),birthday date);insert into test13(name,birthday) values(shun
42、ping,11-11月-11);/錯(cuò)誤v 插入空值,不指定或insert into value(null);create table test14(name varchar2(64),age number);insert into test14(name,age) values(shunping,null);=null nullinsert into test14(name) values(abc) /正確v 注意:字符和日期要包含在單引號(hào)中。v 如果給表的每列都添加值,則可不帶列名insert into 表名 values(列值. . .)update操作1. 基本語(yǔ)法:update 表名
43、set 列名=表達(dá)式 列名=表達(dá)式. . . where 條件2. 使用的注意事項(xiàng):v UPDATE語(yǔ)法可以用新值更新原有表行中的各列把zs的性別改為女:update students set sex=女 where name=zs;把zs的獎(jiǎng)學(xué)金改為10:update students set fellowship=10 where name=zs;v SET字句指示要修改哪些列和要給予哪些值。v WHERE字句指定應(yīng)更新哪些行。如沒(méi)有WHERE字句,則更新所有的行。(要特別小心)。 把所有學(xué)生的獎(jiǎng)學(xué)金都提高10%:update students set fellowship=fellows
44、hip*1.1 ; 將沒(méi)有獎(jiǎng)學(xué)金同學(xué)的獎(jiǎng)學(xué)金改為10元:update students set fellowship=10 where fellowship is null;/不能寫(xiě)成fellowship=null oracle表的管理-刪除數(shù)據(jù)使用delete語(yǔ)句刪除表中數(shù)據(jù)delete from tbl_name where where_definitionl 如果不使用where字句,將刪除表中所有數(shù)據(jù)。l Delete語(yǔ)句不能刪除某一列的值(可使用update)l 使用delete語(yǔ)句僅刪除記錄,不刪除表本身。如果要?jiǎng)h除表,使用drop table語(yǔ)句。l 同insert和update
45、一樣,從一個(gè)表中刪除記錄將引起其它表的參照完整性問(wèn)題,在修改數(shù)據(jù)庫(kù)時(shí),頭腦中應(yīng)該始終不要忘記這個(gè)潛在的問(wèn)題n 刪除的幾種方法比較delete from 表名:刪除所有記錄,表記過(guò)還在,寫(xiě)日志,可以恢復(fù)的,速度慢drop table 表名:刪除表的結(jié)構(gòu)和數(shù)據(jù)delete from students where xh=A001;刪除一條記錄truncate table 表名:刪除表中的所有記錄,表結(jié)構(gòu)還在,不寫(xiě)日志,無(wú)法找回刪除的記錄,速度快。oracle表基本查詢(xún)-介紹n 介紹在我么講解的過(guò)程中我們利用scott用戶(hù)存在的幾張表(emp,dept)為大家演示如何使用select語(yǔ)句,select
46、語(yǔ)句在軟件編程中非常的有用,希望大家好好掌握。empno:編號(hào) ename:名字 job:職位 mgr:上級(jí)的編號(hào) hiredate:入職時(shí)間 sal:薪水 comm:獎(jiǎng)金 dempno: 部門(mén)編號(hào) deptno:部門(mén)編號(hào) dname:部門(mén)名稱(chēng) loc:地址grade:工資級(jí)別 losal:最低工資 hisal:最高工資n 基本select語(yǔ)句SELECT DISTINCT *|column1,column2,column3. . . FROM tablel select指定查詢(xún)哪些列的數(shù)據(jù)。l column指定列名。l *號(hào)代表查詢(xún)所有列。l form指定查詢(xún)那張表。l distinct可選
47、,指顯示結(jié)果時(shí),是否刪除重復(fù)數(shù)據(jù)規(guī)定:盡可能返回較少的列,不要輕易使用*。² 查看表結(jié)構(gòu)sql>desc 表名;² 查詢(xún)所有列select * from 表名;² 查詢(xún)指定列select 列1,列2,. . . from 表名;² 如何取消重復(fù)行select distinct deptno,job from emp order by deptno;² 什么是重復(fù)行,返回的數(shù)據(jù)完全一樣,才是重復(fù)行。?查詢(xún)SMITH的薪水、工作、所在部門(mén)select sal,joB,dempno from emP wheRe EName=smith;特別說(shuō)明
48、:oracle的sql語(yǔ)句不區(qū)分大小寫(xiě),但是內(nèi)容是區(qū)分大小寫(xiě)的。oracle查詢(xún)中使用的算術(shù)表達(dá)式select enamel,sal*13+nvl(comm,0)*13 as 年薪from emp;別名可以加雙引號(hào),可以不用雙引號(hào),可以用漢字,可以加as,但oracle不允許別名加單引號(hào)。說(shuō)明:nvl函數(shù)是oracle提供的,用于處理數(shù)據(jù)null的問(wèn)題,基本用法:nvl(comm,0):如果comm為空null,則返回0;如果不為空,則返回本身的值。|的使用在查詢(xún)的時(shí)候,如果希望吧多列拼接起來(lái),作為一列返回,可以使用|,具體用法:select ename |是一個(gè)|job from emp;面
49、試題:我們希望刪除用戶(hù),同時(shí)保留該用戶(hù)的數(shù)據(jù)對(duì)象,怎么處理?(1) 鎖定用戶(hù)alter user scott account lock;(2) 這時(shí)該用戶(hù)已經(jīng)不能登錄到數(shù)據(jù)庫(kù),但是system用戶(hù)仍然可以使用它的數(shù)據(jù)對(duì)象。(3) 解鎖用戶(hù)alter user scott account unlock;n where字句的用法? 如何顯示工資高于3000的員工 select * from emp where sal>3000;? 如何查找1982.1.1后入職的員工select * from emp where to_char(hiredate,yyyy-mm-dd)>1982-01
50、-01;? 查詢(xún)1980年入職的員工 select * from emp where to_char(hiredate,yyyy)=1980;? 如何顯示工資在2000到2500的員工情況select * from emp where sal>=2000 and sal<=2500;select * from emp where sal between 2000 and 2500;n 如何使用like操作法(模糊查詢(xún))%:表示任意0到多個(gè)字符 _:表示任意單個(gè)字符? 如何顯示首字符為S的員工姓名和工資SQL> select ename,sal from emp where e
51、name like 'S%'? 如何顯示第三個(gè)字符為大寫(xiě)O的員工的姓名和工資SQL> select ename,sal from emp where ename like '_O%'n 在where條件中使用in? 如何顯示empno為123,345,800.的雇員情況select * from emp where empno=123 or empno=345 or empno=800;select * from emp where empno in(123,345,800);n 使用is null的操作符? 如何顯示沒(méi)有上級(jí)的雇員的情況select *
52、from emp where mgr is null;n 使用邏輯操作符合? 查詢(xún)工資高于500或是崗位為MANAGER的雇員,同時(shí)還要滿足他們的姓名首字母為大寫(xiě)的Jselect * from emp where (sal>500 or job=MANAGER) and ename like J%;n 使用order by字句 (對(duì)查詢(xún)結(jié)果進(jìn)行排序顯示 asc升序 desc降序 默認(rèn)asc)? 如何按照工資從低到高的順序顯示雇員的信息select * from emp order by sal;? 按照部門(mén)號(hào)升序雇員的入職時(shí)間降序排列select * from emp order by deptno,hiredate desc; order by 可以按照列的序號(hào)來(lái)排序select eanme,sal from emp order by 2; /不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)急疏散系統(tǒng)施工方案
- 肇慶教資考試試題及答案
- 2025年江西職考數(shù)學(xué)試題及答案
- 5年級(jí)下冊(cè)的字
- 5s建設(shè)新聞通稿
- 礦山交叉作業(yè)施工方案
- amh低調(diào)理成功案例
- 2025年內(nèi)蒙古機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)學(xué)生專(zhuān)用
- 2025年重慶應(yīng)用技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)必考題
- 2025年湖南安全技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完美版
- 《藝術(shù)概論(專(zhuān)升本)》復(fù)習(xí)考試題庫(kù)(含答案)
- 安全周例會(huì)匯報(bào)模板、安全匯報(bào)模板
- 化學(xué)核心素養(yǎng)的課堂教學(xué)-基于核心素養(yǎng)的高中化學(xué)教學(xué) 課件
- DB31T 1137-2019 畜禽糞便生態(tài)還田技術(shù)規(guī)范
- 張居正改革-完整精講版課件
- excel-操作技巧培訓(xùn)課件
- 腹膜透析的原理和應(yīng)用講課課件
- 中北大學(xué)火炮概論終極版
- 2022年CAD快捷鍵-CAD常用快捷鍵命令大全
- 流感病人的護(hù)理ppt課件
評(píng)論
0/150
提交評(píng)論