




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)定義語(yǔ)言 數(shù)據(jù)定義語(yǔ)言用于改變數(shù)據(jù)庫(kù)結(jié)構(gòu),包括創(chuàng)建、更改和刪除數(shù)據(jù)庫(kù)對(duì)象 用于操縱表結(jié)構(gòu)的數(shù)據(jù)定義語(yǔ)言命令有: CREATE TABLE ALTER TABLE TRUNCATE TABLE DROP TABLE數(shù)據(jù)操縱語(yǔ)言 數(shù)據(jù)操縱語(yǔ)言用于檢索、插入和修改數(shù)據(jù) 數(shù)據(jù)操縱語(yǔ)言是最常見的SQL命令 數(shù)據(jù)操縱語(yǔ)言命令包括: SELECT INSERT UPDATE DELETEDML SELECT 命令 利用現(xiàn)有的表創(chuàng)建表 語(yǔ)法:CREATE TABLE AS SELECT column_names FROM ; SQL CREATE TABLE newstudentAS SELECT * F
2、ROM student;SQL CREATE TABLE newstudent1 AS SELECT sno, sname FROM student;SQL CREATE TABLE newstudent2AS SELECT * FROM studentWHERE 1 = 2; 選擇無重復(fù)的行 在SELECT子句,使用DISTINCT關(guān)鍵字SQL SELECT DISTINCT sname FROM student; 使用列別名 為列表達(dá)式提供不同的名稱 該別名指定了列標(biāo)題SQL SELECT sno 學(xué)號(hào), 2010-extract(year from birthday “年 齡” -中間有
3、空格,用“”FROM student;DML INSERT 命令 插入日期類型的值 日期數(shù)據(jù)類型的默認(rèn)格式為“DD-MON-RR” 使用日期的默認(rèn)格式 使用TO_DATE函數(shù)轉(zhuǎn)換 插入來自其它表中的記錄 語(yǔ)法:INSERT INTO (cloumn_list SELECT column_names FROM ; SQL INSERT INTO student2SELECT * FROM student; 數(shù)據(jù)控制語(yǔ)言 數(shù)據(jù)控制語(yǔ)言為用戶提供權(quán)限控制命令 用于權(quán)限控制的命令有: GRANT 授予權(quán)限 REVOKE 撤銷已授予的權(quán)限算術(shù)操作符 算術(shù)操作符用于執(zhí)行數(shù)值計(jì)算 可以在SQL語(yǔ)句中使用算術(shù)
4、表達(dá)式,算術(shù)表達(dá)式由數(shù)值數(shù)據(jù)類型的列名、數(shù)值常量和連接它們的算術(shù)操作符組成 算術(shù)操作符包括加(+、減(-、乘(*、除(/ 比較操作符用于比較兩個(gè)表達(dá)式的值 比較操作符包括 =、!=、=、BETWEENAND、IN、LIKE 和 IS NULL等,LIKE可以使用匹配符_、%邏輯操作符 邏輯操作符用于組合多個(gè)計(jì)較運(yùn)算的結(jié)果以生成一個(gè)或真或假的結(jié)果。 邏輯操作符包括與(AND、或(OR和非(NOT顯示 2005-5月-10 至 2005-5月-26的訂單信息SQL SELECT * FROM order_master WHERE odate 10-5月-05 AND del_date SELECT
5、 (venname| 的地址是 |venadd1| |venadd2 | |venadd3 addressFROM vendor_master WHERE vencode=V001SQL 操作符的優(yōu)先級(jí)從高到低的順序是: 算術(shù)操作符 -最高優(yōu)先級(jí) 連接操作符 比較操作符 NOT 邏輯操作符 AND 邏輯操作符 OR 邏輯操作符 -最低優(yōu)先級(jí) 分組函數(shù) 單行函數(shù)對(duì)于從表中查詢的每一行只返回一個(gè)值 可以出現(xiàn)在 SELECT 子句中和 WHERE 子句中 單行函數(shù)可以大致劃分為: 字符函數(shù) 日期時(shí)間函數(shù) 數(shù)字函數(shù) 轉(zhuǎn)換函數(shù) 混合函數(shù) 以下是一些其它的字符函數(shù): CHR和ASCII LPAD和RPAD
6、 TRIM LENGTH DECODE(在2.2視頻中講解SQL SELECT LENGTH(frances FROM dual;SQL SELECT TRIM(9 from 9999876789999 FROM dual;日期時(shí)間函數(shù) 日期函數(shù)對(duì)日期值進(jìn)行運(yùn)算,并生成日期數(shù)據(jù)類型或數(shù)值類型的結(jié)果 日期函數(shù)包括: ADD_MONTHS MONTHS_BETWEEN LAST_DAY ROUND NEXT_DAY TRUNC EXTRACT轉(zhuǎn)換函數(shù) 轉(zhuǎn)換函數(shù)將值從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型 常用的轉(zhuǎn)換函數(shù)有: TO_CHAR TO_DATE TO_NUMBERSELECT TO_DATE(
7、2005-12-06 , yyyy-mm-ddFROM dual;SELECT TO_CHAR(sysdate,YYYY年fmMM月fmDD日 HH24:MI:SSFROM dual;SELECT TO_NUMBER(100 FROM dual;混合函數(shù) 以下是幾個(gè)用來轉(zhuǎn)換空值的函數(shù): NVL,第一為空返回二;否則返回一。 NVL2,第一個(gè)不空則返回二;否則返回三。 NULLIF,兩個(gè)表達(dá)式,相等則返回空;否則第一個(gè)。分組函數(shù) 分組函數(shù)基于一組行來返回結(jié)果 為每一組行返回一個(gè)值COUNTSELECT COUNT(DISTINCT qty_hand FROM itemfile;SELECT CO
8、UNT(* FROM itemfileSELECT AVG(re_level FROM itemfile WHERE p_category=accessories;SELECT COUNT(itemrate FROM itemfile; SELECT MAX(max_level FROM itemfile;SELECT SUM(itemrate*max_level FROM itemfile; GROUP BY子句 用于將信息劃分為更小的組 每一組行返回針對(duì)該組的單個(gè)結(jié)果 HAVING子句 用于指定 GROUP BY 子句檢索行的條件思考:查出 平均成績(jī) 大于 所有學(xué)生的 平均成績(jī) 的 學(xué)生的
9、 學(xué)號(hào) 和 平均成績(jī) 查出 平均成績(jī) 大于 60 的 學(xué)生的 學(xué)號(hào) 和 平均成績(jī),并按照學(xué)號(hào)的降序排列 SQL select sno, max(score as 最高分, sum(score as 總分 from 成績(jī) group by sno;Oracle 的多表查詢 等值連接 外連接 自連接 子查詢相等連接(第一種寫法:select table1.column,table2.columnfrom table1, table2 where table1.column1=table2.column2可以使用表的別名,為了書寫的簡(jiǎn)化。相等連接(第二種寫法:select table1.column
10、,table2.columnfrom table1 inner join table2 on table1.column1=table2.column2可以使用表的別名,為了書寫的簡(jiǎn)化。 左外連接(第一種寫法:select table1.column,table2.columnfrom table1 left outer join table2on table1.column1=table2.column2可以使用表的別名,為了書寫的簡(jiǎn)化。左外連接(第二種寫法:select table1.column,table2.columnfrom table1, table2 where table1.
11、column1=table2.column2(+可以使用表的別名,為了書寫的簡(jiǎn)化。 集合操作符 集合操作符將兩個(gè)查詢的結(jié)果組合成一個(gè)結(jié)果MINUSMINUS 操作符返回從第一個(gè)查詢結(jié)果中排除第二個(gè)查詢中出現(xiàn)的行。SQL SELECT orderno FROM order_master MINUSSELECT orderno FROM order_detail;INTERSECT 操作符只返回兩個(gè)查詢的公共行。SQL SELECT orderno FROM order_master INTERSECT SELECT orderno FROM order_detail重命名表:rename tab
12、le_name1 to table_name2;重命名列:alter table table_name rename column col_oldname to colnewname ;常見的select、from、where的順序:1, from 2, where 3, select完整的select、from、where、group by、having、order by的順序:1, from 2, where 3, group by 4,having 5, select 6, order byEXISTS用來判斷查詢所得的結(jié)果中,是否有滿足條件的紀(jì)錄存在。例:select *from st
13、udent where exists(select * from addresswhere zz=鄭州;從select 、from、where三者的先后執(zhí)行順序來分析。子查詢的使用 create table student(sno number(6 ,birthday date, sname varchar2(10;insert into student values(1, 11-1月-81 , 張三;insert into student values(2, 10-3月-82 , 李四;insert into student values(3, 06-1月-83 , 王五;insert in
14、to student values(4, 26-1月-83 , 趙六;create table address(sno number(6 , zz varchar2(10;insert into address values(1, 鄭州;insert into address values(2, 開封;insert into address values(3, 洛陽(yáng);insert into address values(4, 鄭州;要求:找出zz是鄭州的學(xué)生中,sno最大的學(xué)生的 sname select sname from student where sno =( select max(s
15、no from addresswhere zz= 鄭州 ;1.創(chuàng)建student表create table student(xh number,xm varchar2(10,nl int;insert into student values (1,A,21; insert into student values (2,B,22;insert into student values (3,A,23; insert into student values (4,A,24;insert into student values (5,A,25; insert into student values (
16、6,C,26;insert into student values (7,B,27;任務(wù):查找xm有相同的紀(jì)錄,并顯示出來,如下:XH XM NL- - -1 A 213 A 234 A 245 A 252 B 227 B 27答案:select * from student where xm in (select xm from student group by xm having count(*1;CREATE TABLE 管理人員 (編號(hào) char(10 ,姓名 varchar2(10 ,管理人員編號(hào) char(10;insert into 管理人員 values(001, 張一, 00
17、4;insert into 管理人員 values(002, 張二, 004;insert into 管理人員 values(003, 張三, 003;insert into 管理人員 values(004, 張四, 004;要求:現(xiàn)在想顯示:編號(hào),姓名,管理人員姓名select a.編號(hào),a.姓名,b.姓名 as 管理人員姓名 from 管理人員 a join 管理人員 b on a.管理人員編號(hào)=b.編號(hào);SELECT CASE WHEN的的使用語(yǔ)法:CASE WHEN 條件1 THEN action1WHEN 條件2 THEN action2 WHEN 條件3 THEN action3
18、. ELSE actionN END CASE select case when substr(20090310,5,2 = 01 then 一月份when substr(20090310,5,2 = 02 then 二月份when substr(20090310,5,2 = 03 then 三月份when substr(20090310,5,2 = 04 then 四月份else nullend from dual;語(yǔ)法:CASE selector WHEN value1 THEN action1 WHEN value2 THEN action2 WHEN value3 THEN actio
19、n3 . ELSE actionNEND CASEselect case substr(20090310,5,2 when 01 then 一月份when 02 then 二月份when 03 then 三月份when 04 then 四月份else nullend from dual;create table 成績(jī)(sno number, km varchar2(10, score number,grade char(6; insert into 成績(jī) values(1, 語(yǔ)文, 65,null;insert into 成績(jī) values(2, 數(shù)學(xué), 76,null;insert into
20、 成績(jī) values(3, 英語(yǔ), 86,null;insert into 成績(jī) values(4, 語(yǔ)文, 94,null;要求:把每個(gè)學(xué)生的grade列,用相應(yīng)的等級(jí)來更新。update 成績(jī) set grade = (select grade from (select sno ,case when score = 90 then 優(yōu)秀when score = 80 then 良好when score = 70 then 中等when score = 60 then 及格 else 不及格end gradefrom 成績(jī)awhere 成績(jī).sno = a.sno ;表T1里有 a,b,c.
21、N個(gè)字段,表T2里有 a,b,c三個(gè)字段,然后想在T1中c與表T2中c相同的情況下從表T2中將a,b覆蓋表T1中的a,b怎么做 ?create table T1(a int ,b int ,c int ,d int ,e int;create table T2(a int ,b int ,c int ;insert into T1 values(1,2,3,4,5;insert into T1 values(10,20,3,4,5;insert into T1 values(10,20,4, 40,50;insert into T2 values( -1, -1 , 3;insert into
22、 T2 values( -2, -2, 4;update t1 set a= (select a from t2 where t1.c= t2.c , b =(select b from t2 where t1.c= t2.c where t1.c in (select c from t2;分析函數(shù)分析函數(shù)用于計(jì)算完成聚集的累計(jì)排名、序號(hào)等分析函數(shù)為每組記錄返回多個(gè)行以下三個(gè)分析函數(shù)用于計(jì)算一個(gè)行在一組有序行中的排位,序號(hào)從1開始ROW_NUMBER 返回連續(xù)的排序,不論值是否相等RANK 具有相等值的行排序相同,序數(shù)隨后跳躍DENSE_RANK 具有相等值的行排序相同,序號(hào)是連續(xù)的DECOD
23、E 中的if-then-else邏輯 在邏輯編程中,經(jīng)常用到If Then Else 進(jìn)行邏輯判斷。在DECODE的語(yǔ)法中,實(shí)際上就是這樣的邏輯處理過程。它的語(yǔ)法如下: DECODE(value, if1, then1, if2,then2, if3,then3, . . . else Value 代表某個(gè)表的任何類型的任意列或一個(gè)通過計(jì)算所得的任何結(jié)果。當(dāng)每個(gè)value值被測(cè)試,如果value的值為if1,Decode 函數(shù)的結(jié)果是then1;如果value等于if2,Decode函數(shù)結(jié)果是then2;等等。事實(shí)上,可以給出多個(gè)if/then 配對(duì)。如果value結(jié)果不等于給出的任何配對(duì)時(shí),
24、Decode 結(jié)果就返回else 。 需要注意的是,這里的if、then及else 都可以是函數(shù)或計(jì)算表達(dá)式。Create table student(id number,name varchar2(10,sex char(1;Insert into student values(1, 張, 1;Insert into student values(2, 王, 2;Insert into student values(3, 李, 1;Select name ,decode(sex, 1,男生, 2,女生 from student;用case實(shí)現(xiàn):select id,name,case sexw
25、hen 1 then 男when 2 then 女end 性別from student;DECODE 取出一行內(nèi)兩列中的較大值 Create table sales(month char(2,sales_tv number,sales_computer number;Insert into sales values(01, 10, 18;Insert into sales values(02, 28, 20;Insert into sales values(03, 36, 33;select month, decode(sign(sales_tv -sales_computer, 1, sal
26、es_tv, sales_computer as 較大銷售量 from sales; Oracle中的行列轉(zhuǎn)換create table 銷售(商品名稱 varchar2(10, 季度 char(2, 銷售額 number;insert into 銷售 values(電視機(jī), 01, 100;insert into 銷售 values(電視機(jī), 02, 200;insert into 銷售 values(電視機(jī), 03, 300;insert into 銷售 values(空調(diào), 01, 50;insert into 銷售 values(空調(diào), 02, 150;insert into 銷售 va
27、lues(空調(diào), 03, 180;格式1:商品名稱 季度 銷售額- - -電視機(jī) 01 100電視機(jī) 02 200電視機(jī) 03 300空調(diào) 01 50空調(diào) 02 150空調(diào) 03 180格式2:商品名稱 一季度 二季度 三季度 四季度- - - - -電視機(jī) 100 200 300 0空調(diào) 50 150 180 0從格式1到格式2:select a.商品名稱,sum(decode(a.季度,01, a.銷售額 ,0 一季度,sum(decode(a.季度,02, a.銷售額 ,0 二季度,sum(decode(a.季度,03, a.銷售額 ,0 三季度,sum(decode(a.季度,04,
28、a.銷售額 ,0 四季度from 銷售 a group by a.商品名稱 order by 1;ROWNUM 的使用創(chuàng)建yggz表create table yggz (bh number(6 ,gz number;insert into yggz values(1,1000;insert into yggz values(2,1100;insert into yggz values(3,900;insert into yggz values(4,2000;insert into yggz values(5,1500;insert into yggz values(6,3000;insert into yggz values(7,1400;insert into yggz values(8,1200;作用:對(duì)查詢結(jié)果,輸出前若干條記錄注意:只能與、=3 and rn = 5;或者:select * from yggz where rownum=5minus select * from yggz where rownum=2;任務(wù):(2按工資由高到底,查找表中,第3高的到第5高的記錄,并顯示出來。結(jié)果如下:BH GZ- -5 15007 14008 1200任務(wù)(2答案:select bh,gz from (select a.*,rownum rn fr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCS 075-2023煤礦柔性薄噴材料噴涂施工技術(shù)要求
- T/CEPPEA 5034-2023海底電纜工程測(cè)量技術(shù)規(guī)程
- T/CNFIA 225.1-2024食品中致敏原成分檢測(cè)方法第1部分:總蛋白顯色反應(yīng)快速檢測(cè)法
- 上海安全員試題及答案
- 裝飾裝修工程 施工合同2篇
- 公章合同章電子章模板4篇
- 設(shè)備置換合同4篇
- 建構(gòu)人力資源巨量資料分析師積木職能模型之研究
- 呼吸困難急救處理指南
- 婚姻的心理衛(wèi)生
- 建筑工地安全培訓(xùn)流程
- 2025年中考?xì)v史專題復(fù)習(xí)講義(含練習(xí)題及答案)
- 華北電力大學(xué)丁肇豪:多主體數(shù)據(jù)中心算力-電力跨域協(xié)同優(yōu)化
- 通信汛期安全培訓(xùn)
- 2025年安徽省九年級(jí)中考語(yǔ)文第一次模擬試卷附答案解析
- 2025年初級(jí)護(hù)工考試試題及答案
- 基于STM32的輸電線路狀態(tài)監(jiān)測(cè)系統(tǒng)的研究
- 中國(guó)老年糖尿病診療指南2024版詳解 課件
- 制作標(biāo)書流程培訓(xùn)
- 人員考核協(xié)議書(2篇)
- 人格與精神障礙-學(xué)做自己的心理醫(yī)生-暨南大學(xué)2中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
評(píng)論
0/150
提交評(píng)論