전체 글
- [STUDY][DB] 데이터베이스 Oracle SQL Developer 3 2024.07.04
- [STUDY][DB] 데이터베이스 Oracle SQL Developer 2 2024.07.02
- [STUDY] [DB] 데이터베이스 Oracle SQL Developer 1 2024.07.01
[STUDY][DB] 데이터베이스 Oracle SQL Developer 3
[STUDY][DB] 데이터베이스 Oracle SQL Developer 2
내장형 함수(Built-in Function) : 날짜형 함수
SYSDATE
: 입력시 시스템이 현재 가지고 있는 시간을 날짜형으로 출력
LAST_DAY
: LAST_DAY(date) = date의 날짜형 값의 행당 월 마지막 날짜 출력
ADD_MONTHS
: ADD_MONTHS(date, int) = date의 날짜형 값에서 int개월 수만큼 더해서 출력
형변환 함수
: 특정 자료형 값으로 변경해주는 함수
문법
- 숫자형 ===> 문자형 : TO_NUMBER()
- 문자형 ===> 숫자형 : TO_CHAR()
- 날짜형 ===> 문자형 : TO_CHAR()
- 문자형 ===> 날짜형 : TO_DATE()
자료형이 일치하지 않는 값끼리의 연산하게 되면 연산하기 전에 자동으로 내부적으로 형변환이 발생
WHERE : 원하는 정보만 출력하고 싶을 때 조건을 줄 수 있는 문
비교조건
: = , > , < 등으로 비교하는 조건
---------- 예제 ----------
논리조건 : TRUE OR FALSE ?
AND : 그리고, ~이고 등의 문자로 이어지는 명제 2가지를 모두 만족 했을 때 TRUE
OR : ~이거나 등의 문자로 이어지는 명제 2가지 중 하나라도 만족 했을 때 TRUE
AND와 OR을 사용하는 이유?
==> 하나의 SQL문에는 WHERE이 하나만 들어갈 수 있기 때문에 AND와 OR로 여러 조건 적용하기 위해서
----------예제----------
JOIN
카티션 조인 : 각 테이블으 모든 튜플에 대해 모든 경우의 수를 붙인 것 (컴퓨터가 최선으로 인식한 방식)
조인 조건 : 테이블 간에 특정 컬럼으로 연결하면 서로 연관된 테이터만 출력
JOIN 문법
SELECT A. 컬럼, B. 컬럼
FROM 테이블 A(별칭), 테이블 B(별칭)
WHERE A.공통컬럼 = B.공통컬럼
INNER JOIN
: 조건에 해당하는 튜플만 출력(교집합)
문법
SELECT
FROM 테이블 A, 테이블 B
WHERE A.공통컬럼 = B.공통컬럼;
OUTER JOIN
: 조인에 실패한 튜플도 출력
문법
SELECT
FROM 테이블 A, 테이블 B
WHERE A.공통컬럼 = B.공통컬럼(+);
!! (+)기호는 양쪽 중 한 곳만 가능 !!
ANSI
: 오라클 프로그램 이외에서도 사용 가능한 JOIN
[STUDY] [DB] 데이터베이스 Oracle SQL Developer 1
기본 기능 및 단축키
" -- " 한줄 주석 : 코드에 영향을 주지 않는 설명문
==> 한줄만 입력 가능!!
" /* " 범위 주석 : 개행이 되더라도 주석문이 닫힐 때까지 설명을 계속하는 구문
==> 범위 주석 열기 : /* , 닫기 : */
글씨 크기 바꾸는 방법
: 도구 - 환경설정 - 코드편집기 - 글꼴- 글꼴 및 크기 수정
하나의 SQL문을 마칠 땐 꼭 " ; " (세미콜론) 입력!!
실행 단축키 : Ctrl + Enter
==> 실행하고자 하는 문장 위를 클릭하여 커서를 두고 실행
범위 실행 단축키 : 실행하고자 하는 문작을 드래그로 블록 씌운 뒤 Ctrl +Enter
SQL문법 - DML (Data Manipulation Language) Part.1
DML-1. SQL문법과 실행 및 순서
[역할]
SELECT : 출력(조회)할 컬럼(열)만 작성
FROM : 데이터를 가져올 테이블
WHERE : 원하는 튜플(행)만 가져오도록 조건 작성
GROUP BY : 특정 컬럼을 기준으로 그룹화
HAVING : 그룹화 상태의 테이터 필터링
ORDER BY : 특정 컬럼으로 정렬
* 실행 순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
[작성해야하는 내용]
SELECT : 출력하고 싶은 컬럼들
==> 모든 정보를 보고싶으면 " * " (ASTERISK)
FROM : 컬럼을 불러올 테이블 이름
WHERE : 조건
GROUP BY : 그룹화할 컬럼
HAVING : 그룹화한 데이터와 조건
ORDER BY : 정렬할 컬럼과 정렬 순서
[예시를 위한 (직원 관련 정보 테이블) 생성 SQL문 실행 후 예제 풀이]
DISTINCT : 출력할 컬럼 정보에서 중복 값을 없에 줌
[문법]
SELECT DISTINCT 컬럼
FROM 테이블
=> 컬럼을 여러 개 입력했을 경우
튜플 단위로 각 컬럼에 해당하는 값들 중 하나라도 중복이 아니면 중복이 아닌 것으로 계산
(EX) SELECT에 A, B, C 세 개의 컬럼을 입력했을 경우
각 튜플에서 컬럼 A, B에 해당하는 값이 동일해도 C의 값이 다르면 중복이 아님
AS : 별칭, 통칭
[문법]
SELECT 컬럼 AS 별칭으로 칭할 이름
FROM 테이블;
=> SELECT절이 아닌 다른 곳에서도 사용 가능!
[ 주의점! ]
별칭 안에 띄어쓰기 불가능
숫자나 특수문자로 시작 불가 (영문자 가능)
특수문자는 " $ ", " _ " , " # " 만 사용 가능
예약어(데이터베이스 내부에서 이미 사용하기로 약속된 단어들) 사용 불가
AS 대신에 공백 사용 가능 (하지만 컬럼들 이름 확인이 어렵기 때문에 권장하지 않음.)
=> FROM절에서는 대부분 공백으로 사용
DML-2. NULL (= 값이 정해지지 않은 공란, 빈 칸) 함수
[NULL값의 특징]
NULL값은 산술, 비교연산이 불가능!
아직 정해지지 않는 값 표현이 가능하고, 직사각형 형태를 유지해야하는 테이블의 특성을 지키기에 용이함
[NULL 연산은 IS NULL / IS NOT NULL 로 출력 가능]
[문법]
SELECT *
FROM 직원
WHERE 나이 IS NULL;
[NULL 함수 : NULL값을 대체할 수 있는 함수]
1. NVL
[문법]
SELECT 컬럼 NVL (컬럼, NULL일 때 교체할 값)
FROM 테이블;
=> 해당 '컬럼'에 속한 튜플에 NULL값이 들어오면 '교체할 값'으로 교체, NULL이 아니면 그대로 출력
2. NVL2
[문법]
SELECT 컬럼 NVL2 (컬럼, 컬럼, NULL일 때 교체할 값)
FROM 테이블;
=> 해당 '컬럼'에 속한 튜플에 NULL값이 들어오면 '교체할 값'으로 교체, NULL이 아니면 그대로 출력
3. DECODE
[문법]
SELECT 컬럼 DECODE (컬럼, 값, 컬럼의 값이 일치할 경우의 값, 컬럼의 값이 일치하지 않을 경우의 값)
FROM 테이블;
=> 해당 '컬럼'에 속한 튜플의 값이 '값'에 입력한 값과
같다면 '일치 경우의 값'을, 아니면 '일치하지 않을 경우의 값'으로 출력
4. COALESCE
[문법]
SELECT 컬럼 COALESCE(DATA1, DATA2, DATA3, ... , DATA n);
=> 앞에서부터 DATA를 확인하다가 NULL값이 아닌 값이 나오면 출력
DML-3. 자료형(Date Type) 과 함수
자료형(Data Type) : 데이터를 저장하는 형식
=> 데이터베이스에서는 문자형, 숫자형, 날짜형 자료형을 사용
=> SELECT 문에서는 간단한 연사과 내장형 함수 사용이 가능함
내장형 함수(Built-in-Function) : 미리 만들어 선언해둔 함수
=> 함수 이름을 호출해서 바로 사용 가능하게 내부에서 설계해둔 함수
문자형 : LOWER , UPPER , SUBSTR , TRIM , REPLACE
숫자형 : MOD , ROUND , CEIL , FLOOR , TRUNC , ABS
날짜형 : SYSDATE , LAST_DAY , ADD_MONTHS
문자형 함수 1. LOWER : 소괄호 속의 문자 데이터를 대문자에서 소문자로 대체
[문법]
SELECT LOWER('대문자 영어 형식의 문자') AS LOWER사용
FROM DUAL ;
문자형 함수 2. UPPER : 문자 데이터를 소문자에서 대문자로 대체
[문법]
SELECT 컬럼, UPPER(컬럼)
FROM 테이블;
문자형 함수 3. SUBSTR : 문자 데이터를 x자리부터 y개만큼 절단
[문법]
SELECT 컬럼, SUBSTR(컬럼, x, y)
FROM 테이블;
문자형 함수 4. TRIM : 문자 데이터에서 양 끝 공백 제거
[문법]
SELECT TRIM(' 문자 ')
FROM DUAL ;
문자형 함수 5. REPLACE : 문자 데이터에서 x라는 문자를 y로 대체
[문법] (str, ‘x’, ‘y’)
SELECT 컬럼, REPLACE(컬럼, 'x' , 'y')
FROM 테이블 ;
숫자형 함수 1. MOD : '컬럼'에 있는 데이터를 '숫자'로 나눈 나머지를 숫자형으로 출력
[문법]
SELECT 컬럼, MOD (컬럼, 숫)
FROM 테이블 ;
숫자형 함수 2. ROUND : int1을 반올림하여 소수점 int2자리까지 출력
[문법]
SELECT ROUND (int1 , int2)
FROM DUAL ;
[ROUND와 비숫한 숫자형 함수들]
=> CEIL(int) : int보다 크거나 같은 최소 정수를 출력
=> FLOOR(int) : int보다 작거나 같은 최대 정수를 출력
=> TRUNC(int1, int2) : int1을 소수점 int2자리까지 잘라서 버린 후 출력
=> ABS(int) : int의 절대값 출력