자격증/sqld

CH2 SQL 기본

seung_ho_choi.s 2023. 8. 15. 17:44
728x90

관계형 데이터베이스

흔히 RDB라고 불리는 관계형 데이터베이스이다. 이것은 모든 데이터를 2차원 테이블 형태로 표현한 뒤

각 테이블 간의 관계를 정의하는 것으로 시작된다.  

 

이때 sql은 관계형 데이터베이스에서 데이터를 다루기 위해 사용하는 언어이다. 

 

SELECT 

- 컬럼을 따로 명시하지 않고 *를 쓰면 전체 컬럼이 조회되며 조회되는 컬럼의 순서는 테이블 컬럼순서와 동일하다. 

추가로 Alias를 붙여 약어로 가능하다. 

- *과 반대로 DISTINCT 은 중복을 1건으로 처리한다. 

- 또한 별도로 Alias를 붙이지 않으면 대문자가 출력된다. 

 

합성연산자

|| 이렇게 해서 문자와 문자를 연결할 때 사용하는 연산자이다. || " " || 이렇게 있으면 공백이다. 

 

함수

문자 함수

SELECT CHR(65) FROM A; -> A 출력

 

SELECT LOWER("A") FROM A; -> a 출력

 

SELECT UPPER("a") FROM A; -> A 출력

 

LTRIM 

특정 문자를 따로 명시해주지 않으면 문자열의 왼쪽 공백을 제거하고

명시했을 경우 왼쪽부터 한글자씩 포함된 부분을 제거한다. 

SELECT LTRIM ("      블랙핑크") FROM A -> 블랙핑크

SELECT LTRIM ("블랙핑크","블랙") FROM A -> 핑크 

 

RTRIM

특정 문자를 따로 명시해주지 않으면 문자열의 오른쪽 공백을 제거하고

명시했을 경우 오른쪽부터 한글자씩 포함된 부분을 제거한다. 

SELECT RTRIM ("      블랙핑크") FROM A -> 블랙핑크

SELECT RTRIM ("블랙핑크","블랙") FROM A ->       핑크 

 

TRIM 

옵션이 하나도 없을 경우 문자열의 왼쪽과 오른쪽 공백을 제거하고 그렇지 않을 경우 문자열을 위치로 

지정된 곳부터 한 글자씩 특정 문자와 비교한다. (LEADING, TRAILING, BOTH)

SELECT TRIM(LEADING "블" FROM "블랙핑크") FROM A -> 랙핑크 

 

SUBSTR 

문자열의 원하는 부분만 잘라서 반환해주는 함수이다. 길이를 명시하지 않았을 경우

문자열의 시작점부터 문자열의 끝까지 반환된다. 

기본 자바, 파이썬 등이랑 다르게 첫번째를 1로 센다. 

SELECT SUBSTR("블랙핑크제니",3,2) FROM  A; -> 핑크

 

REPLACE

문자열에서 변경 전 문자열을 찾아 변경 후 문자열로 바꿔주는 함수이다. 

변경 후 문자열을 명시해주지 않으면 문자열에서 변경 전 문자열을 제거한다. 

SELECT REPLACE("블랙핑크승호","승호","지수") FROM A -> 블랙핑크지수 

SELECT REPLACE("블랙핑크승호","승호") FROM A -> 블랙핑크 

 

숫자 함수 

ABS 

수의 절대값 반환 

SELECT ABS(-1) FROM A; -> 1

 

SIGN

수의 부호를 반환해주는 함수이다. 양수1, 음수-1, 0이면 0

SELECT SIGN(-7) FROM A; -> -1

SELECT SIGN(7) FROM A; -> 1

 

ROUND

수를 지정된 소수점 자릿수까지 반환해주는 함수이다. 자릿수를 명시하지 않았을 경우 기본값은 0이며

반올림된 정수로 반환되고 자릿수가 음수일 경우 지정된 정수부를 반올림하여 반환된다. 

 

SELECT ROUND(163.76,1) FROM A; -> 163.8

SELECT ROUND(163.76,-2) FROM A; -> 200

 

TRUNC

수를 지정된 소수점 자릿수까지 버림하여 반환해주는 함수이다. 자릿수를 명시하지 않았을 경우 기본값은 0이며

버림된 정수로 반환하고 자릿수가 음수일 경우 지정된 정수부에서 버림하여 반환한다. 

 

SELECT TRUNC(163.76,-2) FROM A; -> 100

SELECT TRUNC(163.76,1) FROM A; -> 163.7

 

CEIL, FLOOR 도 있다. 

 

MOD

SELECT MOD(-15,-4) FROM A; -> -3

SELECT MOD(15,-4) FROM A; -> 3

SELECT MOD(15,0) FROM A; -> 15

 

날짜 함수

SYSDAGE

현재의 연, 월, 일, 시, 분, 초를 반환해주는 함수이다. 

SELECT SYSDATE FROM A; -> 현재 시간대 출력! 2023-08-15 17:06:33

 

EXTRACT(특정 단위 FROM 날짜 데이터)

날짜데이터에서 특정단위만을 출력

SELECT EXTRACT(YEAR FROM SYSDATE) AS YEAR,

              EXTRACT(MONTH FROM SYSDATE) AS MONTH

FROM A; -> 2023 8 출력

 

ADD_MONTHS(날짜 데이터 특정 개월 수)

날짜 데이터에서 특정 개월 수를 덩한 날짜를 반환해주는 함수이다. 날짜의 이전달이나 

다음 달력 기준 날짜의 일자가 존재하지 않으면 해당 월의 마지막 일자가 반환된다. 

ADD_MONTHS(TO_DATE("2021-12-31","YYYY-MM-DD"),-1) -> 2021-11-30

 

변환 함수 

명시적 형변환 

변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄

 

TO_NUMBER

문자열을 숫자형으로 변환해주는 함수이다.

SELECT TO_NUMBER("1234") FROM A; -> 1,234

 

TO_CHAR

수는 날짜형의 데이터를 포맷 형식의 문자형으로 반환해주는 함수이다. 

SELECT TO_CHAR(1234) FROM A; -> "1234"

 

TO_DATE

포맷 형식의 문자형의 데이터를 날짜형으로 반환해주는 함수이다. 

SELECT TO_DATE("20230815","YYYYMMDD") FROM A; -> 2023-08-15

 

암시적 형변환

데이터베이스가 내부적으로 알아서 데이터 유형을 반환함 

 

명시적 형변환을 쓰는게 더 유리하고 성능상 좋다.

 

NULL 관련 함수 

NVL(인수1, 인수2), ISNULL 또한 동일 

인수1의 값이 NULL일 경우 인수2를 반환하고 NULL이 아닐 경우 인수1을 반환해주는 함수이다. 

 

NULLIF(인수1, 인수2)

인수1과 인수2가 같으면 NULL을 반환하고 같지 않으면 인수1을 반환해주는 함수이다. 

 

COALESCE(인수1, 인수2, 인수3 ....)

NULL이 아닌 최초의 인수를 반환해주는 함수이다. 

 

CASE

함수보단 구문에 가깝다. 

WHEN은 ~이면 THEN은 ~이다. 다 해당되지 않을때 ELSE가 있다. 대충 이런 문법이다.

또한 DECODE도 있다.

SELECT SUBWAY_LINE

DECODE(SUBWAY_LINE,"1","BLUE","2","GREEN","3","ORANGE","GRAY")

FROM SUBWAY_INFO;

이것은 ELSE 값을 부여하지 않을때 기본적으로 NULL 값이 나온다. 

 

 

 

 

728x90