- 論壇徽章:
- 0
|
在我對計(jì)算機(jī)的興趣中,很長時(shí)間只是對開源文化的一種狂熱的追逐,而沒有過多的考慮技術(shù)之后的價(jià)值問題,因此很多的時(shí)候沒有對技術(shù)的應(yīng)用價(jià)值進(jìn)行考慮。 最近在學(xué)習(xí)ORACLE數(shù)據(jù)庫,在網(wǎng)上看的到清華大學(xué)韓順平老師的視頻講座,學(xué)習(xí)之余將自己的學(xué)習(xí)筆記整理在這里,一方面是方面自己日后查閱,也可以讓有興趣的朋友看一下,或者給出點(diǎn)指正。 要說學(xué)習(xí)ORALCE也是一個(gè)偶然吧。公司的CAPP系統(tǒng)太惡心了,我雖然不會開發(fā),但是根據(jù)自己不多的計(jì)算機(jī)和軟件開發(fā)知識來看,這軟件系統(tǒng)也是開發(fā)的很蹩腳。可我們公司不是搞這方面的,而且自己說來時(shí)間也多,就想自己學(xué)習(xí)一下,搞一點(diǎn)副業(yè),就是一點(diǎn)愛好吧。能好好的學(xué)習(xí)一下ORACLE也是件美事。 要聲明的一點(diǎn)是。自己的學(xué)習(xí)筆記很是粗糙,容我日后更新。 2011-6-23 1.oracle安裝成功后,會默認(rèn)生成三個(gè)用戶 SYS用戶:超級管理員,權(quán)限最高,它的角色是DBA 密碼change_on_install SYSTEM用戶:是系統(tǒng)管理員,權(quán)限也很高,他的角色是dbaoper密碼MANAGER SCOTT用戶:普通用戶,密碼是TIGER SYS有create database的權(quán)限,而SYSTEM沒有,其它相似。
2.oracle的相關(guān)命令 conn[ect] user/password@database //以USER登陸到數(shù)據(jù)庫。 disc[onnect] //斷開當(dāng)前連接 show user //得到當(dāng)前用戶名 passw[ord] //修改密碼 start和@ //用來運(yùn)行SQL腳本文件。 edit //打開編輯一個(gè)SQL文件 spool //將程序運(yùn)行結(jié)果輸出到一個(gè)文件。 & //交互式命令,用來替代變量 如 sql>select * form emp where job='&job' ******************* oracle用戶的管理 create user xiaoming identified by m123;
在刪除用戶時(shí),注意如果要刪除的用戶,已經(jīng)創(chuàng)建了表,那么就需要在刪除時(shí)帶一個(gè)參數(shù) cascade; 用戶及其所創(chuàng)建的表一起刪除掉。 grant //贈于一個(gè)角色于一個(gè)用戶。 角色:connect dba resource三個(gè)主要的角色。
********************** 對象權(quán)限,selecte update insert delete all create index 希望XIAOMING用戶可以去查詢EMP表, grant select on emp to xiaoming 希望XIAOMING用戶可以去修改EMP表, grant update on emp to xiaoming revoke//收回一個(gè)角色 revoke select on emp from xiaoming
//對權(quán)限的維護(hù)。 希望XIAOMING可以去查詢SCOTT有EMP表、還希望小明可以把這個(gè)權(quán)限繼續(xù)給別人。 ——如果是對象權(quán)限,就加入with grant option grant select on emp to xiaoming with option ——如果是系統(tǒng)權(quán)限 system給xiaoming權(quán)限時(shí): grant connect to xiaoming with admin option ?如果SCOTT把XIAOMING對EMP表的查詢權(quán)限回收,那么XIAOHONG會怎么樣? 答:也被回收了。 *********************************** 第五講 *********************************** oracle用戶的管理 使用profile管理用戶口令, profile是口令限制,資源限制命令的集合,當(dāng)建立數(shù)據(jù)庫時(shí),oracle會自動建立名稱為default的profile. 2.1 帳戶鎖定 指定該賬戶登陸時(shí)最多可以輸入密碼的次數(shù),也可以指定用戶鎖定的時(shí)間(天),一般用DBA的身份去執(zhí)行該命令。 例:以下命令指定SCOTT用戶最多只能嘗試3次登陸,鎖定時(shí)間為2天。 (1)創(chuàng)建profile文件 sql>create profile lock_account limit failed_login_attempts 3 password_lock_time 2;//創(chuàng)建profile文件 sql>alter user scott profile lock_account;//把用戶加入到這個(gè)文件中 (2)給賬戶解鎖 sql>alter user tea account unlock; (3)終止口令 為了讓用戶定期改口令 sql>create profile myprofile limit password_life_time 10 password_grace_time 2;//第10天要修改自己的登陸密碼,寬限期為2天。 sql>alter user tea profile myprofile (4)口令歷史 sql>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10 (5)刪除profile sql>drop profile passowrd_history [cascade] 如果有CASCADE的時(shí),就是刪除所有的關(guān)系文件。
*********************************** 第六講 *********************************** 1、oracle表的管理 2、oracle表的查詢 3、學(xué)會創(chuàng)建新的oarcle數(shù)據(jù)庫
一、表的管理 必須以字母形狀 長度不能超過30字符 不能使用oracle的保留字 只能使用如下字符,A-Z,a-z,0-9,$
oracle的數(shù)據(jù)類型 1、字符型 (1)char 定長 最大2000字符。例子 char(10) ‘小韓‘,那么后四個(gè)字符用空填滿。 (2)varchar2(20) 變長,最大4000字符?梢怨(jié)約空間 (3)clob(character large object)字符型的大對象 2、數(shù)字型 number 范圍為-10的38次方到10的38次方 number(5,2)表示一個(gè)小數(shù)有5位有效數(shù)字,2位小數(shù) 范圍-999.99到999.99
*********************************** 第七講 *********************************** 3.時(shí)間類型 date和 timestamp兩個(gè)日期類型 4.圖片 blob 二進(jìn)制數(shù)據(jù),可以存放圖片、聲音、4G 在實(shí)際項(xiàng)目中,在數(shù)據(jù)庫中存放圖片、聲音的路徑,除非出于安全考慮。
一、建表 1.學(xué)生表 sql>create table student(--表名 xh number(4),——學(xué)號 xm varchar2(20),——姓名 *** char(2),——姓別 birthday date,——出生日期 sal number(7,2)——薪金 ); 修改表 1、添加一個(gè)字段 sql>alter table student add (classid number(2)); 2.修改字段的長度 sql>alter table student modify (xm varchar2(30)); 3.修改字段的類型、或者是名字 sql>alter table student modif (xm char(30)); 4.刪除一個(gè)字段 sql>alter table student drop column sal;
5.修改表的名字 sql>rename student to stu; 6。刪除表 sql>drop table student; 7.select 查詢表,單獨(dú)講解 8,插入表 insert into student values(a,b,c,d); 或者如果有些列為空時(shí): insert into student(xh,xm,***) values(3,'JOHN','女') 插入空值 insert into student(xh,xm,***,birthday) values(3,'martin','男',null); 改一個(gè)字段; update student set ***='女' where xh='a001'; 修改多個(gè)字段; update student set ***='男',birthday='1980-02-04' where xh='a001'; 修改字段為NULL的字段; 條件為 is null
刪除數(shù)據(jù) delete from student; 刪除所有記錄,表結(jié)構(gòu)還在,寫日志,可以恢復(fù)的,速度慢 恢復(fù)用rollback與savepoint配合。 rollback數(shù)據(jù)回滾,之前要設(shè)置savepoint a,
drop table student;刪除表的結(jié)構(gòu)和數(shù)據(jù)
delete from student where xh='xad';刪除一條記錄
truncate table student; 刪除表中的所有記錄,表結(jié)構(gòu)還在,不寫日志,無法找回刪除的記錄,速度快。
@ 2011-8-11 數(shù)據(jù)查詢 S 1、查看表結(jié)構(gòu) desc dept; 2.查詢所有列;\\慎用,時(shí)間長 select * from dept; 3.查詢指定列 select ename,sall,job,deptno from emp; 4.如何取消重復(fù)行。distinct是關(guān)鍵詞 select distinct deptno,job from emp; ***************注意,ORACLE對數(shù)據(jù)庫里的字段的內(nèi)容是區(qū)分大小寫的。
5.使用算術(shù)表達(dá)式。 select sal*12+nvl(comm,0)*12 as "nian gongzi" from emp; nvl(comm,0),如果COMM為NULL,表達(dá)式為0,如何不為NULL,為COMM的值。
6,使用WHERE子句
where and and 多個(gè)條件 7,like操作符,匹配用 %,表示0到多個(gè)字符,_:表示任意單個(gè)字符 select ename,sal from emp where ename like 'S%'; select ename, sal from emp where ename like '__O%'; 8,where中的in; select * from emp where empon in (123,456,400); 9,order by 按升降序來排列數(shù)據(jù)。 order by desc;降序;asc,升序;、、如果對多個(gè)列進(jìn)行排序,ORDER BY只有一個(gè), 10,使用列的別名排序,//別名中,可以不用AS select ename,sal*12 "年薪" from emp order by '年薪' asc;
|
|