반응형
반응형
반응형

 

ANSI Query(SQL)

  • ANSI(American National Standards Institute, 미국 국립 표준 협회)에서 제시한 SQL에 대한 보편적인 문법

Visual Representation of SQL Joins - CodeProject

https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

 


 

오라클 Join 예제.

 

테이블 : T_MEMBER

T_MEMBER 테이블

 

테이블 : T_DEPARTMENT

T_DEPARTMENT 테이블

 


 

Inner Join
-- (교집합) 각 테이블에서 조인 조건에 일치되는 데이터만 가져온다.

(ANSI) SELECT m.*, d.* FROM T_MEMBER m INNER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d WHERE m.DEPT_IDX = d.DEPT_IDX;

Inner Join

 

 

 

Outer Join
-- 조인 조건에 일치하는 데이터 및 일치하지 않은 데이터를 모두 SELECT 한다.
-- 조인 조건에 일치하는 데이터가 없다면 NULL로 가져온다.
-- 주(main) 테이블이 어떤 테이블인지가 중요하다.

 

  • Left Outer Join
(ANSI) SELECT m.*, d.* FROM T_MEMBER m LEFT OUTER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX ORDER BY m.MEM_ID;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d WHERE m.DEPT_IDX = d.DEPT_IDX(+) ORDER BY m.MEM_ID;

Left Outer Join

 

  • Right Outer Join
(ANSI) SELECT m.*, d.* FROM T_MEMBER m RIGHT OUTER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX ORDER BY m.MEM_ID;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d WHERE m.DEPT_IDX(+) = d.DEPT_IDX ORDER BY m.MEM_ID;

Right Outer Join

 

  • Full Outer Join
(ANSI) SELECT m.*, d.* FROM T_MEMBER m FULL OUTER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX ORDER BY m.MEM_ID;
(Oralce) X

Full Outer Join

 

 

Cross Join
-- 두 테이블 조인 시 가능한 모든 경우의 레코드를 SELECT 한다.
-- 경우의 수 : N * M

(ANSI) SELECT m.*, d.* FROM T_MEMBER m CROSS JOIN T_DEPARTMENT d ORDER BY m.MEM_ID, d.DEPT_IDX;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d ORDER BY m.MEM_ID, d.DEPT_IDX;

Cross Join

 

Self Join
-- 테이블이 자기 자신을 마치 다른 테이블처럼 취급하여 조인한다.

(ANSI) SELECT m.*, d.* FROM T_MEMBER m JOIN T_MEMBER d ON m.MEM_ID = d.MEM_ID ORDER BY m.MEM_ID;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_MEMBER d WHERE m.MEM_ID = d.MEM_ID ORDER BY m.MEM_ID;

Self Join

 

 

 

반응형

'Database > Oracle' 카테고리의 다른 글

NLS 파라미터 확인  (0) 2020.11.17
JDBC 오류?? varchar 에 2000byte 이상 insert 하기.  (0) 2011.11.07
캐릭터셋 확인.  (0) 2011.10.20
오라클 구동 방법  (0) 2011.01.05
[Link] hierarchy query  (0) 2010.11.09
반응형

# 세션 레벨.(현재 세션 정보)
SELECT parameter, value FROM nls_session_parameters;
 - alter session set nls_XXX 로 변경 가능.

# 인스턴스 레벨.
SELECT PARAMETER, value FROM nls_instance_parameters;
 = SELECT name, VALUE FROM V$PARAMETER where name like '%nls%';

# DB 레벨.(설치시 정보 - 변경 불가)
SELECT parameter, value FROM nls_database_parameters;
= SELECT PARAMETER, VALUE FROM V$NLS_PARAMETERS;
= SELECT name, value$ FROM sys.props$ where name like '%NLS%';

set pagesize 30set linesize 300

column PARAMETER format a30
column VALUE format a30

column value$ format a30

반응형

'Database > Oracle' 카테고리의 다른 글

오라클 JOIN / ANSI JOIN  (0) 2022.02.03
JDBC 오류?? varchar 에 2000byte 이상 insert 하기.  (0) 2011.11.07
캐릭터셋 확인.  (0) 2011.10.20
오라클 구동 방법  (0) 2011.01.05
[Link] hierarchy query  (0) 2010.11.09
반응형

#################
# 오라클 구동 방법 #
#################
 - 참고 사이트 : http://calmmass.tistory.com/246
                       http://blog.naver.com/syun?Redirect=Log&logNo=60008399058


(oracle 계정으로 접속)
$ cd $ORACLE_HOME/bin

# 오라클 시작.
$ ./dbstart

# 리스너 시작.
$ ./lsnrctl start

 


================================================================================================
- 오라클 시작의 또 다른 방법
- 2가지 방법
================================================================================================

------------------------------------------------------------------------------------------------
- 방법 1 : 한번에 구동 완료
------------------------------------------------------------------------------------------------
$ sqlplus '/as sysdba'
SQL> startup
  (한번에 구동 완료. instance -> mount -> open)


