본문 바로가기
수업 일지/Oracle(SQL)

24일차 - DDL/DML/DCL/IS NULL/IN/집계함수/서브쿼리/UPPER

by 쿠쿠씨 2022. 2. 4.
반응형

 

SQL

 

Structured Query Language(구조적 질의 언어)

→ 관계형 데이터베이스에서 사용하는 명령어입니다.

→ DDL, DML, DCL로 분류할 수 있습니다.

 

DDL(Data Definition Language)

 

→ 데이터 정의어

→ 데이터베이스 객체가 대상입니다.(user, 테이블, 뷰, 시퀀스, ...)

 

종류

 

CREATE : 데이터베이스, 테이블을 생성합니다.

ALTER : 데이터베이스, 테이블을 변경합니다.

DROP : 데이터베이스, 테이블을 제거합니다.

 

DML(Data Manipulation Language)

 

→ 데이터 조작어

→ 테이블에 저장된 데이터가 대상입니다.

 

종류

 

INSERT : 테이블 내 칼럼에 새로운 데이터를 추가합니다.

SELECT : 테이블 내 칼럼에 저장된 데이터를 조회합니다.

UPDATE : 테이블 내 칼럼에 저장된 데이터를 변경합니다.

DELETE : 테이블 내 칼럼에 저장된 데이터를 삭제합니다.

 

DCL(Data Control Language)

 

→ 데이터 제어어

→ 데이터베이스의 객체 또는 데이터와 관련된 제어 명령입니다.

 

종류

 

GRANT : 지정된 사용자 계정에 권한을 부여합니다. (권한: RESOURCE, CONNECT 등)

REVOKE : 허용된 권한을 회수합니다.

COMMIT : 트랜잭션을 확정합니다.

ROLLBACK : 트랜잭션을 취소합니다.

 

* 트랜잭션

→ 연관된 다수의 INSERT/UPDATE/DELETE 명령들을 하나의 묶음(단위)으로 실행하는 것입니다.

트랜잭션 안에 정의된 연산은 모두 실행되거나 모두 실행되지 않아야 합니다.

 

EX)

A가 B에게 100만원을 송금한다.

A 계좌 : UPDATE 잔액 -100만원

B 계좌 : UPDATE 잔액 +100만원

 

위 2개의 UPDATE 명령어는 하나의 트랜잭션으로 2개가 모두 완료되어야 합니다. (COMMIT)

첫 번째 UPDATE 후에 오류가 발생하여 두 번째 UPDATE를 실행하지 못했을 경우

이전 UPDATE도 취소되도록 합니다. (ROLLBACK)

 

DML : SELECT, INSERT, UPDATE, DELETE 형식

 

SELECT

→ 데이터를 조회합니다.

→ 형식 : SELECT 열_이름1, 열_이름2, ... FROM 테이블_이름 [ WHERE 조건식 ] ;

 

열_이름에 조회할 열의 이름을 입력합니다.

모든 컬럼을 선택할 때는 와일드카드 문자 *로 대체합니다.

SELECT 문의 특징적 요소로 별칭(Alias) 기능이 있습니다.

데이터 조회에 사용되는 조건 추가는 WHERE 뒤에 조건식을 작성합니다.

 

INSERT

→ 데이터를 추가합니다.

→ 형식 : INSERT INTO 테이블_이름(열_이름1, 열_이름2, ...) VALUES(값1, 값2, ...) ;

 

UPDATE

→ 데이터를 수정합니다.

→ 형식 : UPDATE 테이블_이름 SET 열_이름1=값1, 열_이름2=값2, ... WHERE 조건식 ;

 

DELETE

→ 데이터를 행단위로 삭제합니다.

→ 형식 : DELETE FROM 테이블_이름 WHERE 조건식 ;

 

WHERE 조건식

→ 데이터를 처리할 행에 대한 조건식을 작성합니다.

 

예시

 

IS NULL, IS NOT NULL

 

→ WHERE 조건식에서 특정 컬럼 값이 NULL이거나 NULL이 아닌 데이터를 조회할 때 사용합니다.

→ 1) ETC 컬럼의 값이 NULL인 데이터를 조회합니다.

→ 2) ETC 컬럼의 값이 NULL이 아닌 데이터를 조회합니다.

 

AND, OR, IN, NOT IN 연산자

 

→ AND : 두 조건이 모두 만족하는 조건입니다.

→ OR : 두 조건중 하나만 만족하는 조건입니다.

→ IN( ) : 여러 번의 OR 연산을 하나의 IN으로 간결하게 표현할 수 있습니다. ( ) 내의 값중 하나를 포함하는 조건입니다. 

→ NOT IN( ) : ( ) 내의 모든 값을 포함하지 않는 조건입니다.

→ STUNO = 1 OR STUNO = 3  과  STUNO IN (1, 3) 는 동일한 조건입니다.

 

 

그룹 함수 COUNT, MAX, MIN, AVG

 

COUNT(*) : 전체 행의 수를 반환합니다.

COUNT(열_이름) : 열의 값이 NULL이 아닌 행의 수를 반환합니다.

MAX(열_이름) : 열의 값 중 최대값을 반환합니다. 문자열 형식은 사전식으로 최대값을 반환합니다.

MIN(열_이름) : 열의 값 중 최소값을 반환합니다. 문자열 형식은 사전식으로 최소값을 반환합니다.

AVG(열_이름) : 열의 값들의 평균값을 반환합니다.

→ 그룹 함수의 결과 값은 1개입니다.

→ 서브 쿼리로 사용할 수 있습니다.

 

예시

→ 1) EMPLOYEES 테이블 내 전체 행의 개수를 조회합니다.

→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 개수를 조회합니다.

 

→ 1) EMPLOYEES 테이블의 SALARY 값 평균을 구합니다.

→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 SALARY 값 평균을 구합니다.

 

→ 1) EMPLOYEES 테이블의 SALARY 값 중 최대값을 구합니다.

→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 SALARY 값 중 최대값을 구합니다.

 

→ 1) EMPLOYEES 테이블의 SALARY 값 중 최소값을 구합니다.

→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 SALARY 값 중 최소값을 구합니다.

 

오류: 그룹함수는 반드시 SELECT 문으로 사용합니다.

→ 서브쿼리 : AVG 값은 1개이므로 관계 연산 조건식에 사용할 수 있습니다.

 

서브 쿼리

 

SELECT 문 안에 또 다른 SELECT 문이 들어갈 수 있습니다.

→ 두 번째 SELECT 문의 결과값이 1개이므로 = 조건식에 사용할 수 있습니다.

 

함수 UPPER, LOWER

 

UPPER( )  : 문자열을 대문자로 변환한다.

LOWER( ) : 문자열을 소문자로 변환한다.

 

예시 : 대/소문자 구분 없이 검색

 

 

 

 

* 단축키

 

• 명령어 1개 실행 : Ctrl+Enter

• 여려 명령어 실행 : 드래그 후 Alt+X

반응형

댓글