Oracleラーニング4
28101 ワード
Oracleラーニング4データベース・オブジェクト-インデックス 2データベース・オブジェクト-ビュー 3 ROWNUM詳細 4データベース・オブジェクト-同義語 5データベース・オブジェクト-シーケンス
1データベース・オブジェクト-索引
データベースで最も多く使用されているのはテーブルです.次に、インデックスとは何ですか.1、スキーマの1つのデータベース・オブジェクト2、Oracleデータベースでテーブルに対するクエリーを高速化するために使用される3、高速パス・アクセス・メソッドを使用してデータを迅速に位置決めすることで、ディスクを削減するI/O 4、インデックスは独立したデータベース・オブジェクトであり、テーブルに格納されるのではなく、テーブルと独立して格納される5、インデックスは、テーブルのインデックス・フィールドの値、つまりキーワードを記録します.キーワードは常にテーブルのインデックス・フィールドの値と同じです.この6、同期はOracleデータベースによって自動的に維持されます.
2データベース・オブジェクト-表示
行内ビュー
3 ROWNUM詳細
4データベース・オブジェクト-シノニム
1、同義語はデータベースオブジェクトの別名である2、同義語はオブジェクトへのアクセスを簡略化できる3、同義語を用いることにより、別のユーザオブジェクトを参照する方法(ユーザ名.オブジェクト名)を簡略化する4、オブジェクト名の長さを短縮する5、同時に対象の名前を遮断し、ユーザが最終的なデータがそのオブジェクトに由来することを知らないようにする
5データベース・オブジェクト-シーケンス
NEXTVAL、CURRVALの使用SELECT*.CURRVAL FROM SYS.DUAL;
1データベース・オブジェクト-索引
データベースで最も多く使用されているのはテーブルです.次に、インデックスとは何ですか.1、スキーマの1つのデータベース・オブジェクト2、Oracleデータベースでテーブルに対するクエリーを高速化するために使用される3、高速パス・アクセス・メソッドを使用してデータを迅速に位置決めすることで、ディスクを削減するI/O 4、インデックスは独立したデータベース・オブジェクトであり、テーブルに格納されるのではなく、テーブルと独立して格納される5、インデックスは、テーブルのインデックス・フィールドの値、つまりキーワードを記録します.キーワードは常にテーブルのインデックス・フィールドの値と同じです.この6、同期はOracleデータベースによって自動的に維持されます.
--
--1. :Oracle
-- . , , .
-- , UNIQUE
ALTER TABLE EMP ADD CONSTRAINTS ENAME_UNI UNIQUE (ENAME);
ALTER TABLE EMP DROP CONSTRAINTS ENAME_UNI;
SELECT * FROM EMP;
-- 2. , , NOMAL
-- , ,
CREATE INDEX ENAME_INDEX ON EMP (ENAME);
--
DROP INDEX ENAME_INDEX;
SELECT * FROM EMP WHERE ENAME = 'SMITH';
2データベース・オブジェクト-表示
-- ================================ =============================================
-- , ,
--
CREATE VIEW HR_VIEWAS SELECT * FROM EMP;
--
CREATE VIEW HR_MGR AS SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,DEPTNO FROM EMP ;
-- ,
DESC EMP;
DESC HR_VIEW;
SELECT * FROM HR_VIEW WHERE EMPNO = 7369;
CREATE OR REPLACE VIEW HR_MGR
AS
SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,DEPTNO,COMM
FROM EMP ;
-- , !
DROP VIEW HR_MGR;
SELECT * FROM HR_MGR;
SELECT * FROM EMP;
--
CREATE OR REPLACE VIEW VIEW_EMPINFO
AS
SELECT E.EMPNO,E.ENAME,E.JOB,E.MGR,E.HIREDATE,E.SAL, (E.SAL*12) AS " " ,E.COMM ,(E.SAL*12 + NVL(E.COMM,0))" " ,E.DEPTNO,D.DNAME,D.LOC_ID,L.LOCNAME
FROM EMP E,DEPT D,LOCATIONS L
WHERE E.DEPTNO = D.DEPTNO AND D.LOC_ID= L.LOCID;
SELECT * FROM VIEW_EMPINFO WHERE < 20000;
CREATE OR REPLACE VIEW VIEW_EMP
( , , , )
AS
SELECT EMPNO,ENAME,SAL,COMM FROM EMP;
SELECT * FROM VIEW_EMP WHERE = 7369;
SELECT * FROM VIEW_EMP WHERE = 'SMITH';
--
CREATE OR REPLACE VIEW V_EMP_SAL
AS
SELECT DEPTNO,MAX(SAL) MAXSAL ,MIN(SAL) MINSAL,SUM(SAL) SUMSAL,AVG(SAL) AVGSAL
FROM EMP
WHERE DEPTNO IS NOT NULL
GROUP BY DEPTNO
ORDER BY DEPTNO;
SELECT * FROM V_EMP_SAL WHERE MAXSAL > 2000;
-- ( ) , ,
CREATE OR REPLACE VIEW V_EMPINFO
AS
SELECT * FROM EMP WHERE SAL > 2000;
-- , !
INSERT INTO V_EMPINFO VALUES (8000,' 1',' ',7902,'12-8 -1987',1900,500,20);
SELECT * FROM EMP;
-- , DML
CREATE OR REPLACE VIEW V_EMPINFO AS SELECT * FROM EMP WITH READ ONLY
行内ビュー
-- , FROM , , ,
-- , TOP-N
-- ROWNUM <=
SELECT ROWNUM,E.*
FROM (SELECT * FROM EMP ORDER BY SAL DESC) E
WHERE ROWNUM <= 3;
-- >=
SELECT ROWNUM,E.*
FROM (SELECT * FROM EMP ORDER BY SAL DESC) E
WHERE ROWNUM >= 12;
3 ROWNUM詳細
-- ,
DROP TABLE STUDENT;
CREATE TABLE STUDENT(
ID NUMBER (4) primary key,
NAME VARCHAR2(20)
);
insert into Student values (1000,' ');
insert into Student values (1001,' ');
insert into Student values (1002,' ');
insert into Student values (1003,' ');
insert into Student values (1004,' ');
insert into Student values (1005,' ');
insert into Student values (1006,' ');
SELECT * FROM STUDENT for update;
/*
(1) rownum
, rownum=1 。
, rownum=2 。 rownum 1 , 1 rownum
false , rownum = n(n>1 )。
*/
select rownum ,T.* FROM student T where rownum = 1; --
select rownum,id,name from student where rownum = 2; --
/*
2)rownum
, rownum>2 , rownum
1 ,Oracle rownum> n(n>1 ) ,
*/
select rownum,id,name from student where rownum >=2;
/*
, 。 rownum
, , rownum , ,
rownum 。
*/
select * from(select rownum no ,id,name from student) where no>=2 and no <=5;
/*
3)rownum
, rownum<3 。
rownum rownum1 ) , 。
*/
select rownum ,id name from student where rownum <3;
/*
(4) rownum , rownum
true ,rownum false ,
true 。 。 rownum ,
, , , rownum
。 。
*/
select * from (select rownum no,id,name from student where rownum<=5 ) where no >=3;
select * from (select rownum no ,id,name from student) where no>=3 and no <=5;
/*
(4)rownum
Oracle rownum , rowmun 。
*/
select rownum ,id,name from student order by name;
/*
,rownum name 。 ,
rowid 。 ,
*/
select rownum ,id,name from (select * from student order by name);
--rowid , oracle
select rowid ,e.* from emp e
4データベース・オブジェクト-シノニム
1、同義語はデータベースオブジェクトの別名である2、同義語はオブジェクトへのアクセスを簡略化できる3、同義語を用いることにより、別のユーザオブジェクトを参照する方法(ユーザ名.オブジェクト名)を簡略化する4、オブジェクト名の長さを短縮する5、同時に対象の名前を遮断し、ユーザが最終的なデータがそのオブジェクトに由来することを知らないようにする
-- , ,
SELECT SYSDATE FROM SYS.DUAL;
create or replace synonym DUAL1 for SYS.DUAL;
SELECT SYSDATE FROM DUAL1;
--
DROP SYNONYM DUAL1;
5データベース・オブジェクト-シーケンス
NEXTVAL、CURRVALの使用SELECT*.CURRVAL FROM SYS.DUAL;
-- ,
DROP TABLE STUDENT;
CREATE TABLE STUDENT(
SID NUMBER(4) PRIMARY KEY,
SNAME VARCHAR2(10)
);
create sequence SEQ_STU
minvalue 1
maxvalue 9999
start with 1
increment by 1;
--
INSERT INTO STUDENT VALUES (SEQ_STU.NEXTVAL,' 1');
SELECT * FROM STUDENT;
SELECT SEQ_STU.CURRVAL FROM SYS.DUAL;
DELETE FROM STUDENT WHERE SID >= 10;