본문 바로가기

Study/OracleDB

Oracle Day1

728x90

1. Oracle 기본 구조

기본 실행 구조

2. SELECT 기본 문장 작성

SELECT * FROM 테이블 명;
SELECT * FROM EMP

SELECT절은 표시할 열을 식별한다.

FROM절테이블을 식별한다.

• SQL 문은 대소문자를 구분하지 않는다.

• SQL 문은 여러 줄에 작성될 수 있다.

• SQL 문은 세미콜론(;)으로 종료한다.

• 테이블 하나가 가질 수 있는 컬럼의 갯수는 1000개

 

SELECT lnid, id_typ, bthday
FROM tid ;

• * 대신 컬럼명을 넣어 테이블에서 원하는 컬럼의 데이터만 조회할 수 있다.

 

3. 산술식, 날짜 연산자, 연결 연산자, Null 정의.

SELECT lnid, ln_dt, ln_amt, ln_amt / 1000000, (ln_amt*0.0325)/12
FROM tacct ;

• 산술 연산자를 사용하여 컬럼 데이터의 연산을 수행할 수 있다.

 

SELECT lnid, ln_amt, exp_dt, exp_dt - 14
FROM tacct ;

 

날짜 연산

• 날짜 -14를 주어 해당일로부터 14일 전의 연산결과를 출력할 수 있다.

 

 

 

SELECT lnid || ' 차주의 등급은 ' || grade || ' 입니다.'
FROM tid
WHERE id_typ = '2' ;

연결 연산자

• 두 개의 세로선(||)을 사용하여 열이나 문자열을 다른 열에 연결할 수 있다.

• 연결된 결과는 문자로 처리된다.

 

SELECT *
FROM tid ;

Null 조회

• Null은 값을 가지고 있지 않은 상태를 의미하는데, 공백 문자와는 다르다.

 

4. 열 alias(열머리글, 별칭 지정), 중복행 제거 DISTINCT

SELECT lnid AS 차주번호, id_typ AS 차주구분코드
,bthday 생일, gender 성별
FROM tid ;

열 머리글 변경

• 열 머리글의 이름을 바꿀 수 있다.

• 열 이름 바로 뒤에 오는데, 열 이름과 alias 사이에 선택 사항 인 AS 키워드쓰거나 생략할 수 있다.

 

SELECT lnact, lnact_seq, ln_amt, 
ln_amt/1000 "대출금(천원)"
FROM tacct ;

의미있는 열 머리글

 공백이나 특수 문자를 포함하거나 대소문자를 구분하는 경우 큰따 옴표가 필요하다.

• 열 머리글을 주어 연산결과의 의미있는 특정 컬럼을 만들어 조회할 수 있다.

 

SELECT DISTINCT grade
FROM tid ;

• query 결과에는 중복 행을 포함한 모든 행이 표시되는데, 제거하려면 제거하려면 DISTINCT를 사용한다.

5. WHERE 절을 이용한 행 제한, 조건 비교하는 방법, 조건 연산자

-- 14. 계좌정보(TACCT) 테이블을 이용하여 다음의 데이터를 검색하세요.
--컬럼: lnact, lnact_seq, lnid, ln_dt, exp_dt, ln_amt/1000000
--조건1: 한도계좌 제외 (lmt_typ:NULL)
--조건2: 2021년에 개설된 대출 계좌(ln_dt)

select lnact, lnact_seq, lnid, ln_dt, exp_dt, ln_amt/1000000
from TACCT
where
lmt_typ is null 
AND 
ln_dt >= '2021/01/01';

WHERE 사용법

• WHERE 절을 사용하여 반환되는 행을 제한한다.

• WHERE 절은 FROM 절 다음에 사용한다.

• 조건식은 TRUE 또는 FALSE 평가가 가능하도록 정의한다.

조건식은 하나 이상 사용할 수 있다. 어떻게? AND, OR, BETWEEN 기타 등등..

 

6. BETWEEN 연산자를 사용하는 범위 조건, IN 연산자

SELECT lnact, lnact_seq, lnid, ln_dt, ln_term, ln_amt
FROM tacct
WHERE ln_amt BETWEEN 1000000000 AND 2000000000 ;
                  -- 작은값             큰값

• BETWEEN 연산자를 사용하여 값의 범위를 기반으로 행을 표시할 수 있다.

WHERE ln_amt BETWEEN 작은값 AND 큰 값

 

SELECT lnid, id_typ, bthday, grade
FROM tid
WHERE grade IN ('AA+','AA','AA-') ;

IN 연산자

• IN 연산자를 사용하여 리스트의 값을 테스트할 수 있다.

• 특정값 여러개를 선택해서 괄호 내의 값중 일치하는 것이 있으면 true로 반환한다.

 

7. LIKE 연산자를 사용하여 문자열 추출하기.

• LIKE 연산자를 사용하여 문자 검색을 수행할 수 있다.

SELECT * 
FROM tcode
WHERE grade LIKE 'A%' ;

• A로 시작하는 컬럼 데이터 출력

 

SELECT * 
FROM tcode
WHERE grade LIKE '%A' ;

• A로 끝나는 컬럼 데이터 출력

 

SELECT * 
FROM tcode
WHERE grade LIKE '%A%' ;

• A가 포함되는 데이터 출력.

 

SELECT * 
FROM tcode
WHERE grade LIKE 'A_' ;

A_ 뒤에 한글자가 있는 데이터 출력.

_A 앞에 한글자가 있는 데이터 출력.

 

8. is null, is not null, AND 연산자, OR 연산자, NOT 연산자

• IS NULL 연산자로 null값인 데이터를 조회할 수 있다.

SELECT lnact, lnact_seq, acct_typ, lmt_typ, 
lnid, ln_dt, ln_amt
FROM tacct
WHERE lmt_typ IS NULL ;

is null 사용법

 

• AND 연산에서는 두 구성 요소 조건이 모두 참이어야 한다.

SELECT lnact, lnact_seq, acct_typ, lmt_typ, 
lnid, ln_dt, ln_amt
FROM tacct
WHERE lmt_typ IS NULL
AND ln_dt >= '2022/01/01';

AND 연산자

• OR 연산에서는 두 구성 요소 조건 중 하나가 참이어야 한다.

SELECT lnact, lnact_seq, acct_typ, prod_cd, 
lnid, ln_dt, ln_amt
FROM tacct
WHERE prod_cd = '101' 
OR prod_cd = '102' ;

OR 연산자

조건이 거짓인 경우 TRUE를 반환한다.

SELECT lnid, id_typ, bthday, grade
FROM tid
WHERE grade NOT IN ('AA+','AA','AA-') ; -- 포함되지 않는것

NOT IN

 

9. SQL 문장해석 순서

-- 5. SELECT : 검색 대상 표현식
-- 1. FROM : 검색 대상 집합(테이블, 서브쿼리, 뷰)
-- 2. WHERE : 행 제한을 위한 조건식
-- 3. GROUP BY
-- 4. HAVING
-- 5. ORDER BY

 

 

반응형

'Study > OracleDB' 카테고리의 다른 글

Oracle day3  (1) 2022.09.30
Oracle Day2  (0) 2022.09.29
36강 오라클 인덱스  (1) 2022.09.12
35강 오라클 시퀀스  (1) 2022.09.12
34강 오라클 가상 테이블인 view  (1) 2022.09.12