SQL 21

[SQL] 데이터 모델링

데이터 모델 현실 세계를 추상화하여 데이터 구조와 관계를 시각적으로 표현한 것 데이터베이스 시스템에서 사용되는 데이터의 논리적 구조 정의 데이터 모델링 현실 세계의 데이터를 추상화하여 데이터 모델로 변환하는 작업 데이터 모델링 프로세스 요구사항 분석 개념적 데이터 모델링 논리적 데이터 모델링 물리적 데이터 모델링 구현 및 유지보수 검증 및 최적화 문서화 데이터 모델의 종류 계층적, 네트워크, 개체-관계형, 관계형, 차원, 객체지향, 그래프 속성 (Attribute) 엔티티 집합에 포함되는 최소의 데이터 단위 각각 속성에 대해 단일 속성값을 가져야 한다. 식별자 (Identifier) 하나의 엔티티 집합에서 각 엔티티를 구분할 수 있는 속성이나 속성의 집합 엔티티 집합은 반드시 식별자를 가져야 한다. 관계..

SQL 2024.03.23

[SQL] 윈도우 함수

윈도우 함수 (Window Function) 데이터베이스 쿼리나 데이터 분석에서 주로 사용되는 함수 데이터셋을 그룹화하거나 정렬한 후에 특정 연산 적용하는데 사용 분석 함수 또는 순위 함수라고도 한다. 여기서 윈도우란 연산이 수행되는 데이터셋의 부분집합으로 지정된 분할 기준에 의해서 정의되며 함수가 적용되는 범위를 지정하는 역할을 한다. 윈도우 함수 사용 반드시 OVER 절이 필요하다. OVER 절은 윈도우 함수가 작동하는 윈도우를 정의하며 파티션과 순서를 지정할 수 있다. 윈도우 함수의 종류에 따라서 0~n개의 인수(arguments)가 지정될 수 있다. 형식 SELECT 윈도우함수명(인수) OVER([PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING절]) FROM 테이블명; ..

SQL 2024.03.23

[SQL] 제약 조건

제약조건 테이블에 제약조건을 설정하여 데이터 무결성을 유지할 수 있다. CREATE 문으로 테이블 생성할 때나 ALTER 문으로 테이블 구조 변경시 지정 가능 제약조건은 고유한 이름을 붙여서 식별할 수 있다. 한 컬럼의 여러 개의 제약조건 설정 가능 형식 CREATE TABLE 테이블명 ( 컬럼1 데이터타입 제약조건, 컬럼2 데이터타입, 제약조건(컬럼2) );​ 컬럼의 데이터타입 바로 다음에 기술 또는 컬럼의 정의를 끝낸 후 제약조건을 별도로 지정으로 가능 제약조건 종류 PRIMARY KEY 기본키 설정 기본키는 테이블 당 한개만 가능 기본키는 NOT NULL과 유일한 값 (UNIQUE)을 가져야 한다. 기본키 생성시 자동으로 인덱스 생성 NOT NULL UNIQUE 유일한 값을 넣어야 한다. 자동 인덱..

SQL 2024.03.23

[SQL] DDL (CREATE, ALTER, DROP)

데이터 정의어 (Data Definition Language, DDL) 테이블, 인덱스, 뷰 등의 객체를 생성(CREATE), 수정(ALTER), 삭제(DROP) CREATE 데이터베이스, 테이블, 뷰, 인덱스 등 객체 생성 데이터베이스 생성 CREATE DATABASE [IF NOT EXISTS] 데이터베이스명; 테이블 생성 CREATE TABLE 테이블명 ( 컬럼1 데이터타입, 컬럼2 데이터타입, ... ) 테이블 구조 복사 CREATE TABLE 테이블명 AS SELECT문; ALTER 컬럼 추가 ALTER TABLE 테이블명 ADD COLUMN 새로운컬럼명 데이터타입; 기존 컬럼 연산하여 자동으로 값까지 추가되는 컬럼 추가 ALTER TABLE 테이블명 ADD COLUMN 새로운컬럼명 데이터타입 ..

SQL 2024.03.23

[SQL] DML (INSERT, UPDATE, DELETE)

데이터 조작어(Data Manipulation Language, DML) 데이터 추가(INSERT), 변경(UPDATE), 삭제(DELETE)할 때 사용 INSERT 테이블에 새로운 행 삽입 INSERT INTO 테이블명 VALUES(값1, 값2, …); 컬럼명 생략 가능하나, 삽입할 값이 테이블의 컬럼 수와 순서도 동일해야 한다. INSERT INTO 테이블명(컬럼1, 컬럼2, …) VALUES (값1, 값2, …); UPDATE 기존 행에 있는 데이터 값 변경 UPDATE 문에 WHERE 절이 없으면 모든 행의 값이 변경되므로 주의! UPDATE 테이블명 SET 컬럼1=값1, 컬럼2=값2 [WHERE 조건]; JOIN을 사용한 UPDATE 하위 쿼리에서 메인 쿼리의 대상 테이블을 참조하면 오류 발생하..

SQL 2024.03.22

