亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle Class4. 數(shù)據(jù)庫(kù)對(duì)象(同義詞,序列,視圖,

系統(tǒng) 1753 0

------------------------2013-5-9------------------------
索引的建立情況:經(jīng)常用于查詢,排序和分組的列(即經(jīng)常在where,order或group by子句中出現(xiàn)的列)

主鍵索引和復(fù)合索引。

desc student;
create index i_stu_name on student(STU_NAME);

--刪除索引,當(dāng)表結(jié)構(gòu)被刪除時(shí),與其所有的索引都會(huì)隨之刪除。
drop index i_stu_name;

--查詢索引的語(yǔ)句,表名必須大寫,否則查詢不到值。
select table_name, index_name,status from all_indexes where table_name = 'STUDENT';

select index_name,column_name,column_position from all_ind_columns where table_name='STUDENT';

索引的特點(diǎn):
1.不同值較多上建立索引,不同值少的列上不要建。如性別列只有男與女兩個(gè)值,因此就沒(méi)有必要建立索引。(bitmap)
2.索引上面加表達(dá)式,索引不能正常使用。 (函數(shù)索引)
3.where子句中如果使用in,or,like,!=,均會(huì)導(dǎo)致索引不能正常使用。
4.使用復(fù)合索引進(jìn)行查詢時(shí)必須使用前置列。

寫where條件時(shí),有索引的判斷在前,其他字段的判斷在后。如果where條件中用到復(fù)合索引,按照索引列在復(fù)合索引中出現(xiàn)的順序來(lái)依次寫where條件。
使用多表連接時(shí),在from子句中,將記錄數(shù)少的表放在后面,可提高執(zhí)行效率。

首先從大表中查詢需要的記錄,此時(shí)記錄數(shù)已經(jīng)被大量縮小,然后再和其他兩個(gè)表連接,速度會(huì)得到很大改善!

查詢數(shù)量較大時(shí),使用表連接代替in,exists,not in,not exists等。

然后不斷的積累經(jīng)驗(yàn),并且注意不能一概而論。

全局索引,本地索引,全局分區(qū)索引。

--創(chuàng)建臨時(shí)表
--create global temporary table myemp as select * from student;

select * from myemp;
desc myemp;

--刪除臨時(shí)表
drop table myemp;

--增加一個(gè)列
--alter table student add(deptno varchar2(6));
--修改一個(gè)列
--alter table student modify(deptno varchar2(10));
--刪除表中的一個(gè)列,oracle8.0.5版本以上方可。
alter table student drop column deptno;

desc student;

-->3.2.4使用CHECK做限制條件

------------------------2013-5-10------------------------

--創(chuàng)建員工宿舍表
create table lodging(
? lodging char(18) primary key,
? name varchar2(10)
);

--創(chuàng)建工人表
create table worker(
? empno number(4) primary key,
? name varchar2(10),
? age number(2) check(age between 18 and 60),?? --check檢查約束
? lodging char(18) references lodging(lodging)? --外鍵關(guān)聯(lián)
);

--員工基本信息表
create table emp3(
? empno number(4) constraint abc primary key,
? ename varchar2(10),
? job varchar2(10),
? sex char(2) check(sex='男' or sex='女'),
? mgr number(4),
? hiredate date,
? sal number(7,2),
? comm number(7,2),
? deptno number(2),
? check (sal+comm > 0 and sal+comm < 5000)
);


--使用unrecoverable創(chuàng)建表,nolodging lodging
create table table_copy as select * from emp3 unrecoverable;
--使用nolodging關(guān)鍵字創(chuàng)建
create table table_copy2 as select * from emp3 nolodging;
--使用lodging關(guān)鍵字創(chuàng)建
create table table_copy3 as select * from emp3 lodging;

--查詢表空間
select tablespace_name,table_name,initial_extent from user_tables;

create table table3(
? xm varchar2(12),
? sal number(4,2)
);

//修改表結(jié)構(gòu)
alter table table3 modify sal number(6,2);

insert into table3 values('gao',1111.11);
insert into table3 values('gao',1111.11);
insert into table3 values('zhu',5555.55);


insert into table3 values('zhu',55551.55);
ORA-01438: 值大于此列指定的允許精確度

##定點(diǎn)數(shù)的精度(p)和刻度(s)遵循以下規(guī)則##
1.當(dāng)一個(gè)數(shù)的整數(shù)部分的長(zhǎng)度 > p-s時(shí),Oracle會(huì)報(bào)錯(cuò)。
alter table table3 add sal2 number(6,2);???? -->1111.11
2.當(dāng)一個(gè)數(shù)的小數(shù)部分的長(zhǎng)度 > s時(shí),Oracle就會(huì)舍入。??
insert into table3 values('zhu',5555.5589);???????? -->5555.56
3.當(dāng)s(scale)為負(fù)數(shù)時(shí),Oracle就對(duì)小數(shù)點(diǎn)左邊的s個(gè)數(shù)字進(jìn)行舍入。
alter table table3 add sal2 number(2,-2);

insert into table3 values('zhu',1111.11,5609.12);?? -->5600
insert into table3 values('zhu',1111.11,5678.78);?? -->5700
insert into table3 values('zhu',1111.11,609.12);??? -->600
insert into table3 values('zhu',1111.11,63.12);???? -->100
insert into table3 values('zhu',1111.11,43.12);???? -->0

4.當(dāng)s > p時(shí),p表示小數(shù)點(diǎn)后第s位向左最多可以有多少位數(shù)字,如果大于p則Oracle報(bào)錯(cuò),小數(shù)點(diǎn)后s位向右的數(shù)字被舍入。
--更加明白的說(shuō)法--
--當(dāng)p小于s時(shí)候,表示數(shù)字是絕對(duì)值小于1的數(shù)字,且從小數(shù)點(diǎn)右邊開(kāi)始的前s-p 位必須是0,保留s位小數(shù)。
insert into table3 values('zhu',1111.11,43.12,0.00126);? -->0.0013

insert into table3 values('zhu',1111.11,43.12,0.00996);? -->報(bào)錯(cuò),這樣會(huì)進(jìn)位,絕對(duì)值大于1。
#http://ilinux.iteye.com/blog/289550#

--對(duì)表中的列表示為不使用
--alter table table3 set unused(sal3);


--創(chuàng)建主鍵
create table dept1(
? deptno number(2),
? dname varchar2(10),
? loc varchar2(20),
? constraint pk_dept primary key(deptno)
);

--增加表的主鍵
--alter table table3 add ( pk_key primary key (sal) );

--ORA-00907: 缺少右括號(hào) ??
alter table table3 add(pk_key primary key (xm));? --可能跟表有關(guān)系

alter table dept1 add primary key(deptno);??????? --系統(tǒng)默認(rèn)的名稱
alter table dept1 add constraint pk_dept primary key(deptno); --constraint必須要寫--
#http://miracle.blog.51cto.com/255044/55315#

--主鍵不可用
create table dept2(
? deptno number(2) primary key,
? dname varchar2(10)
)
disable primary key;


--啟用取消的主鍵,才可以建立外鍵關(guān)系,否則報(bào)錯(cuò)。
alter table dept2 enable primary key;

--ORA-02270: 此列列表的唯一或主鍵不匹配
create table table4(
? id varchar2(8),
? deptno number(2) references dept2(deptno)?? --外鍵
);

唯一索引和復(fù)合主鍵
e_name varchar2(8) constraint un_dname unique,
name varchar2(10) constraint pt_1 primary key,
表結(jié)構(gòu)最后一行寫
constraint pri_3 primary key(deptno)
--外鍵
deptno constraint pri_4 references dept5(deptno);


--創(chuàng)建復(fù)合主鍵
--alter table dept1 add constraint pk_dept primary key(deptno,dname);

alter table dept1 add primary key(deptno,dname);

--創(chuàng)建復(fù)合主鍵 禁用狀態(tài)。
alter table dept1 add primary key(deptno,dname) disable;

--禁用主鍵,如果有一外鍵依賴于該主鍵,則系統(tǒng)會(huì)報(bào)錯(cuò)。
alter table dept1 disable constraint SYS_C002136;? (語(yǔ)法適用于外鍵)
--恢復(fù)主鍵
alter table dept1 enable constraint SYS_C002136;
--刪除主鍵
alter table dept1 drop constraint SYS_C002136;??? (語(yǔ)法適用于外鍵)
--刪除主鍵,將外鍵一起刪除。
alter table dept1 drop constraint pk_2 cascade;

create table dept5(
? deptno varchar(8),
? name varchar(8),
? loc varchar(4),
? constraint pri_3 primary key(deptno)? --建立主鍵
);

create table emp5(
? emptno number(4),
? ename varchar2(10),
? job varchar2(10),
? mgr number(4),
? deptno constraint pri_4 references dept5(deptno)? --外鍵
);

create table emp6(
? emptno number(4),
? ename varchar2(10),
? job varchar2(10),
? mgr number(4),
? deptno, constraint pri_5 foreign key(deptno) references dept5(deptno)? --外鍵,逗號(hào)不能少。
);

create table emp7(
? emptno number(4),
? ename varchar2(10),
? job varchar2(10),
? mgr number(4),
? deptno varchar(8) , constraint pri_6 foreign references dept5(deptno) on delete cascade? --外鍵,使用delete cascade管理引用完整性
);

#索引組織表# 基于主鍵進(jìn)行搜索
create table命令與organization index子句一起用于創(chuàng)建索引組織表。
--表及索引.txt--

--抽象數(shù)據(jù)類型的使用
create type add_type as object(
? street varchar2(10),? --街道名
? city varchar2(10),??? --城市名
? state char(2),??????? --州代碼
? zip?? number????????? --郵編
);
create table customer(
? name varchar2(10),
? address add_type
);
insert into customer values('1',add_type('mystatree','some city','st',10001));

大數(shù)據(jù)類型使用,clob,blob,bfile。? -->ORACLE埃里森1.txt

3.9.1.表和索引數(shù)據(jù)字典
?.DBA_TABLES,ALL_TABLES,USER_TABLES? 存放表的基本信息
?.DBA_INDEXS,ALL_INDEXS,USER_INDEXS? 存放索引的基本信息
?.DBA_IND_COLUMN???????????????????? 存放有索引的列的信息
?.ALL_CONSTRAINTS??????????????????? 存放表的限制信息
?.ALL_COLS_COLUMNS?????????????????? 存放表的列的限制信息

查詢當(dāng)前用戶的基本信息,包括表名,索引名及表空間,存儲(chǔ)參數(shù)。
select tablespace_name,table_name,initial_extent,next_extent from all_tables where owner = user;

--查詢當(dāng)前用戶的限制信息
select owner,constraint_name,table_name from user_constraints;

select search_condition from user_constraints;
SEARCH_CONDITION
--------------------------------------------------------------------------------
sex='男' or sex='女'
sal+comm > 0 and sal+comm < 5000
"ID" IS NOT NULL
"NAME" IS NOT NULL
age between 18 and 60


#創(chuàng)建視圖#
create or replace view viewTitles
as
select title_id,nvl(price,0) price from titles;? --SQL語(yǔ)句--

無(wú)法直接指定一個(gè)分區(qū)數(shù)據(jù)表的多個(gè)分區(qū)中的數(shù)據(jù)時(shí),通過(guò)union關(guān)鍵字將多個(gè)數(shù)據(jù)表分區(qū)聯(lián)結(jié)。
create or replace view viewStus
as
select * from student partition(east)
union
select * from student partition(west);
--通過(guò)視圖來(lái)實(shí)現(xiàn),可以簡(jiǎn)化SQL命令。
select * from viewStus;

查看用戶創(chuàng)建的視圖信息(user_views)
select * from user_views;

刪除試圖
delete view viewStus;

--查看用戶序列
desc user_sequences;
--查詢簇信息
desc user_clusters;

##簇##

簇表
簇索引
簇表其實(shí)就是一組表,是一組共享相同數(shù)據(jù)塊的多個(gè)表組成。將經(jīng)常一起使用的表組合在一起成為簇可以提高處理效率。
在一個(gè)簇中的表就叫做簇表。建立順序是:簇 ->簇表 ->數(shù)據(jù) ->簇索引。

唯一索引
組合索引
反向鍵索引:在創(chuàng)建索引時(shí)使用reverse關(guān)鍵字。
位圖索引:為低基數(shù)列創(chuàng)建,bitmap index語(yǔ)句用于創(chuàng)建位圖索引。
?? 優(yōu)點(diǎn):減少響應(yīng)時(shí)間,降低空間占用。
?? --無(wú)須頻繁的修改造成死鎖--


當(dāng)索引被創(chuàng)建后,由Oracle自動(dòng)維護(hù)。

create table student8(
? stu_no number(2),
? stu_name varchar2(8)
);

--在指定的字段上創(chuàng)建唯一索引
create unique index idx_stu_no
on student8(stu_no);


insert into student8 values(1,'ANiu');
--ORA-00001: 違反唯一約束條件 (NEWLIFEYHJ.IDX_STU_NO)
insert into student8 values(1,'AZhu');

select * from student8;

數(shù)據(jù)庫(kù)對(duì)象
同義詞:數(shù)據(jù)庫(kù)對(duì)象的替換名稱,隱藏了對(duì)象的名稱和所有者。
序列:生成唯一,連續(xù)的整數(shù)。
-- 獲取序列的下一個(gè)值
-- 序列的第一個(gè)值必須通過(guò)NextValue來(lái)獲得
select seqTest1.NextVal from dual;
-- 獲取序列的當(dāng)前值
select seqTest1.CurrVal from dual;
視圖:經(jīng)過(guò)定制的表示方式,用于顯示來(lái)自一個(gè)或多個(gè)表的數(shù)據(jù)。
索引:加快了SQL語(yǔ)句的執(zhí)行速度。多個(gè)列上的創(chuàng)建的索引稱為“組合索引”。
????? 在索引組織表中,數(shù)據(jù)訪問(wèn)基于主鍵值。
簇:一組表,這些表?yè)碛泄擦校⑶乙黄鹗褂谩?

