【正文】
select sum(sal+m)from emp。SUM(SAL+COMM)7800 注:當(dāng)m為null時,sal+m是沒有結(jié)果值的select sum(sal)+sum(m)from emp。SUM(SAL)+SUM(COMM)31225select sum(sal+nvl(m,0))from emp。SUM(SAL+NVL(COMM,0))31225216。 分組查詢語法格式select 列名...,列函數(shù) from 表名...where 條件...group by 列名...order by 列名...u 查詢每個部門的人數(shù)select deptno,count(*)from emp group by deptno。規(guī)則:如果在select字句中,有不在列函數(shù)中的列,則該列一定要出現(xiàn)在group by之后。分組查詢having字句的使用u 顯示出平均工資大于2000的部門編號和平均工資 select deptno,avg(sal)from emp group by deptno having avg(sal)2000。SQL語句的書寫順序select 列名,列函數(shù) from 表名 where 條件 group by列名 having 條件 order by 列名SQL語句的執(zhí)行順序from where group by having select order byu 查詢20,30部門的平均工資,并將平均工資大于2000的輸出,輸出結(jié)果按平均工資排序 select deptno,avg(sal)from emp where deptno in(20,30)group by deptno having avg(sal)2000 order by avg(sal)。六、ORACLE_子查詢在where子句中使用子查詢u 查詢工資比7654雇員工資高的全部雇員信息select * from emp where sal(select sal from emp where empno=7654)。子查詢in的使用u 查詢和smith或jones在同一部門,同一職位工作的員工select ename from emp where(deptno,job)in(select deptno,job from emp where ename in(39。SMITH39。,39。JONES39。))。子查詢any的使用u =any:與in操作符的效果一致查詢和smith或jones在同一部門,同一職位工作的員工select ename from emp where(deptno,job)=any(select deptno,job from emp where ename in(39。SMITH39。,39。JONES39。))。u any:只要大于子查詢中的任何一個值即可 select * from emp where salany(select min(sal)from emp group by deptno)。u select empno from emp where sal子查詢all的使用u all:比最大的值大select * from emp where salall(select min(sal)from emp group by deptno)。注:select min(sal)from emp group by deptno結(jié)果為MIN(SAL)9508001300 是每個部門當(dāng)中的最少工資。u 七、ORACLE_表的更新操作u 創(chuàng)建表副本create table myemp as select * from emp。u 插入 u 到表中 insert的語法insert into 表名(字段名1,字段名2,......)values(值1,值2......)u 為myemp中增加一條記錄 insert into myemp(empno,ename,job,mgr,hiredate,sal,m,deptno)values(7899,39。張三39。,39。清潔工39。,39。736939。,39。142月200539。,9000,300,40)。注:給定的值要和指定的字段數(shù)一致。,那字段名可以省略。即:insert into 表名 values(值1,值2,.......)。,字段名又想省略的話,那么,其余沒有數(shù)據(jù)插入的字段用null填補(bǔ)。u to_date:字符型轉(zhuǎn)換成日期型u 批量插入記錄 格式:insert into 表名select 字段列表 from 表名 where 條件注:insert表和select表列數(shù)等都一致 例如:create table test as select * from emp。insert into test select * from emp。u 修改記錄update表名set要修改的字段=新值,要修改的字段=新值,...where條件n 將雇員號為7896的雇員的獎金修改為100 update myemp set m=100 where empno=7896。注:執(zhí)行修改操作時,一定要使用where來指定修改的條件,否則會改變表中的所有記錄。u 刪除記錄delete from 表名 where 條件n 刪除雇員編號為7896的雇員信息 delete from myemp where empno=7896。注:執(zhí)行delete操作時,一定要使用where來指定修改的條件,否則會刪除表中所有的記錄。u Oralce的事務(wù)處理mit:提交事務(wù) rollback:回滾操作注:操作一旦執(zhí)行了mit操作,就再也不能回滾操作了。八、ORACLE_表與視圖的管理u oracle中的常見數(shù)據(jù)類型varchar、varchar2:表示一個字符串,有長度限制,為255 number:number(n):表示一個整數(shù),數(shù)字的長度是n,可以使用int number(n,m):表示一個小數(shù),數(shù)字的長度為n,整數(shù)長度mn,可以使用float date:表示日期類型,日期要按照標(biāo)準(zhǔn)格式日期存放。clob:大對象,表示大文本數(shù)據(jù)類型,可存放4G。blob:大對象,表示二進(jìn)制數(shù)據(jù),最大可以存放4G,如電影,圖片、歌曲u 創(chuàng)建表 語法:create table 表名(字段名稱1 字段類型[default 默認(rèn)值], 字段名稱1 字段類型[default 默認(rèn)值],............字段名稱1 字段類型[default 默認(rèn)值],)。u 復(fù)制表create table 表名 as(子查詢)。注:當(dāng)子查詢不成立時,如果1=2,則只復(fù)制表的結(jié)果,不復(fù)制表的數(shù)據(jù)。u 刪除表 語法:drop table 表名。u 修改表結(jié)構(gòu)n 增加一列alter table 表名 add(列名稱 列數(shù)據(jù)類型 default 默認(rèn)值)n 刪除列 alter table 表名 drop column 列名稱。n 修改列的數(shù)據(jù)類型alter table 表名稱 modify(列的名稱 列的類型 default 默認(rèn)值)。注:,則要求更改時,長度不能小于當(dāng)前表中數(shù)據(jù)所具有的最大長度。,則要求更改時,該列的所有記錄值都為空。u 修改表結(jié)構(gòu)n 為表重命名rename 舊表名 to 新表名。注:這是oracle特有的操作n 將myemp表改名為iemp SQL rename myemp to iemp。表已重命名。n 截斷表truncate table 表名。意義:清空表中的所有數(shù)據(jù),并且立即釋放資源,該操作是不可回滾。u 約束約束的分類主鍵約束:表示一個唯一的標(biāo)識,本身不能為空 唯一約束:列值不允許重復(fù)檢查約束:檢查一個列的內(nèi)容是否合法非空約束:不能為空值,如用戶不能為空(no null)外鍵約束:在兩張表中進(jìn)行約束的操作n 主鍵約束(primary key)主鍵約束一般在id上使用,而且本身已經(jīng)默認(rèn)了不能為空,主鍵約束可以在建表的時候指定 create table person(pid varchar2(18)primary key, name varchar(30), age number(3), sex varchar2(2)default39。男39。)。使用constraint指定constraint [k?n39。streint] 約束;強(qiáng)制 create table person(pid varchar2(18), name varchar(30), age number(3), sex varchar2(2)default39。男39。constraint person_pid_pk primary key(pid)。)。n 非空約束(not null)create table person(pid varchar2(18)primary key, name varchar(30)not null, age number(3), sex varchar2(2)default39。男39。)。n 唯一約束(unique)create table person(pid varchar2(18)primary key, name varchar(30)unique not null, age number(3), sex varchar2(2)default39。男39。)。u 視圖概念:一個視圖實(shí)質(zhì)是封裝了一條復(fù)雜的SQL語句n 創(chuàng)建視圖 語法:create view 視圖名稱 as 子查詢n 創(chuàng)建部門20員工的雇員信息create view empv20 as select * from emp where deptno=20。注:當(dāng)創(chuàng)建視圖以后,可以像操作表一樣操作視圖。注:視圖的操作會影響到表的操作。with check option 不能更新創(chuàng)建視圖的條件 with read only 創(chuàng)建只讀視圖n 刪除視圖 語法:drop view 視圖名稱注:當(dāng)刪除視圖所在的表時,則視圖也不能被使用u 序列創(chuàng)建序列語法:sequence [39。si:kw?ns] create sequence 序列名稱。create sequence myseq。序列的操作:nextval:取得序列的下一個內(nèi)容 currval:取得當(dāng)前序列的內(nèi)容n 創(chuàng)建表驗(yàn)證序列的操作create table testseq(next number,curr number)。insert into testseq values(,)。n 創(chuàng)建序列指定每次增長的增量create sequence myseq increment by 2。注:每次增長2n 創(chuàng)建序列指定開始的序列,默認(rèn)的序列從1開始。create sequence myseq increment by 2 start with 10。注:序列從10開始,每次增長2n 創(chuàng)建一個序列1,3,5,7, sequence myseq maxvalue 9 increment by 2 start with 1 cache 2 cycle。注:序列從1開始,每次增長2,最大值為9,循環(huán)兩次。第五篇:Oracle數(shù)據(jù)庫實(shí)驗(yàn)報告中南林業(yè)科技大學(xué)實(shí)驗(yàn)報告課程名稱:Oracle數(shù)據(jù)庫 專業(yè)班級: 姓名:學(xué)號:****年**月**日實(shí)驗(yàn)一安裝和使用Oracle數(shù)據(jù)庫【實(shí)驗(yàn)?zāi)康摹?,選擇安裝組件 ,配置網(wǎng)絡(luò)連接 *Plus,登錄到實(shí)例和數(shù)據(jù)庫 【實(shí)驗(yàn)內(nèi)容】,記錄下和數(shù)據(jù)庫有關(guān)的服務(wù)名,將他們設(shè)為手動方式,啟動相關(guān)服務(wù)。,查看是否在服務(wù)中有LISTENER,是否能啟動。,提示:設(shè)置正確的服務(wù)器地址和端口號。*Plus,用SYS和SYSTEM用戶名和密碼登錄。:有幾種打開SQL*Plus的方法?分別是什么? ,記錄命令,再加載數(shù)據(jù)庫,打開數(shù)據(jù)庫?!緦?shí)驗(yàn)結(jié)論】,記錄下和數(shù)據(jù)庫有關(guān)的服務(wù)名,將他們設(shè)為手動方式,啟動相關(guān)服務(wù)。,查看是否在服務(wù)中有LISTENER,是否能啟動。,提示:設(shè)置正確的服務(wù)器地址和端口號。*Plus,用SYS和SYSTEM用戶名和密碼登錄。:有幾種打開SQL*Plus的方法?分別是什么?(1)直接打開 sql plus 即窗口方式(2)cmd 命令行方式(3)WEB 頁面中 iSQL*Plus 方式 ,記錄命令 SQLshutdown immediate,再加載數(shù)據(jù)庫,打開數(shù)據(jù)庫。sqlstartup nomount sqlalter database mount。sqlalter database open。sqlstartup(1).用SQLplus 命令:show parameters參數(shù)名(2).用select [列名] from 表名?默認(rèn)的保存位置在哪里?初始化文件有三種:數(shù)據(jù)文件,日志文件,控制文件; 默認(rèn)的保存位置E:,查看三類物理文件信息三類物理文件:數(shù)據(jù)文件、控制文件、日志文件 數(shù)據(jù)文件:.DBF存儲表、索引及數(shù)據(jù)結(jié)構(gòu)信息日志文件:.LOG記錄對數(shù)據(jù)庫的所有修改信息,用于恢復(fù)控制文件:.CTL二進(jìn)制文件,記錄數(shù)據(jù)庫名、文件標(biāo)識、檢查點(diǎn)$parameter動態(tài)性能視圖,用show命令查看全局?jǐn)?shù)據(jù)庫名、實(shí)例名、是否啟動自動歸檔、標(biāo)準(zhǔn)數(shù)據(jù)塊大小這四個參數(shù)的值,記錄命令和結(jié)果。用select命令查詢V$parameter動態(tài)性能視圖用show命令查看全局?jǐn)?shù)據(jù)庫名、實(shí)例名用show命令查看是否啟動自動歸檔、標(biāo)準(zhǔn)數(shù)據(jù)塊大小、控制文件的文件名、存儲位置和狀態(tài)信息?(1).查看數(shù)據(jù)文件的文件名、存儲位置和狀態(tài)信息(2).查看控制文件的文件名、存儲位置和狀態(tài)信息0和服務(wù)器型文件都要找到),查看各類默認(rèn)位置并記錄下來(包括物理文件所在目錄,該數(shù)據(jù)庫相關(guān)的各個目錄等),登錄到mydb數(shù)據(jù)庫。(1)創(chuàng)建批處理文