Database - Oracle DB/1주차(Database - Oracle DB)

[SQL] DB스터디 - 01

김야키 2018. 12. 27. 15:18


SQL문의 목적, 작성법, 별칭(AS)


Database 실습 환경

- DB Server : Oracle DB 11g

- DB Client : Oracle SQL Developer

- Host : Localhost

- CPU : Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz

- RAM : 4GB

- OS : Windows 7 Enterprise K - 64Bit 



SQL : DB의 데이터를 제어하는 명령문

QUERY : SELECT

DML(데이터 조작) : INSERT, UPDATE, DELETE, MERGE, SELECT

TCL(트렌젝션 조작) : COMMIT, ROLLBACK, SAVEPOINT

DDL(테이블 생성, 삭제, 수정 등) : CREATE, DROP, ALTER, TRUNCATE...

DCL : GRANT, REVOKE




SQL문의 목적

SELECT를 이용한 특정 정보 검색




명령문과 그 순서

5 SELECT : 표현식 정의

1 FROM : 집합 정의

2 WHERE : 행 제한을 위한 조건식 정의

3 GROUP BY : 그룹 정의

4 HAVING : 행 제한을 위한 조건식 정의(그룹 함수)

6 ORDER BY : 정렬 정의(오름 및 내림)




SELECT와 FROM의 사용법

SELECT '테이블의 특정 컬럼을 가져옴'

FROM '정보를 가져오기 위한 테이블 명 '

예) emp테이블의 empno, ename, sal, deptno의 정보를 가져오는 SQL문

->

SELECT empno, ename, sal, deptno

FROM emp;

이 때, 컬럼 명을 적는 부분에 '*'을 입력하면 FROM에 해당하는 모든 컬럼 정보를 가져온다.




SQL문 작성

- 대,소 문자 구분 없음

- 여러 줄에 걸쳐서 작성 가능(가독성 증가)

- 절은 대개 별도의 줄에 입력

- 키워드는 약어 혹은 다른 절로 입력할 수 없음

- 명령문의 마지막은 세미콜론(;)으로 마침

- 주석 처리는 '--주석' 과같은 방식으로 작성

- 문단 단위 혹은 여러 줄 단위의 주석은 '/*    */' 로 작성




산술식

- 산술 연산자를 사용하여 숫자 및 날짜 데이터로 표현

- 특정 컬럼이 숫자로 되어 있으면 4칙연산이 가능

- 날짜로 되어 있는 컬럼은 +, - 등의 연산만 가능

- 연산의 우선순위는 괄호'( )'를 이용해 조작 가능




Null 값의 정의

- Null은 사용할 수 없거나, 할당되지 않거나, 알 수 없거나, 적용할 수 없는 값

- Null은 0이나 공백과는 다름

- 차 후 함수(NVL)를 이용해 Null값이 있는 부분을 다른 특정 값으로 처리해서 SELECT 할 수 있음

- Null은 어떤 연산을 하던 Null로 리턴 시킴




컬럼의 별칭

- 열 alias 사용

- AS명령어를 이용해 앞의 컬럼 명을 AS뒤의 문자로 변경해서 출력할 수 있음

예) emp테이블의 empno를 ID로, ename을 NAME으로 별칭해서 출력시키는 방법

-> 

SELECT empno AS ID, ename AS NAME

FROM emp;

-> 

SELECT empno ID, enameNAME

FROM emp;


- 등과 같이 AS를 사용하지 않아도 된다. (일반적으로 잘 사용하지 않음)

- 큰 따옴표 " "로 묶인 문자는 출력할 때 대, 소문자를 구분해서 출력 해 줌

- 연산식을 컬럼에 숨기거나 여러 SQL문을 합쳐서 사용할 때 약어로 만들어서 사용이 가능 하도록 해 준다.




연결 연산자

- 열이나 문자열을 다른 열에 연결

- 컬럼과 컬럼 사이에 '||'으로 출력

- 결과는 열로 문자 표현식을 작성




리터럴 문자열

- SQL명령문에 포함된 문자, 숫자 또는 날짜

- 날짜 및 문자 값은 작은 따옴표로 묶어야 함

- 각 문자열은 반환되는 각 행에 한 번 출력 됨

예) 모든 행에 숫자 12를 함께 출력, 모든 행에 문자 'ABC'를 함께 출력

-> 

SELECT 12, employee_id, first_name, salary

FROM employees;

-> 

SELECT 'ABC', employee_id, first_name, salary

FROM employees;


예) EMPLOYEES테이블에 있는 LAST_NAME과 JOB_ID를 연결 출력 하는데

     연결하는 중간에 ' is a '라는 문자열을 함께 출력

-> 

SELECT last_name || ' is a ' || job_id

AS "Employee Details"

FROM employees;

-- 리터럴 문자열에 작은 따옴표를 함께 출력하고 싶다면 2개를 연속으로 입력해야 함

-- 작은 따옴표롤 연속으로 사용하면 가독성이 떨어져 대체 인용(q)연산자를 사용한다.




대체 인용(q) 연산자

- q'[~~'~~'~~'~]'를 이용하여 SQL문의 가독성을 높힐 수 있음




중복 행

- 특정 컬럼에 있는 값이 중복되어 있는 행이 있는 경우

- 특정 종류만 출력하기 위해 모든 행을 출력하면 중복된 모든 값들도 함께 나옴

- DISTINCT를 이용하면 행 중복을 제거해서 특정 종류만 하나 씩 출력 해 줌