Oracle

Oracle學(xué)習(xí):

基本用途

數(shù)據(jù)庫管理系統(tǒng)(DBMS)組成部分:存儲(chǔ)和檢索數(shù)據(jù)旁振,識(shí)別用戶计贰,創(chuàng)建應(yīng)用孔厉。

啟動(dòng)數(shù)據(jù)庫:

連接數(shù)據(jù)庫工具:sqlplus-----基于命令的sqlplus

Sqlplus 用戶名/密碼 @host_string

舉例:管理員用戶:Cmd---services.msc----sqlplus sys/ as sysdba

密碼:xxx

注意:

凡是sys 用戶聂抢,必須指定身份 身份是 as sysdba? sysoper---不然會(huì)報(bào)錯(cuò)

如果指定了sys的身份? 可以不輸入密碼钧嘶,系統(tǒng)也會(huì)正常登陸,(但是Windows必須管理員身份進(jìn)入)

輸入sys 用戶身份 沒有輸入米么 可以正常登陸的先決條件 必須是從操作系統(tǒng)的管理員

普通用戶:sqlplus scott/tiger? ? ---sqlplus 用戶名/密碼

退出:exit

查詢所有用戶:

select * from all_users;

創(chuàng)建用戶的基本命令

必須是管理員權(quán)限才能創(chuàng)建用戶

創(chuàng)建用戶的命令是:create user 用戶名 identified by 密碼琳疏;

示例:create user lisi identified by lisi;

切換用戶:connect 用戶名/密碼?

示例: connect? lisi/lisi? ? -----

注意:

剛創(chuàng)建用戶不具備任何權(quán)限有决,既:不能連接數(shù)據(jù)庫,必須授予權(quán)限空盼。

點(diǎn)擊切換用戶书幕,會(huì)報(bào)錯(cuò),此時(shí)執(zhí)行3條語句:

connect sys/moon as sysdba;----

grant connect,resource to lisi;----grant保證能連上數(shù)據(jù)庫揽趾, resource保證能獲取資源 這2個(gè)是角色台汇。

connect lisi/lisi

sql*plus

sql全稱是結(jié)構(gòu)化查詢語言

優(yōu)勢:語言結(jié)構(gòu)簡單,功能強(qiáng)大篱瞎,簡單易學(xué)

sql能夠執(zhí)行以下幾種操作:

查詢數(shù)據(jù)

插入數(shù)據(jù)

刪除數(shù)據(jù)

創(chuàng)建和操作數(shù)據(jù)庫對(duì)象

控制對(duì)數(shù)據(jù)庫的訪問

sql語句報(bào)錯(cuò)排查網(wǎng)站:http://ora-code.com

sql分類:

數(shù)據(jù)定義語言(DDL)苟呐,如create,drop俐筋,rename---無法回滾

數(shù)據(jù)操作語言(DML)牵素,如insert,update澄者,delete---可以回滾

數(shù)據(jù)控制語言(DCL)笆呆,如grant,revoke

查詢語言粱挡,如select

事務(wù)控制語言(Transaction Control,TC ),如:commit,rollback,savepoint

sql*plus:是一個(gè)客戶端的應(yīng)用工具赠幕。

查看緩存中的數(shù)據(jù):? l? 或者? list

運(yùn)行緩存中的sql語句:/ 或者? r

n命令使用:如果sql語句出錯(cuò)了,可以使用n询筏,這個(gè)n 的意思是設(shè)置sql*plus中當(dāng)前行劣坊,n就是一個(gè)具體值

語法格式:n

刪除命令:

如果要?jiǎng)h除緩存中的某行,可以使用del命令

語法格式:del n

添加命令:如果想在某一行后面添加一些sql語句屈留,可以使用a(append)局冰,中文意思附加命令测蘑,

語法格式:a? -----a空格空格

示例:如果有多行數(shù)據(jù),想在地二行添加:

? 2

? a? where sno like "%s"

修改命令

如果要修改sql緩存中的語句康二,可以使用c(change)命令碳胳。

語法格式:c? /被修改內(nèi)容/新內(nèi)容

創(chuàng)建表與維護(hù)表

常用數(shù)據(jù)類型

char(length)

varchar2(length)

date

? 語法 insert into? emp? (name,birth)

? 2 values ("zhang",to_date("1999-09-09","yyyy-mm-dd"))

或者insert into emp (name,birth) values ("lili","09-9月-99")

select? sysdate from dual;

integer

存儲(chǔ)整數(shù)? 不能是浮點(diǎn)數(shù)

number(m,n)

存儲(chǔ)浮點(diǎn)數(shù)和整數(shù),m代表存儲(chǔ)的最大位數(shù),n 代表小數(shù)點(diǎn)右邊最大位數(shù)沫勿,如果沒有指定,m和n,那么默認(rèn)存儲(chǔ)38位精度的數(shù)字挨约。

binary_float

binary_double

創(chuàng)建表的語法結(jié)構(gòu):

