學(xué)習(xí)Oracle的筆記

每次修改數(shù)據(jù)后使用 commit; 提交數(shù)據(jù)!=宋裳擎!

最好不要在操作界面關(guān)閉sql,而是exit退出斯碌,否則插入的數(shù)據(jù)再次登錄會(huì)消失(回滾數(shù)據(jù))

清空界面clear scr

創(chuàng)建表空間

create tablespace hg

datafile 'hg.dbf' size 10M

autoextend on;

查看默認(rèn)和臨時(shí)表空間

select default_tablespace,temporary_tablespace from user_users;

修改默認(rèn)表空間

alter user username(用戶名) default tablespace test(表空間名);

查看表空間里的所有表

select TABLE_NAME,TABLESPACE_NAME from dba_tables

where TABLESPACE_NAME='表空間名';

注意:表空間名要大寫(xiě)HG

表設(shè)置約束

alter table student

add constraint uq_stuid unique(id);唯一約束

alter table student

add constraint 6d foreign key(majorid) references majorinfo(majorid);

外鍵約束

foreign key 注意數(shù)據(jù)大小定義要一致

刪除表

alter tablespace tablespace_name

drop table table_name;

刪除表中數(shù)據(jù)(行)

delete from table_name

where id='0001';

修改表中數(shù)據(jù)

update student

set tel='13812345678';

where id='150001';

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

select * from student;

查詢表中無(wú)重復(fù)全部數(shù)據(jù)

select distinct * from student;

給列設(shè)置別名

select coursename AS 課程名稱(別名),price AS 課程價(jià)格(別名) from courses;

對(duì)查詢結(jié)果排序

查詢courses表中的課程名稱一死、打八折后的課程價(jià)格,并按課程價(jià)格降序排序输拇,按課程名稱升序排序

select coursename as 課程名稱,price*0.8 as 折后課程價(jià)格 from courses

order by 折后課程價(jià)格 DESC摘符,課程名稱 ASC;

(若折后課程價(jià)格相同策吠,則按課程名稱排序)

使用case when語(yǔ)句查詢(對(duì)結(jié)果進(jìn)行判斷以顯示不同的值)

select coursename as 課程名稱 ,case

when price>=200 then price*0.8

when price>=100 then price*0.9

end as 價(jià)格 from courses;

查詢courses逛裤,如果typeid為1001,則顯示'數(shù)據(jù)庫(kù)'猴抹,如果typeid為1002带族,則顯示'編程語(yǔ)言'

select coursename as 課程名稱,case typeid

when 1001 then '數(shù)據(jù)庫(kù)'

when 1002 then '編程語(yǔ)言'

end as 課程類型 from courses;

模糊查詢 _代替一個(gè)字符蟀给,%代替0到多字符

查詢課程名稱中有'Java'的課程信息

select coursename,price from courses

where coursename LIKE '%Java%';

統(tǒng)計(jì)每類課程的平均價(jià)格蝙砌,并要求平均價(jià)格高于200

select typeid,AVG(price), from courses

group by typeid

having AVG(price)>200;? //where中不能用聚合函數(shù)

統(tǒng)計(jì)所有價(jià)格不低于200的每類課程的平均價(jià)格

select typeid,AVG(price) from courses

where price>=200

group by typeid;

統(tǒng)計(jì)每類課程平均價(jià)格,并按平均價(jià)格降序排序

select typeid,AVG(price) from courses

group by typeid

order by AVG(price) desc;? //order by必須放在查詢語(yǔ)句最后面

笛卡爾積(行數(shù)為兩張表行數(shù)相乘跋理,列數(shù)為兩張表列數(shù)相加)

select * from table_name

內(nèi)連接

查詢課程信息表和課程類型信息表择克,顯示課程名稱和課程類型名稱

select courses.coursename,typeinfo.typeid

from courses INNER JOIN typeinfo? //INNER JOIN表示內(nèi)連接

ON courses.typeid=typeinfo.typeid;? //ON后面加條件

外連接

左外連接LEFT、右外連接RIGHT前普、全外連接FULL