create
alter
drop


------------------------2013-5-14------------------------
普通表與索引表的對(duì)比
普通表???索引編排表
rowid唯一的標(biāo)識(shí)行?主鍵唯一的標(biāo)識(shí)行
隱式的rowid列??沒(méi)有隱式的rowid列
基于rowid的訪問(wèn)??基于主鍵的訪問(wèn)
順序掃描返回所有行?完全索引掃描返回所有行,并按主鍵順序排列
普通表可以存儲(chǔ)在簇中?索引組織表不能存儲(chǔ)在簇中
支持分發(fā),復(fù)制和分區(qū)?不支持分發(fā),復(fù)制和分區(qū)

區(qū)別:rowid與主鍵,順序掃描和索引掃描,簇,分發(fā),復(fù)制和分區(qū)。

基于函數(shù)的索引
基于一個(gè)或多個(gè)列上的函數(shù)或表達(dá)式創(chuàng)建的索引
表達(dá)式中不能包含聚集函數(shù)(sum,count,avg,min,max)
不能在lob,ref或嵌套表列上創(chuàng)建

鍵壓縮索引:compress子句用于創(chuàng)建這種索引。
分區(qū)索引
分區(qū)索引的類型
本地索引
全局索引

Oracle Class4. 數(shù)據(jù)庫(kù)對(duì)象(同義詞,序列,視圖,索引,簇)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久热这里只有精品6 | 成人91视频 | 男人的天堂在线免费视频 | 欧美综合中文字幕久久 | 婷婷玖玖 | 美女精品久久久久久国产潘金莲 | 欧美一级毛片欧美一级 | 久久精品中文字幕首页 | 亚洲视频在线免费看 | 12至16末成年毛片 | 黄色成人在线 | 日韩黄色大片 | 松永纱奈在线观看 | 日韩国产成人资源精品视频 | 精品日韩在线观看 | 深夜福利网站在线 | 人人做人人爽久久久精品 | 天天射久久 | 亚洲在线播放视频 | 羞羞网页 | 特级毛片免费视频播放 | 亚洲综合狠狠 | 欧美毛片在线 | 四虎网站在线观看 | 国产一级特黄老妇女大片免费 | 毛片18| 性色黄| 大陆一级毛片免费视频观看 | www操操| 久久久精品2018免费观看 | 中国妞xxxx | 色婷婷中文网 | 一区二区亚洲精品 | 欧美人成毛片在线播放 | 狠狠色狠狠色很很综合很久久 | 福利视频在线观看午夜 | 91成人影院未满十八勿入 | 久久国产精品自由自在 | 久久伊人影院 | 亚洲一级片免费 | 四虎b3t77com|