create table [用戶名.]表名 (列名 數(shù)據(jù)類型 [default 默認(rèn)值]

[,产雹。诫惭。。蔓挖。])

示例:create table A (id varchar2(20) defalult "成都")-----給個(gè)默認(rèn)值成都

創(chuàng)建表和列名的命名規(guī)范

? 必須以英文字母開頭夕土,之后跟大寫或小寫英文字母,或者數(shù)字瘟判,或者#或者$ 或者_(dá)怨绣。注意不能與關(guān)鍵字相同。

通過子查詢創(chuàng)建表

create table B? as select *? from salary;----salary? 是存在的表

修改表結(jié)構(gòu)

1,在一個(gè)表中加入一個(gè)新的列

? alter table 表名 add

? (列名 數(shù)據(jù)類型) [default 默認(rèn)值]

? [,列名拷获。篮撑。。匆瓜。]

? 示例:alter table A add age number(2) default 23

2赢笨,修改在表中已存在的列,

? alter table 表名 modify

? (列名 數(shù)據(jù)類型) [default 默認(rèn)值]

? [驮吱,列名茧妒。。糠馆。]

? 示例:alter table A modify age varchar2(2)

注意:修改表的列的注意事項(xiàng)

可以增加字符類型的列的寬度

只有當(dāng)所有列的值都為空或者表中沒有數(shù)據(jù)時(shí),才可以減少列的寬度

只有當(dāng)所有列的值都為空時(shí)怎憋,才可以改變某一列的數(shù)據(jù)類型

如果 變

某一列的默認(rèn)值又碌,該默認(rèn)值只能影響以后的操作

只有當(dāng)某一列沒有改變?cè)摿械拇笮〉那闆r下,才可以把char類型的列改變成varchar2類型的列绊袋,或者把varchar2類型的列改變成char類型的列

3毕匀,從一個(gè)表中刪除一列,

? alter table 表名 drop column 列名

? alter table A drop column age

刪除表

1癌别,刪除表的數(shù)據(jù)和刪除表結(jié)構(gòu)皂岔,

drop table 表名

特征:刪除表中所有的數(shù)據(jù)行和表結(jié)構(gòu),刪除表的所有索引展姐,如果沒有備份的話躁垛,所刪除的表無法恢復(fù)剖毯,它提交所有的掛起的事務(wù),所有基于該表的視圖和別名依然保留但已無效教馆。

注意:通過drop刪除表時(shí)逊谋,從oracle 10g 開始,被刪除的表放入回收站土铺,這稱為閃回刪除(flashback drop),這樣可以恢復(fù)被刪除的表胶滋,如果你不想將表放入回收站,可以增加一個(gè)"purge",

格式:drop table 表名 [cascade constraints]

[purge]

另外:如果兩個(gè)表有外鍵(約束)關(guān)系悲敷,那么刪除表的時(shí)候究恤,oracle要求刪除所有具有cascade constraints

練習(xí):

? 如何從回收站中恢復(fù)刪除表

? flashback table A to before drop;

? 查詢數(shù)據(jù)庫中所有表

? select *? form cat;

? 存在回收站的表信息語句:show recyclebin

恢復(fù)被刪除的表

只要在drop table 命令中不包含purge,就可以恢復(fù)被刪除的表后德,首先介紹一下數(shù)據(jù)字典視圖user_recyclebin

select original_name,object_name from user_recyclebin;

清空回收站:purge recyclebin

截?cái)啾?/b>

當(dāng)一個(gè)表中數(shù)據(jù)已經(jīng)不再需要時(shí)部宿,可以使用truncate table 語句將他們?nèi)縿h除掉(截?cái)啵湔Z法格式如下:

truncate table? 表名

truncate table 語句有如下特性:

它刪除表中所有的數(shù)據(jù)探遵,但保留表結(jié)構(gòu)窟赏;如果沒有備份的話,刪除的數(shù)據(jù)行無法恢復(fù)箱季;該語句釋放表所占用的磁盤空間涯穷。

插入數(shù)據(jù)操作

當(dāng)往表中添加一行新的數(shù)據(jù)時(shí),需要使用DML語言中的insert? 語句藏雏,其語法格式如下:

insert into 表名 [(列名拷况,列名,,,)]? values (數(shù)值,數(shù)值,,,)

示例:insert into A (id ,name) values (1002,"waqing")

利用子查詢向表中插入數(shù)據(jù)掘殴,其格式如下:

create table 表名[(列名赚瘦,列名,,,)]? as? 子查詢

示例:create table B (id ,name) as select id,name from A

更新數(shù)據(jù)操作

如果要對(duì)數(shù)據(jù)庫中某一行或多行更新數(shù)據(jù),可以使用update語句奏寨。

update 表名 set 列名=數(shù)值[起意,列名=數(shù)值]

[where 條件]

示例:update A set name ="張三",age="23"

刪除數(shù)據(jù)操作

delete from 表名 [where 條件]