使用右連接查詢課程信息表和課程類型信息表的信息

select courses.coursename,typeinfo.typename

from courses right outer join typeinfo

on courses.typeid=typeinfo.typeid;

子查詢(嵌套查詢)

通常用在from和where字句中

查詢課程價(jià)格高于平均價(jià)格的課程信息

select coursename,price

from courses

where price>(select AVG(price) from courses);

abs函數(shù)(絕對(duì)值)

select abs(-123),abs(123) from dual;

結(jié)果:abs(-123)? abs(123)

? ? ? ? 123? ? ? ? 123

length函數(shù)(求字符長(zhǎng)度)

將日期型轉(zhuǎn)換為字符型

select to_char(sysdate,'YYYY-MM-DD DAY HH24:MI:SS ') from DUAL;

運(yùn)行結(jié)果:

TO_CHAR(SYSDATE,'YYYY-MM-DDDAY

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

2019-10-01 星期二 15:08:14

自定義函數(shù):

創(chuàng)建函數(shù)

create FUNCTION fun(price NUMBER)/*參數(shù)名 數(shù)據(jù)類型*/

return NUMBER/*返回?cái)?shù)據(jù)類型*/

IS

BEGIN/*開(kāi)始*/

return price*0.6;/*實(shí)現(xiàn)業(yè)務(wù)邏輯語(yǔ)句*/

END;/*結(jié)束*/

/? /*結(jié)束符*/

算術(shù)運(yùn)算符: 加+ 減- 乘* 除/ 連接||

加減乘除用于數(shù)值型的值計(jì)算肚邢,連接用于字符型的值連接,如'123'||'456'結(jié)果是123456

比較運(yùn)算符: > >= < <= !=或<> = 用于兩個(gè)表達(dá)式之間比較

邏輯運(yùn)算符:與AND 或OR 非NOT,優(yōu)先級(jí):非>與>或

優(yōu)先順序:算數(shù)運(yùn)算符>比較運(yùn)算符>邏輯運(yùn)算符

定義常量

constant_name constant datatype;

例:class_name constant varchar2(20):='計(jì)算機(jī)一班';

定義變量

variable_name datatype[:=value];

例:age number(3):=20;

更改變量:age:=25;

set serverout on? /*要顯示輸出結(jié)果必須加這條語(yǔ)句骡湖,執(zhí)行一次即可*/

DECLARE? /*聲明*/

age number(3):=20;

name varchar2(20):='張三';

BEGIN

DBMS_OUTPUT.PUT_LINE('年齡='||age);

DBMS_OUTPUT.PUT_LINE('姓名='||name);

END;

/? /*必須加斜桿才開(kāi)始執(zhí)行上面的語(yǔ)句*/

IF語(yǔ)句

使用if判斷贱纠,若姓名是‘張三’,則輸出‘正確’响蕴,否則輸出‘錯(cuò)誤’

DECLARE

name varchar2(20):='張三';

BEGIN

IF name='張三' THEN

DBMS_OUTPUT.PUT_LINE('正確')谆焊;

ELSE

DBMS_OUTPUT.PUT_LINE('錯(cuò)誤');

END IF;

END;

/

IS/AS區(qū)別

在存儲(chǔ)過(guò)程(procedure)和函數(shù)(function)中沒(méi)有區(qū)別

在視圖(view)中只能用AS

在游標(biāo)(cursor)中只能用IS

create table student

(

id varchar2(10),

name varchar2(20),

majorid varchar2(20),

classid varchar2(10),

sex varchar2(2),

nation varchar2(20),

entrancedate varchar2(20),

idcard varchar2(20),

tel varchar2(20),

email varchar2(20),

remarks varchar2(100)

);

create table majorinfo

(

majorid varchar2(20),

majorname varchar2(20)

);

create table classinfo

(

classid varchar2(10),

grade varchar2(10),

classname varchar2(20)

);

create table course

(

courseid varchar2(10),

coursename varchar2(20),

credit number(3,1),

remarks varchar2(100)

);

create table gradeinfo

(

studentid varchar2(10),

courseid varchar2(10),

grade number(4,1),

semester varchar2(16),

remarks varchar2(100)

);

insert into classinfo values('1401','2014級(jí)','計(jì)算機(jī)1班');

insert into classinfo values('1302','2013級(jí)','會(huì)計(jì)1班');

insert into classinfo values('1503','2015級(jí)','自動(dòng)化1班');

insert into majorinfo values('0001','計(jì)算機(jī)');

insert into majorinfo values('0002','會(huì)計(jì)');

insert into majorinfo values('0003','自動(dòng)化');

insert into course values('1001','計(jì)算機(jī)基礎(chǔ)','0.5','無(wú)');

insert into course values('1002','會(huì)計(jì)電算化','1','無(wú)');

insert into course values('1003','電子技術(shù)','1','無(wú)');

insert into student values('150001','張小林','0001','1503','男','漢','2015.9','無(wú)','13112345678','無(wú)','無(wú)');

insert into student values ('140001','王銘','0002','1401','男','回','2014.9','無(wú)','13212345678','無(wú)','無(wú)');

insert into student values('130001','吳琦','0001','1302','女','漢','2013.9','無(wú)','13312345678','無(wú)','無(wú)');

insert into gradeinfo values('150001','1001','86','2015第一學(xué)期','無(wú)');

insert into gradeinfo values('140001','1002','90','2014第二學(xué)期','無(wú)');

insert into gradeinfo values('130001','1001','92','2014第一學(xué)期','無(wú)');

create view? v_student

as select student.name,majorinfo.majorname,classinfo.classname,student.entrancedate,student.tel

from student,classinfo,majorinfo

where student.majorid=majorinfo.majorid and student.classid=classinfo.classid;

select name,majorname,classname from v_student;

create index ix_stuname

on student(name);

create bitmap index ix_stumajor

on student(majorid);

select index_name,index_type from dba_indexes where table_name='STUDENT';

使用序列添加專業(yè)信息

create sequence seq_majorid

increment by 1

start with 1

maxvalue 9999999999

minvalue 1;

insert into majorinfo values(seq_majorid.NEXTVAL,'計(jì)算機(jī)');

insert into majorinfo values(seq_majorid.NEXTVAL,'會(huì)計(jì)');

insert into majorinfo values(seq_majorid.NEXTVAL,'自動(dòng)化');

select * from majorinfo;

為學(xué)生信息表創(chuàng)建同義詞

create SYNONYM stuinfo

for system.student;

select id,name from stuinfo;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市浦夷,隨后出現(xiàn)的幾起案子辖试,更是在濱河造成了極大的恐慌,老刑警劉巖军拟,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃执,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡懈息,警方通過(guò)查閱死者的電腦和手機(jī)肾档,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辫继,“玉大人怒见,你說(shuō)我怎么就攤上這事」每恚” “怎么了遣耍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炮车。 經(jīng)常有香客問(wèn)我舵变,道長(zhǎng),這世上最難降的妖魔是什么瘦穆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任纪隙,我火速辦了婚禮,結(jié)果婚禮上扛或,老公的妹妹穿的比我還像新娘绵咱。我一直安慰自己,他們只是感情好熙兔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布悲伶。 她就那樣靜靜地躺著,像睡著了一般住涉。 火紅的嫁衣襯著肌膚如雪麸锉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天舆声,我揣著相機(jī)與錄音淮椰,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛主穗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毙芜,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忽媒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了腋粥?” 一聲冷哼從身側(cè)響起晦雨,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隘冲,沒(méi)想到半個(gè)月后闹瞧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡展辞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年奥邮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罗珍。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洽腺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出覆旱,到底是詐尸還是另有隱情蘸朋,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布扣唱,位于F島的核電站藕坯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏噪沙。R本人自食惡果不足惜炼彪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曲聂。 院中可真熱鬧霹购,春花似錦、人聲如沸朋腋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旭咽。三九已至贞奋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穷绵,已是汗流浹背轿塔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勾缭。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓揍障,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親俩由。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毒嫡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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