Database/SQLD 30

[SQLD] 3-03. 함수(5) - NULL 관련 함수 2024.03.03

NULL 관련 함수 NVL(인수1, 인수2) 인수1의 값이 NULL일 경우 인수2를 반환하고 NULL이 아닐경우 인수1을 반환 인수1과 인수2의 데이터 타입이 같아야 함 ** SQL Server (MSSQL)의 경우 ISNULL(인수1, 인수2) -- REVIEW_SCORE 칼럼에서 값이 NULL인 경우 0으로 치환 SELECT NVL(REVIEW_SCORE, 0) AS REVIEW_SCORE FROM REVIEW; NULLIF(인수1, 인수2) 인수1과 인수2가 같으면 NULL을 반환하고 같지 않으면 인수1을 반환해주는 함수 -- REVIEW_SCORE 칼럼에서 값이 0일 경우 NULL을 반환 SELECT NULLIF(REVIEW_SCORE, 0) AS REVIEW_SCORE FROM REVIEW; C..

[SQLD] 3-03. 함수(4) - 변환 함수 2024.03.03

변환 함수 명시적 형변환과 암시적 형변환 명시적 형변환 : 변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄 암시적 형변환 : 데이터베이스가 내부적으로 알아서 데이터 유형을 변환함 EX) VARCHAR 유형의 BIRTHDAY 컬럼을 숫자와 비교할 경우 ➡ 데이터베이스는 오류를 뱉지 않고 내부적으로 BIRTHDAY 컬럼을 NUMBER형으로 변환 ➡ 암시적 형변환 암시적 형변환이 가능하다고 해서 컬럼의 데이터 유형을 고려하지 않고 SQL을 작성하는 경우 1) 성능 저하를 불러올 수 있음 2) 때에 따라 에러를 뱉는 경우도 있음 TO_NUMBER(문자열) 문자열을 숫자형으로 변환해주는 함수 -- 1,234 SELECT TO_NUMBER('1234') FROM DUAL; -- ERROR 발생 SELEC..

[SQLD] 3-03. 함수(3) - 날짜 함수 2024.03.03

날짜 함수 SYSDATE 현재의 연, 월, 일, 시, 분, 초를 반환해주는 함수 nsl_date_format에 따라 sysdate의 출력 양식은 달라질 수 있음 ** SQL Server (MSSQL)의 경우 GETDATE() -- 2024-03-03 10:56:55.000 SELECT SYSDATE FROM DUAL; EXTRACT(특정단위 FROM 날짜데이터) 날짜 데이터에서 특정 단위 (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND)만을 출력해서 반환해주는 함수 ** SQL Server (MSSQL)의 경우 DATEPART(특정 단위, 날짜데이터) -- 2024, 3, 3 SELECT EXTRACT(YEAR FROM SYSDATE) AS YEAR, EXTRACT(MONTH FR..

[SQLD] 3-03. 함수(2) - 숫자 함수 2024.03.03

숫자 함수 ABS(수) 수의 절댓값을 반환해 주는 함수 -- 1 SELECT ABS(-1) FROM DUAL; -- 2 SELECT ABS(2) FROM DUAL; SIGN(수) 수의 부호를 반환해주는 함수 양수 : 1 음수 : -1 0 : 0 -- -1 SELECT SIGN(-1) FROM DUAL; -- 1 SELECT SIGN(7) FROM DUAL; ROUND(수 [,자릿수]) 수를 지정된 소수점 자릿수까지 반올림하여 반환해주는 함수 자릿수를 명시하지 않았을 경우 기본값은 0, 반올림된 정수로 반환 자릿수가 음수인 경우 지정된 정수부를 반올림하여 반환 -- 163.8 SELECT ROUND(163.76, 1) FROM DUAL -- 200 SELECT ROUND(163.76, -2) FROM DU..

[SQLD] 3-03. 함수(1) - 문자함수 2024.03.03

문자 함수 CHR(ASCII 코드) ASCII 코드는 총 128개의 문자를 숫자로 표현할 수 있도록 정의해 놓은 코드 CHR 함수는 ASCII 코드를 인수로 입력했을 때 핑되는 문자가 무엇인지를 알려주는 함수 ** SQL Server (MSSQL)의 경우 CHAR(ASCII 코드) -- A SELECT CHR(65) FROM DUAL; LOWER(문자열) 문자열을 소문자로 반환해주는 함수 -- jennie SELECT LOWER('JENNIE') FROM DUAL; UPPER(문자열) 문자열을 대문자로 변환해주는 함수 -- JENNIE SELECT UPPER('jennie') FROM DUAL; LTRIM(문자열 [, 특정문자]) * []는 옵션 특정 문자를 따로 명시해주지 않으면 문자열의 왼쪽 공백 제..

[SQLD] 3-02. SELECT 문 2024.03.02

SELECT 저장되어 있는 데이터를 조회하고 자할 때 사용하는 명령어 SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 조회 조건; 칼럼을 따로 명시하지 않고 * (ASTERISK)를 쓰면 전체 컬럼이 조회 됨 조회되는 컬럼의 순서는 테이블의 컬럼 순서와 동일 별도의 WHERE 절이 없으면 테이블의 전체 Row가 조회됨 SELECT * FROM 테이블; 테이블명이나 컬럼명에 별도의 별칭(Alias)를 붙일 수 있음 앞에 AS를 명시해도 되고 안 해도 됨 SELECT 문보다 늦게 수행되는 ORDER BY 절에서만 컬럼 별칭 사용가능 이미 존재하는 예약어 (EX AVG, COUNT, DECODE 등)는 별칭으로 사용 불가 -- Alias 사용 X SELECT band.band_name, ban..

[SQLD] 3-01.관계형 데이터베이스 개요 2024.03.02

데이터베이스 용도와 목적에 맞는 데이터들끼리 모아서 저장하는 공간 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것 DBMS (Database Management System) 보다 효율적인 데이터의 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요시 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어 데이터베이스의 발전 1960년대 : 플로우차트 중심의 개발 방법을 사용, 파일 구조를 통해 데이터를 저장/관리 1970년대 : 데이터베이스 관리 기법이 처음 태동되던 시기, 계층형(Hierarchical) 데이터베이스 / 망형(Network) 데이터베이스 제품들 상용화 1980년대 : 현재 대부분의 기업에서 사용되고 있는 관계형 데이터베이스 사..

[SQLD] 2-05. 분산 데이터베이스와 성능 2024.03.01

분산 데이터베이스란? 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임 물리적 Site 분산, 논리적으로 사용자 통합 / 공유 ➡ 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역에 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스 투명성 (Transparency) 분산데이터베이스가 되기 위해서 6가지 투명성을 만족해야 함 1) 분할 투명성 (단편화) : 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장 2) 위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위..