示例:delete from? 表名 where? id=1;

oracle 約束

非空(not? null):不為空

唯一(unique):在表中每一行所定義的列病瞳,其列值不能相同

主鍵(primary key):唯一標(biāo)識(shí)表的一行

外鍵(foreign key):用來維護(hù)子表(Child Table)和父表(Parent Table)之間的引用完整性揽咕。

條件(check):表中每行都要滿足該約束條件

添加主鍵:

? 1,create table A (id int,name varchar2(10),constraint pk_a_id primary key(id));

? 2套菜,create table A (id int primary key,name varchar2(10);

? 3,為已創(chuàng)建的表添加:alter table A add constraint PK_A_ID primary key(id)

外鍵約束:

子父關(guān)系亲善,外鍵可以很好的保護(hù)兩表之間的關(guān)系

constraint 外鍵名 foreign key (列名) references 父表 (列名)

插入有數(shù)據(jù)的值,外鍵中的值必須能夠在父表中找到

引用完整性約束(外鍵約束)逗柴,實(shí)現(xiàn)其該約束如下例子:

有如下兩張表他們之間的引用完整性

create table student (id number(5) primary key,name varchar2(10)

constraint fk_stu for)eign key(t_id) references team(T-id))

create table team (td varchar2(20) primary key,tname varchar2(20) )

刪除外鍵:

1,drop table A cacasde constraint purge----刪除無法恢復(fù)

2,alter table A drop constraint fk_id;

rollback---回滾

3,alter table A add constraint fk_player foreign key(game_id) references game_id

非空約束

create table student (id number(5) primary key,name varchar2(20) not null)

另一種方式非空約束實(shí)現(xiàn)方式

alter table student modify name not null

check約束

示例:

創(chuàng)建一張文秘表蛹头,要求如下:要求女性,年齡在18-35歲之間

create table person(id varchar2(5) primary key ,

name varchar2(20),age number,sex varchar2(2),constarint person_age_ck check (age between 18 and 35),constarint person_sex_ck check (sex ="女"))

如何查看約束

1,利用數(shù)據(jù)字典user_constraints 可以查詢用戶模式下的約束信息

查詢:desc user_constraints

col owner for a10

2,利用數(shù)據(jù)字典user_cons_columns可以查看每張表定義的約束是在哪一列上的

col column_name from a10;

col owner for a10;

select owner,constraint_name,table_name,column_name from user_cons_columns;

select 語句

使用算數(shù)表達(dá)式

+-*/ ---

示例:select sno,sage+20 from student;

select a.sno,sname,score from student a,sc b hwere a.sno ="s001" and a,sno=b.sno

連接運(yùn)算符

在sql查詢語句中可以將兩列查詢的結(jié)果連接在一起渣蜗,通過"||"實(shí)現(xiàn)屠尊。

select empno || ename from emp;

where 子句使用

<? >? =? <=? >=? <>? !=? between...and? in like

like:%? 代表0個(gè)或者多個(gè)字符;_代表一個(gè)且只能是一個(gè)字符

示例:

select * from? student where sname like "陳%"

轉(zhuǎn)義(escape)操作符

如果要查詢的字符串含有_或%袍睡,又該怎么處理知染,

解決:可以使用轉(zhuǎn)義關(guān)鍵字來完成,

create table dept_temp as seect * from dept.

insert into dept_temp values(88,"IT_REsearch","beijing")

select * from dept_temp where dname like "IT_%" escape "\"

解釋:定義"\"為轉(zhuǎn)義符斑胜,既在"\"之后的”_“字符已經(jīng)不是通配符控淡,而是它本來的含義,既下劃線止潘。

and or? not

order by? asc? desc

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掺炭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凭戴,更是在濱河造成了極大的恐慌涧狮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件么夫,死亡現(xiàn)場離奇詭異者冤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)档痪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門涉枫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腐螟,你說我怎么就攤上這事愿汰。” “怎么了乐纸?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵衬廷,是天一觀的道長。 經(jīng)常有香客問我汽绢,道長吗跋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任宁昭,我火速辦了婚禮跌宛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘久窟。我一直安慰自己秩冈,他們只是感情好本缠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布斥扛。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稀颁。 梳的紋絲不亂的頭發(fā)上芬失,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音匾灶,去河邊找鬼棱烂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阶女,可吹牛的內(nèi)容都是我干的颊糜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼秃踩,長吁一口氣:“原來是場噩夢啊……” “哼衬鱼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起憔杨,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤鸟赫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后消别,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抛蚤,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年寻狂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岁经。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荆虱,死狀恐怖蒿偎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怀读,我是刑警寧澤诉位,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站菜枷,受9級(jí)特大地震影響苍糠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啤誊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一岳瞭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚊锹,春花似錦瞳筏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春柱宦,著一層夾襖步出監(jiān)牢的瞬間些椒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工掸刊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留免糕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓忧侧,卻偏偏與公主長得像石窑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚓炬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容