------------------------------------------------------------------------------------------------
- 방법 2 : 단계별 구동
------------------------------------------------------------------------------------------------
................................................................................................................................................
[ 1 단계 : instance start ]
................................................................................................................................................
# 인스턴스 상태를 확인 해본 결과 아직 데이터베이스를 기동하지 않았습니다.
SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01034: ORACLE not available

# instance start
SQL> startup nomount;
ORACLE instance started.

# 파라미터 파일 읽기 시작
# 파라미터 파일 확인
SQL> show parameter processes

# 상태 확인
SQL> SELECT status FROM v$instance;
STATUS
------------------------
STARTED


................................................................................................................................................
[ 2 단계 : mount start ]
................................................................................................................................................
SQL> ALTER DATABASE mount;
Database altered.

SQL> SELECT status FROM v$instance;
STATUS
------------
MOUNTED


................................................................................................................................................
[ 3 단계 : open start ]
................................................................................................................................................
# 데이터베이스 open 시작
SQL> ALTER DATABASE open;
Database altered.

SQL> SELECT status FROM v$instance;
STATUS
------------
OPEN

반응형

'Database > Oracle' 카테고리의 다른 글

JDBC 오류?? varchar 에 2000byte 이상 insert 하기.  (0) 2011.11.07
캐릭터셋 확인.  (0) 2011.10.20
[Link] hierarchy query  (0) 2010.11.09
[오라클] 버전 확인.  (0) 2009.08.31
with as 문.  (0) 2009.07.28
반응형

select * from v$version;

반응형

'Database > Oracle' 카테고리의 다른 글

오라클 구동 방법  (0) 2011.01.05
[Link] hierarchy query  (0) 2010.11.09
with as 문.  (0) 2009.07.28
백업 받은 파일로 복구하기.  (1) 2009.07.28
오라클 클라이언트 설치후 리스너 등록  (0) 2009.04.09
반응형

select 문을 가상 view 로 메모리에 저장.
보통 한방 쿼리에서 중복되는 select 문을 사용할때 이용.
(성능효과가 있을수 있음)


WITH
sss as
  (select '7' as s from dual),
eee as
  (select '8' as e from dual)
 
select s from sss where s not in (select e from eee)

반응형

'Database > Oracle' 카테고리의 다른 글

[Link] hierarchy query  (0) 2010.11.09
[오라클] 버전 확인.  (0) 2009.08.31
백업 받은 파일로 복구하기.  (1) 2009.07.28
오라클 클라이언트 설치후 리스너 등록  (0) 2009.04.09
사용자 추가  (2) 2009.04.09
반응형



백업 받아 놓은 파일 : backup.dmp
복구 실행 결과 로그 : log.txt 파일로 남김.

imp userid/passwd FILE=backup.dmp LOG=log.txt


반응형

'Database > Oracle' 카테고리의 다른 글

[오라클] 버전 확인.  (0) 2009.08.31
with as 문.  (0) 2009.07.28
오라클 클라이언트 설치후 리스너 등록  (0) 2009.04.09
사용자 추가  (2) 2009.04.09
테이블 사이즈 구하기  (0) 2009.02.11
반응형


Oracle Net Configuation Assistant


로컬 네트 서비스 이름 구성 -> 추가 -> 버전선택 -> 서비스 이름 작성(아래참조).

 -> TCP -> 호스트 이름 : 서버 주소, 표준 포트 번호 1521 사용 -> 로긴 테스트

 


: 서비스 이름 작성 방법.

오라클 설치 디렉토리/network/admin/listener.ora

에서 SID 또는 GLOBAL_DBNAME 을 입력한다.

반응형

'Database > Oracle' 카테고리의 다른 글

with as 문.  (0) 2009.07.28
백업 받은 파일로 복구하기.  (1) 2009.07.28
사용자 추가  (2) 2009.04.09
테이블 사이즈 구하기  (0) 2009.02.11
merge into = mysql 의 replace 와 비슷한 기능  (0) 2009.02.11
반응형


=======================================================================
============== 사용자 관리 : 관리자 권한으로 관리 =====================
=======================================================================

// 테이블 스페이스 생성.
CREATE TABLESPACE tablespace_name DATAFILE 'path/filename.dbf' SIZE (10M);

// 사용자 추가.
CREATE USER user_name IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name
TEMPORARY TABLESPACE temp_name QUOTA UNLIMITED ON tablespace_name;

// 사용자 권한 추가.
GRANT CONNECT,RESOURCE TO user_name;

 

 

// 테이블 스페이스 보기.
SELECT * FROM DBA_TABLESPACES;

// 데이터 파일 보기.
SELECT * FROM DBA_DATA_FILES;

 

 


//테이블 스페이스 비활성화
ALTER TABLESPACE tablespace_name OFFLINE;

//테이블 스페이스 삭제
DROP TABLESPACE tablespace_name;

 

 

 

 

 


=======================================================================
============== 오라클 기본 사용법 =====================================
=======================================================================

// auto_increment 생성.
CREATE SEQUENCE sequence_name;

// 생성한 sequence 보기.
SELECT * FROM USER_SEQUENCES;

// sequence next 값 보기.
SELECT sequence_name.nextval FROM dual;


// auto_increment 사용.
INSERT INTO table_name VALUES(sequence_name.nextval, .....)

 

반응형

+ Recent posts