[SQLD] 2-04. 데이터베이스 구조와 성능 (2) 2024.03.01

[SQLD] 2-04. 데이터베이스 구조와 성능 (1) 슈퍼/서브타입 모델 ⭐ 공통의 부분을 슈퍼타입으로 모델링 ⭐ 공통으로 부터 상속받아 다른 엔터티와 차이가 있는 속성에 대해 별도의 서브엔터티로 구분 최근 자주 쓰이는 모델링 방법 Extended bean-soup-99.tistory.com PK / FK 칼럼 순서와 성능 데이터를 조회할 때 가장 효과적으로 처리될 수 있도록 접근 경로를 제공하는 오브젝트 ➡ 인덱스 PK / FK 설계는 데이터를 접근할 때 경로를 제공하는 성능의 측면에서도 중요한 의미를 가짐 성능을 고려한 데이터베이스 설계가 되기 위해선 설계단계 말에 칼럼의 순서를 조정할 필요가 있음 PK는 해당테이블의 데이터에 접근할 가장 빈번하게 사용되는 유일한 인덱스 (Unique Index)를..

[SQLD] 2-04. 데이터베이스 구조와 성능 (1) 2024.03.01

슈퍼/서브타입 모델 ⭐ 공통의 부분을 슈퍼타입으로 모델링 ⭐ 공통으로 부터 상속받아 다른 엔터티와 차이가 있는 속성에 대해 별도의 서브엔터티로 구분 최근 자주 쓰이는 모델링 방법 Extended ER 모델이라고 불림 분석단계에서 많이 쓰이는 모델 / 논리적인 데이터 모델에서 이용되는 형태 업무를 구성하는 데이터의 공통점, 차이점을 고려하여 효과적으로 표현할 수 있음 물리적인 데이터 모델로 변환할 때 선택의 폭을 넓힐 수 있음 ➡ 슈퍼 / 서브타입 데이터 모델을 물리적인 데이터 모델로 변환할 때 일정한 기준에 따라 변환해야 함 슈퍼/서브타입 데이터 모델의 변환 - 슈퍼/서브타입에 대한 변환을 잘못하여 성능이 저하되는 경우 CASE 1) 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union ..