▶ 주요 용어

▶ SQL(Structured Query Language)
관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어
원하는 데이터를 찾는 방법이나 절차를 기술하는 것이 아닌 조건을 기술하여 작성

▶ 주요 데이터 타입

▶ SELECT(조회)
- 지정된 테이블에서 원하는 데이터가 존재하는 행을
선택해서 조회하는 SQL(구조적 질의 언어)
- 작성된 구문에 맞는 행, 열 데이터가 조회됨
-> 조회 결과 행의 집합 == RESULT SET(중요!!!!!)
- 조회 결과는 0행 이상(조건에 맞는 행이 없을 수 있다!)
<작성법>

| SELECT | 조회하고자 하는 컬럼명 기술 여러 컬럼을 조회하는 경우 컬럼은 쉼표로 구분하고, 마지막 컬럼 다음은 쉼표를 사용하지 않음 모든 컬럼 조회 시 컬럼 명 대신 ‘*’ 기호 사용 가능하며 조회 결과는 기술한 컬럼 명 순으로 표시 됨 |
| FROM | 조회 대상 컬럼이 포함된 테이블 명 기술 |
| WHERE | 행을 선택하는 조건 기술 여러 개의 제한 조건을 포함할 수 있으며, 각각의 제한 조건은 논리 연산자로 연결 제한 조건을 만족시키는 행들만 Result Set에 포함 |
1. 모든 정보를 조회
SELECT EMP_ID, EMP_NAME, SALARY
FROM EMPLOYEE;
또는
SELECT * FROM EMPLOYEE;

2. 컬럼 값 산술 연산
* 컬럼 값 : 행과 열이 교차되는 한 칸에 작성된 값
- SELECT문 작성 시 칼럼명에 산술 연산을 작성하면
조회 결과(RESULT SET)에서 모든 행에 산술 연산이 적용된 결과 값이 조회된다!
SELECT EMP_NAME, SALARY * 12, (SALARY + (SALARY*BONUS)) * 12
FROM EMPLOYEE;

🪄 SYSDATE / CURRENT_DATE, SYSTIMESTAMP / CURRENT
| SYSDATE | 시스템이 나타내고 있는 현재 시간 |
| CURRENT_DATE | 현재 세션(사용자 기반) 시간 |
| SYSTIMESTAMP | 시스템이 나타내고 있는 현재 시간 ms 단위 + 지역 포함 |
| CURRENT | 현재 세션(사용자 기반) 시간 ms 단위 + 지역 포함 |
※ DUAL(DUmmy tAbLe)
- 가짜 테이블 (임시 테이블)
- 조회하려는 데이터가 실제 테이블에 존재하는 데이터가 아닌 경우에 사용
🪄 날짜 데이터 연산하기(+, -만 가능!!!!)
- 날짜 + 1 = 1일 증가
- 날짜 - 1 = 1일 감소
→ 정수 연산은 일 단위로 연산된다!!!!!
ex 1)
현재 시간, 어제 , 내일, 모레 조회
SELECT CURRENT_DATE,
CURRENT_DATE -1,
CURRENT_DATE +1,
CURRENT_DATE +2
FROM DUAL;
#결과

ex 2)
현재 시간, 한 시간 후 , 1분 후, 10초 후 조회
SELECT
CURRENT_DATE,
CURRENT_DATE + 1/24,
CURRENT_DATE + 1/24/60,
CURRENT_DATE + 1/24/60/60 * 10
FROM DUAL;
#결과

🪄 날짜 끼리 연산하기 (-만 가능!!)
- 연산 결과는 일 단위(1 == 1일)
TO_DATE('날짜', '패턴');
→ '날짜 문자열'을 '패턴' 형식으로 해석하여 DATE 타입으로 변환하는 함수
ex 1)
SELECT '2024-08-15', TO_DATE('2024-08-15', 'YYYY-MM-DD')
FROM DUAL;
ex2) 2024년 8월 14일 - 2024년 12월 6일 남은 날짜 구하기
SELECT
TO_DATE('2024-12-06', 'YYYY-MM-DD') - TO_DATE('2024-08-14', 'YYYY-MM-DD')
FROM DUAL;
ex3) 일정 시간까지 남은 시간 구하기
SELECT
(TO_DATE('2024-08-14 12:50', 'YYYY-MM-DD HH24:MI') - CURRENT_DATE ) *24*60*60
FROM DUAL;
ex4) 모든 사원의 사번, 이름, 입사일, 현재까지 근무 일수, N년차 조회
SELECT EMP_ID, EMP_NAME, HIRE_DATE,
CURRENT_DATE -HIRE_DATE, CEIL( (CURRENT_DATE-HIRE_DATE)/365)
FROM EMPLOYEE;
*CEIL(숫자) : 소수점 올림 처리
#결과

3. 컬럼 별칭
- 별칭 지정 방법
1) 컬럼명 AS 별칭 : 문자O, 띄어쓰기 x, 특수문자 x
2) 컬럼명 AS "별칭" : 문자 O, 띄어쓰기 O, 특수문자 O
→ AS는 생략가능!!
- ORACLE 에서 ""의 의미
→ "" 내부에 작성된 글자 그대로를 인식해라!!!!
ex) - : 빼기
"-" : - 모양의 글자
ORACLE에서 문자열은 ''(홑따옴표)
SELECT
EMP_ID AS 사번, -- 컬럼명 AS 별칭
EMP_NAME 이름, -- 컬럼명 별칭(AS 생략)
HIRE_DATE AS "입사한 날짜", -- 컬럼명 AS "별칭"
CURRENT_DATE - HIRE_DATE "@근무 일수@",
CEIL( (CURRENT_DATE - HIRE_DATE) / 365 ) "N년째 근무중..."
FROM EMPLOYEE;
#결과

✔️리터럴
임의로 지정한 문자열을 SELECT절에 사용하면 테이블에 존재하는 데이터처럼 활용 가능
* 문자나 날짜 리터럴은 ‘ ‘ 기호 사용
* 리터럴은 Result Set의 모든 행에 반복 표시 됨
SELECT EMP_ID,
SALARY,
‘원’ AS 단위
FROM EMPLOYEE;

✔️ DISTINCT
컬럼에 포함된 데이터 중 중복 값을 제외하고 한 번씩만 표시하고자 할 때 사용
* SELECT절에 1회만 기술 가능
SELECT DISTINCT JOB_CODE
FROM EMPLOYEE;


4. 연결 연산자( || )
두 컬럼을 이어서 하나의 컬럼으로 조회할 때 사용
ex)
SELECT EMP_ID, EMP_NAME, -- 200,선동일
EMP_ID || EMP_NAME -- 200선동일
FROM EMPLOYEE;
#결과

SELECT SALARY || '원' AS 급여
FROM EMPLOYEE;
#결과

'BackEnd > MySQL' 카테고리의 다른 글
| [DB] JOIN (0) | 2024.08.25 |
|---|---|
| [DB] GROUP BY, HAVING (1) | 2024.08.25 |
| [DB]Oracle Database의 개요 (0) | 2024.08.24 |
| [DB] 함수 (1) | 2024.08.24 |
| [DB] ORDER BY절 (0) | 2024.08.24 |