[SQLD] 2과목 2-1 ) SQL 기본 1 / SELECT 문, SQL 함수
1. 관계형 데이터베이스 개요
1) 관계형 데이터베이스
RDB( Relational Data Base)
- 관계형 데이터 모델에 기초를 둔 데이터베이스
- 2차원 테이블 형태로 표현
2) TABLE
- 세로열 - Column (속성)
- 가로열 - Row (인스턴스)
- 데이터 모델에서 엔터티에 해당
DATEBASE ⊃ TABLE
3) SQL(Structured Query Language)
- 관계형 DB에서 데이터를 다루기 위해 사용하는 언어
2. SELECT 문
1) SELECT
- 저장되어 있는 데이터를 조회하고자 할 때 사용하는 명령어
- * 전체 컬럼이 조회되면 죄회되는 컬럼의 순서는 테이블의 컬럼 순서와 동일
- 별도로 WHERE절이 없으먼 테이블의 전체 Row가 조회 됨
SELECT 컬럼1, 컬럼2 ... FROM 테이블 WHERE 컬럼1 = '아무개' ;
SELECT * FROM 테이블 ;
2) 산술 연산자
연산자 | 의미 |
( ) | 괄호 우선순위 |
* | 곱하기 |
/ | 나누기 |
+ | 더하기 |
- | 빼기 |
SELECT 10+5, 10-5, 10*5, 10/5 FEOM DUAL;
SELECT * FROM SAMPLE;
SELECT COL1+COL2 AS A, COL1-COL2 AS S,
COL1*COL2 AS M, COL1/COL2 AS D
FROM SAMPLE;
SELECT COL1+COL2*COL1 AS R1,(COL1+COL2)COL1 AS R2,
FROM SAMPLE;
3) 합성 연산자
- 문자와 문자를 연결할 때 사용하는 연산자
SELECT 'S' || 'Q' || 'L' || '개' || '발' || '자' AS SQLD
FROM DUAL;
SELECT * FROM SAMPLE;
SELECT COL1 || ' ' || 'SQLD' || ' ' || COL2 AS RESULT
FROM SAMPLE;
3. 함수
1) 문자 함수
① CHR(ASCII코드)
- ASCII코트를 인수로 입력했을 때 매핑되는 문자가 무엇인지 알려주는 함수
SELECT CHR(65) FROM DUAL;
② LOWER(문자열)
- 문자열을 소문자로 변환
SELECT LOWER('JENNIE') FROM DUAL;
③ UPPER(문자열)
- 문자열을 대문자로 변환
SELECT UPPER('JENNIE') FROM DUAL;
④ LTRIM(문자열 [,특정문자])
- 특정문자를 정해주지 않으면 문장의 왼쪽 공백을 제거 / 정해주면 문자열 왼쪽부터
SELECT LTRIM('블랙핑크', '블랙') FROM DUAL;
⑤ RTIMR(문자열 [,특정문자])
- 문장의 오른쪽부터 공백 제거
SELECT RTRIM('블랙핑크', '핑크') FROM DUAL;
⑥ TRIM([위치] [특정문자] [FROM] 문자열)
- 공백 제거 RTRIM, LTRIM 과 달리 특정글자는 한 글자만 가능
- LEADING, TRAILING, BOTH으로 지정
SELECT TRIM(LEADING'블' FROM '블랙핑크') FROM DUAL;
⑦ SUBSTR(문자열, 시작점[,길이])
- 문자열의 우너하는 부분만 잘라서 반환해주는 함수
SELECT SUBSTR ('블랙핌크제니', 3, 2) FROM DUAL;
⑧ LENGHT(문자열)
- 문자열의 길이를 반환해주는 함수
SELECT LENGHT('JENNIE') FROM DUAL;
⑨ REPLACE(문자열, 변경 전 문자열 [,변경 후 문자열])
- 문자열에서 변경 전 문자열을 찾아 변경 후 문자열로 바꿔주는 함수
SELECT REPLACE ('블랙핑크제니', '제니', '지수') FROM DUAL;
2) 숫자 함수
① ABS(수)
- 수의 절대값을 반환해주는 함수
SELECT ABS(-1) FROM DUAL; # 1
② SIGN(수)
- 수의 부호를 반환해준는 함수
- 양수 : 1 / 음수 : -1 / 0 : 0
SELECT SING(-7) FROM DUAL: # -1
③ ROUND(수 [,자릿수])
- 수를 지정한 소수점 자릿수까지 반올림하여 반환해주는 함수
SELECT ROUND(163.76, -2) FROM DUAL; # 200
④ TRUNC(수 [,자릿수])
- 수를 지정된 소수점 자릿수까지 버리하여 반환해주는 함수
SELECT TRUNC(54.29, -1) FROM DUAL; # 50
⑤ CEIL(수)
- 소수점 이하의 수를 올림한 정수를 반환해주는 함수
SELECT CEIL(72.86) FROM DUAL; # 73
⑥ FLOOR(수)
- 소숫점 이하의 수를 버림한 정수를 반환해주는 함수
SELECT FLOOR(22.3) FROM DUAL; # 22
⑦ MOD(수1, 수2)
- 수1을 수2로 나눈 나머지를 반환해주는 함수
SELECT MOD(15, -4) FROM DUAL; # 3
3) 날짜 함수
① SYSDATE
- 현재 년,월,일,시,분,초를 반환해주는 함수
SELECT SYSDATE FROM DUAL;
② EXTRACT(특정단위 FROM 날짜 데이터)
- 날짜 데이터에서 특정 단위 (YEAR,MONTH,DAY,HOUR,...) 만을 출력
SELECT EXTRACT(YEAR FROM STSDATE) AS YEAR,
EXTRACT(MONTH FROM STSDATE) AS MONTH,
EXTRACT(DAY FROM STSDATE) AS DAY
FROM DUAL;
③ ADD_MONTHS(날짜데이터, 특정 개월 수)
- 날짜 데이터에서 특정 개월 수를 더한 날짜를 반환해주는 함수
SELECT ADD_MONTHS(TO_DATE('2023-08-24', 'YYYY-MM-DD'),-1) AS PREV_MONTH
ADD_MONTHS(TO_DATE('2023-08-24', 'YYYY-MM-DD'),-1) AS NEXT_MONTH
FROM DUAL;
4) 변환 함수
① 명시적 형변환과 암시적 형변환
- 명시적 형변환 : 변호나 함수를 사용하여 데이터 유형 변환을 명시적을 나타냄
- 암시적 형변환 : 데이터베이스가 내부적으로 알아서 데이터 유형을 변환함
② 명시적 형변화에 쓰이는 함수
- TO_NUMBER : 문자열을 숫자형으로 변환
- TO_CHAR : 수나 날짜형 데이터를 포맷 형식의 문자형으로 변환
- TO_DATE : 포맷 형식의 문자형의 데이터를 날짜형으로 변환
5) NULL 함수
① NVL(인수1, 인수2)
- 인수1의 값이 NULL알 경우 인수2를 반환, NULL이 아닐경우 인수1을 반환
② NULLIF(인수1, 인수2)
- 인수1과 인수2가 같으면 NULL을 반환하고 같지 않으면 인수1을 반환
③ COALESCE(인수1, 인수2, 인수3..)
- NULL이 아닌 최초의 인수를 반환