[SQL] 데이터 타입

문자형 데이터 타입 CHAR 고정길이 문자형 지정한 길이보다 데이터 길이가 작으면 빈칸만큼 공백이 들어간다. VARCHAR 가변길이 문자형 데이터의 길이만큼의 메모리 차지 TEXT 길이를 지정하지 않는다. 컬럼의 최대 길이를 모를 때 사용 TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT JSON JSON 문자열 데이터타입 숫자형 데이터 타입 정수형 INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT 실수형 FLOAT(소수점 아래7자리), DOUBLE(소수점 아래15자리), DECIMAL(고정 소수점) 날짜시간형 데이터 타입 날짜 DATE 시간 TIME 날짜와 시간 DATETIME, TIMESTAMP TIMESTAMP는 시간대 적용시켜서 보여주므로 글로벌 서비스에서..

SQL 2024.03.22

[SQL] 서브 쿼리

서브쿼리 (SubQuery) SELECT 문 안에 SELECT 문을 서브쿼리라고 한다. 복잡한 데이터 추출 및 조작시 사용 서브쿼리는 괄호 안에 기술해야 하고, SELECT, FROM, WHERE, HAVING 절 등에 넣어서 사용 가능 서브쿼리가 먼저 실행 후 메인 쿼리 실행 단일 행 서브쿼리 (Single-Row SubQuery) 서브쿼리의 결과로 단일 행 반환 =, , 등 단일 행 비교연산자 사용하여 연결 예시 SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 = (SELECT MAX(컬럼명) FROM 테이블명); 복수 행 서브쿼리 (Multi-Row SubQuery) 서브쿼리의 결과가 여러 행 IN, ALL, ANY, SOME, EXISTS 같은 복수행 비교 연산자 사용하여 연결 IN 서브쿼..

SQL 2024.03.22

[SQL] JOIN (CROSS, INNER, OUTER, SELF)

조인 (Join) 두 개의 테이블을 연결하여 데이터를 검색하는 방법 서로 다른 테이블에 저장된 관련된 데이터를 가져와서 하나의 결과로 표시 (하나의 테이블) ANSI SQL 조인 방식 FROM 절에서 두 테이블명 사이에 조인 종류에 따라 CROSS, INNER, OUTER 중 선택하고 JOIN 키워드 같이 입력 조인에 대한 조건은 ON절에 저장하고 나머지 조건은 WHERE절에 작성 CROSS, INNER, OUTER 키워드는 생략도 가능 형태 SELECT * FROM 테이블A [CROSS|INNER|OUTER] JOIN 테이블B ON 조인조건 WHERE 기타조건; Non-ANSI SQL 조인 방식 FROM절에 테이블을 쉼표로 구분하여 작성 조인조건과 기타조건을 구분하지 않고 모두 WHERE 절에 작성 형..

SQL 2024.03.22

[SQL] WHERE 문 (GROUP BY, HAVING), 집계 함수

WHERE 문 (GROUP BY, HAVING) WHERE 절 WHERE 절에 조건식을 넣어서 해당 조건에 맞는 레코드 출력 GROUP BY 절 그룹별로 묶어서 요약시 사용 SELECT 절에 그룹으로 묶을 컬럼명과 집계 함수를 넣은 후, 집계 함수를 제외한 컬럼명과 수식들은 반드시 GROUP BY 절에도 넣어야 한다. HAVING 절 GROUP BY의 결과에 대하여 추가 조건을 넣을 때 사용 집계 함수 집계 함수 레코드의 개수, 합계, 평균, 최대값, 최소값 등을 구할 때 사용 SELECT 문에 사용한다. 집계 함수 종류 COUNT(* | 컬럼) 레코드 개수 SUM(컬럼 | 수식) 합계 AVG(컬럼 | 수식) 평균 MAX(컬럼 | 수식) 최대값 MIN(컬럼 | 수식) 최소값 STDDEV(컬럼 | 수식) ..

SQL 2024.03.22

[SQL] 단일행 함수 (문자형, 숫자형, 날짜시간, 형변환, 제어흐름)

문자형 함수 CHAR_LENGTH(문자열) 문자의 개수 반환 LENGTH(문자열) 문자열에 할당된 바이트 수 반환 CONCAT(문자열들) 문자열들 연결 CONCAT_WS(구분자, 문자열들) 구분자와 함께 문자열 연결 GROUP_CONCAT(문자열) 자동으로 , 로 넣어서 구분하여 나열 LEFT(문자열, 길이)/RIGHT(문자열, 길이) 문자열의 왼쪽/오른쪽부터 길이만큼 문자열 반환 SUBSTR(문자열, 시작위치, 길이) 지정한 위치부터 길이만큼 문자열 반환 SUBSTRING_INDEX(문자열, 구분자, 인덱스) 지정한 구분자를 기준으로 문자열 분리 후 가져오는 함수 SQL은 인덱스가 1부터 시작한다. LPAD(문자열, 길이, 채울문자열)/RPAD(문자열, 길이, 채울문자열) 지정한 길이에서 문자열을 제외..

SQL 2024.03.22