【正文】
個(gè)文件host copy 原文件名新文件名3表空間表空間是存儲數(shù)據(jù)庫對象的容器,表和表空間之間的關(guān)系就相當(dāng)于文件和文件夾一樣,每次創(chuàng)建數(shù)據(jù)庫的時(shí)候,系統(tǒng)默認(rèn)的創(chuàng)建一個(gè)system系統(tǒng)表空間一個(gè)數(shù)據(jù)庫可以有一個(gè)system表空間,也可以包含若干個(gè)3常用的字符類型char、varchar、varchar2Varchar2(n):oracle自行定義的類型,兼容性特別,在企業(yè)中一般都是用varchar2char(n)用于標(biāo)識固定長度的字符串,n表示該字符串最大的保存字符個(gè)數(shù)。3SQL語句:結(jié)構(gòu)化查詢語言,是專門為操作數(shù)據(jù)庫而建立所做的命令集,功能齊全的數(shù)據(jù)庫語言,通過SQL完成對數(shù)據(jù)庫的任何操作,每一種數(shù)據(jù)庫都不太一樣,都可以使用同一個(gè)Sql語句對數(shù)據(jù)庫進(jìn)行基本操作,掌握SQL語言就可以操作任何的數(shù)據(jù)庫,學(xué)習(xí)的重點(diǎn)3DDL數(shù)據(jù)庫定義語句,用來創(chuàng)建,修改刪除表create、drop、alter DML數(shù)據(jù)操作語句,用來操作表的數(shù)據(jù)。修改,刪除insert、update、delete DCL(TCL)事務(wù)控制語句,用來管理數(shù)據(jù)庫的事務(wù) mit、rollback DQL數(shù)據(jù)查詢語句,用來查詢所需要的數(shù)據(jù)(重點(diǎn))Select3創(chuàng)建表的格式createtable表名(列名1 數(shù)據(jù)類型primary key, 列名2數(shù)據(jù)類型, 列名n數(shù)據(jù)類型)。注意;where前面沒有逗號根據(jù)where條件修改表中的數(shù)據(jù),沒有where條件,可以修改表中所有的數(shù)據(jù)4刪除語句deletefrom表名where 條件根據(jù)where條件刪除表中對應(yīng)數(shù)據(jù),沒有where條件刪除表中所有數(shù)據(jù)4向表中所有的列插入數(shù)據(jù)insert into 表名 values(列值1,列值2…...)插入的字符串類型必須單引號4查詢表中所有數(shù)據(jù) select * from 表名修改表名的方法:alter table old_table_name rename to new_table_name4向指定的列插入數(shù)據(jù)表名()中列名必須跟values中列值一一對應(yīng)。而且使用truncate刪除的數(shù)據(jù),永遠(yuǎn)都不能還原。5修改字段名語法alter table 表名 rename column 原字段名 to 新字段名5向表中添加新字段alter table 表名 add(字段1 類型 [NOT NULL],字段2 類型 [NOT NULL],....)5給表起別名在多表的連接查詢中,建議每一張都起一個(gè)別名,通過別名指向?qū)?yīng)的表中的列,避免出現(xiàn)多個(gè)表之間列名一致select ,......from 表名 別名5使用as給列起別名select 列名1 as 別名1,列名2 as 別名2.....from 表名5使用空格給列起別名select 列名1 別名1,列名2 別名2....from 表名5排序?qū)Σ樵兎祷氐慕Y(jié)果,根據(jù)某一個(gè)列或者某幾個(gè)列進(jìn)行升序或者降序格式1:select 列名/* from 表名 where 條件order by 列名 desc/asc格式2:select 列名 /* from 表名 where 條件order by 列名1 asc/desc,列名2 asc/desc desc降序asc升序、默認(rèn)值 排序永遠(yuǎn)是最后被執(zhí)行的5可以使用別名進(jìn)行排序select 列名1 別名1,列名2 別名2 from 表名 where 條件order by 別名desc/asc5帶條件的查詢select列名/*from表名 where條件60、可以使用序號進(jìn)行排序select ename,empno,sal from emp order by 3 desc 用的是sal排序6關(guān)系運(yùn)算符:,=,(不等于)判斷該列列值是否為null為null:is null不為null: is not null 6模糊查詢:like是,包含的意思%:指代0個(gè)或多個(gè)字符_:指代任意一個(gè)字符not like 不包含,不是的 意思6nvl函數(shù)專門處理空值的問題6使用‘+’連接數(shù)字和null返回的結(jié)果也為null 6nvl(數(shù)字/列名,數(shù)值);如果該列的列值為null,返回?cái)?shù)值;如果該列的列值不為null,則返回該列的列值nvl(列名,0)6nvl2(數(shù)字/列,返回結(jié)果一(不為null顯示),返回結(jié)果二(為null顯示))6nullif(表達(dá)式一,表達(dá)式二)判斷表達(dá)式是否相等,如果相等返回null,不相等返回表達(dá)式一 6select case 列/數(shù)值 then 表達(dá)式1 then 顯示結(jié)果1then 表達(dá)式2 then 顯示結(jié)果2 …else 表達(dá)式n end 別名 from 表名如果數(shù)值/列等于表達(dá)式1則顯示結(jié)果1 如果等于表達(dá)式2則顯示結(jié)果2,如果都不等于。求出該列的最大值 min(列名):求出該列的最小值 avg(列名):求出該列的平均值 median(列):求出中間值 variance(列):返回方差 stddev(列):返回標(biāo)準(zhǔn)差 8多字段分組格式:select 分組字段1,分組字段2,列名/聚合函數(shù)from表名 where 條件groupby 分組字段1,分組字段2...order by 列名/聚合函數(shù)/別名asc/descselect , nvl(count(),0),nvl(max(),0)最高工資,nvl(min(),0)最低工資,nvl(round(avg(),2),0)平均工資from emp e,dept dwhere =(+)group by ,8字符處理函數(shù)lower(字符串/列名);把字符串/列值中所有的大寫字母改成小寫字母dual:虛擬表,專門用來進(jìn)行測試的表upper(列名/字符串):把列值/字符串中所有的小寫字母改成大寫字母length(列名/字符串):統(tǒng)計(jì)當(dāng)前列值/字符串中字符的個(gè)數(shù) select ename,job,lower(ename),lower(job)from emp select upper(39。)from dual select ename,length(ename)from emp 8給出一個(gè)整數(shù)并返回與之對應(yīng)的字符串CHR(數(shù)字)返回與指定字符對應(yīng)的十進(jìn)制數(shù)字ASCII(39。)首字母大寫函數(shù)INITCAP(列/字符串)8在左或右填充指定長度的字符串LPAD(39??傞L度,39。)RPAD(39??傞L度,39。)還可以組合使用8查找函數(shù) instr(列/字符串,查找的字符串,開始位置,出現(xiàn)位置)8替換函數(shù)replace(列名/字符串,指定字符,新的字符串)select replace(39。,39。,39。)from dual8substr(參數(shù)1,參數(shù)2,參數(shù)3):截取字符串參數(shù)1:列名/字符串,指定要截取的列或者字符串參數(shù)2;如果為正數(shù)表示從正數(shù)的標(biāo)號開始截取,起始是1,比如參數(shù)2(5),從第五個(gè)字母開始截取。參數(shù)3:表示要截取字符的個(gè)數(shù)沒有參數(shù)3表示截取所有8求出emp表中ename的最后3個(gè)字符(兩種方法)第一種方法select substr(39。,3,3)from emp第二種方法select substr(39。,length(39。)2,3)from emp90、TRIM(列名/字符串):刪除列刪除列值/字符串兩端的空格select trim(39。)from emp 9去掉左或右的空格LTRIM(39。)RTRIM(39。)9連接(串聯(lián))字符串: 使用|| 連接多個(gè)字符串9concat(字符串1,字符串2): 串聯(lián)字符串9to_char()。如果不指定位數(shù)則從小數(shù)點(diǎn)后面四舍五入sign(數(shù)值):標(biāo)記性函數(shù),如果數(shù)值是正數(shù),返回值是1,如果數(shù)值是0,返回值是0,如果數(shù)值是負(fù)數(shù),返回值是1 9trunc:截取函數(shù)trunc(數(shù)值,參數(shù)):如果參數(shù)為正數(shù),表示保留幾位小數(shù),如果參數(shù)為0,表示舍棄所有的小數(shù),如果參數(shù)為負(fù)數(shù),表示對小數(shù)點(diǎn)前第幾位舍棄。9having 子句跟group by 結(jié)合使用,對分組以后的數(shù)據(jù)進(jìn)行再次過濾格式1:select 列名/聚合函數(shù) from 表名 where 條件。對分組后的數(shù)據(jù)進(jìn)行過濾 order by 列名/別名/聚合函數(shù)asc /desc 9也可以和多字段分組結(jié)合 格式2:select 字段1,字段2...,列名/聚合函數(shù) from 表名 where 條件。對分組后的數(shù)據(jù)進(jìn)行過濾 order by 列名/別名/聚合函數(shù)asc /desc列出至少有一個(gè)員工的部門編號,名稱,并統(tǒng)計(jì)這些部門的平均工資,最高工資,最低工資select ,round(avg(),2), max(),min()from dept d ,emp ewhere =(+)group by ,having count()1分析:首先執(zhí)行where條件,對表中所有的數(shù)據(jù)進(jìn)行過濾,然后執(zhí)行g(shù)roup by,根據(jù)某一組對余下的數(shù)據(jù)進(jìn)行分組,之后使用having子句對分組后的數(shù)據(jù)再次進(jìn)行過濾。clerk39。SALES39。10查詢中每個(gè)部門的編號,名稱,地址,人數(shù),平均工資with e as(select deptno dno,count(empno)count, round(avg(sal),2)avg from emp group by deptno)select , from e,dept d where =(+)10每個(gè)部門工資最高的員工編號,姓名,職位,入職日期,工資,部門編號,部門名稱,按照部門編號升序with x as(select deptno dno,max(sal)max from emp group by deptno)select , from x,emp e,dept d where = and = and = order by 10約束設(shè)計(jì)表的時(shí)候,提前添加一些限制(條件),只有滿足這些條件的數(shù)據(jù)可以插入到表中,這些限制(條件)就是約束,只能滿足這些約束的數(shù)據(jù)可以真正保存到表中 10主鍵約束被主鍵約束修飾的列,該列的列值必須非空而且唯一,通過主鍵約束來避免表的數(shù)據(jù)出現(xiàn)冗余(重復(fù)的數(shù)據(jù))(約束),修飾多個(gè)列的組合值,稱為聯(lián)合主鍵或者復(fù)合主鍵 10創(chuàng)建表的時(shí)候指定主鍵名字create table worker2(id number(4)constraint pk_w2_id primary key, name varchar2(50))10創(chuàng)建表的時(shí)候設(shè)置聯(lián)合主鍵create table worker3(id number(4), name varchar2(50), age number(3), address varchar2(50), constraint pk_w3_id_nameprimary key(id,name))10修改表的時(shí)候設(shè)置主鍵約束 alter table 表名 add constraint 約束名 primary key(列名1,列名2...)10刪除主鍵 只能用來刪除主鍵 格式: alter table 表名 drop primary key可以刪除大部分約束 格式:alter table 表名 drop constraint 約束名1唯一約束用來指定一個(gè)列或者多個(gè)列的組合值具有唯一性,防止在該列中輸入重復(fù)的列值,一張表中可以有多個(gè)唯一約束,該列的列值可以為空值 。男39。女39。11創(chuàng)建表時(shí)候設(shè)置默認(rèn)值約束 create table worker14(id number(4)primary key, name varchar2(50), age number(3)default 20, salary number(7,2)default 5000)11修改表時(shí)候設(shè)置默認(rèn)值 alter table 表名 modify 列名 數(shù)據(jù)類型 default 默認(rèn)值11刪除默認(rèn)值:使用modify 把默認(rèn)值設(shè)置為nullalter table 表名 modify 列名 數(shù)據(jù)類型 default null1非空約束該列的列值不能為空(null)12創(chuàng)建表的時(shí)候設(shè)置非空約束create table worker15(id number(4)primary key, name varchar2(50)not null unique, age number(3), address varchar2(50))12修改表的時(shí)候設(shè)置非空約束使用modify,可以設(shè)置多個(gè)列的非空約束 alter table 表名 modify(列名1 not null)modify(列名2 not null)....modify(列名n not null)12刪除非空約束使用modify,可以刪除多個(gè)列的非空約束 alter table 表名 modify(列名1 null)modify(列名2 null)……modify(列名n null)12外鍵約束用于維護(hù)兩張表之間的關(guān)聯(lián)關(guān)系,被外鍵約束所修飾的列該列的列值必須跟與之關(guān)聯(lián)另外一張表中,主鍵所在的列的列值對應(yīng) 子表:外鍵所在的表,稱為子表 父表/主表:沒有外鍵的表,稱為父表。3)使用唯一約束修飾的列,系統(tǒng)會默認(rèn)添加一個(gè)索引12索引的創(chuàng)建 格式create index 索引名名稱 on 表名(列名)刪除索引drop index索引名稱1索引的優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):提高查詢速度缺點(diǎn):,但是減緩了對數(shù)據(jù)的修改(insert ,update,delete)速度13事物把對表的一系列操作封裝到一個(gè)事務(wù)中,要么一