Today I Learned (TIL)/SQL 17

[TIL] SQL 베이직 - 5회차

1. 관리구문- DML Data Manipulation Language. 데이터 입력/수정/삭제하는 명령어이다.- TCL Transaction Control Language. 트랜잭션(Transaction)을 제어하는 명령어이다. 트랜잭션이란 쪼갤 수 없는 업무처리 단위를 말한다. 무조건 한 세트로 묶여야 하는 논리적인 업무 단위로 2가지 액션이 있을 때 하나로 묶여 한 번에 동작이 되어야 한다.- DDL Data Definition Language. 데이터를 정의하는 명령어이다.- DCL Data Control Language. user를 생성하고 권한을 부여하는 명령어이다.구분명령어설명-SELECT-DMLINDERT데이터 입력UPDATE데이터 수정DELETE데이터 삭제TCLCOMMITINSERT/UP..

[TIL] SQL 챌린지 - 5회차

1. 윈도우 구문 Postrgres SQL 등 엄격한 ANSI SQL을 제공하는 경우 SELF JOIN 필수이다. 윈도우 구문은 이동평균, 누적 합계, 순위 계산이 가능하여 일종의 서브쿼리 역할을 한다. 윈도우 구문을 사용하면 가독성이 올라간다.-- 일반적인 구문SELECT 집계함수() OVER ( [PARTITION BY {컬럼명1}], [ORDER BY {컬럼명2}]) FROM {테이블}; 2. 윈도우 구문 함수- ORDER BY 구문 함수 내에서 데이터를 정렬하는 데 사용된다. 일반적인 ORDER BY 구문과 달리 윈도우 함수가 적용되는 범위 내에서만 정렬된다.-- 전체 직원을 대상으로 월급을 많이 받는 순위 매기기SELECT employee_id, department_id, sa..

[TIL] SQL 베이직 - 4회차

1. 산술 연산자수학에서 사용하는 사칙연산의 기능을 가진 연산자이다.연산자의미우선순위( )우선순위 조정1*곱하기2/나누기(0으로 나누면 NULL)2+더하기3-빼기3%나머지(0으로 나눌경우 NULL)3 2. 함수- 문자 함수구분설명ASCII(문자열) 문자열의 가장 왼쪽 문자의 아스키 코드 값을 반환하는 함수ASCII코드는 총 128개의 문자를 숫자로 표현할 수 있도록 정의해 놓은 코드LOWER(문자열)문자열을 소문자로 변환UPPER(문자열)문자열을 대문자로 변환LTRIM(문자열)문자열의 왼쪽 공백 제거RTRIM(문자열)문자열의 오른쪽 공백 제거TRIM(문자열)문자열의 왼쪽과 오른쪽 공백 제거SUBSTR(문자열, 시작점, [길이])문자열의 원하는 부분만 잘라서 반환길이를 명시하지 않았을 경우 문자열의 시작점..

[TIL] SQL 베이직 - 3회차

1. UNION 여러 개의 SELECT 문의 결과를 하나의 테이블로 연결하여 보고 싶을 때 사용한다. UNION을 사용할 때는 두 SELECT문의 열과 개수, 순서, 형식이 모두 동일해야 한다. 중복을 제거하고 하나로 표기하고 싶다면 UNION만 사용하고 중복을 제거하지 않고 모두 표기하고 싶다면 UNION ALL로 표기한다.# union/union all 기본구조select name, goods_nm, pay_date # 컬럼 순서가 같고, 그 형식이 같아야 함 from 테이블명1union (all) #수직결합 명시select name, goods_nm, pay_date # 컬럼 순서가 같고, 그 형식이 같아야 함 from 테이블명 2 ; 2. DB 정규화 정규화는 데이터베이스의 데이터 정합성을 위해..

[TIL] SQL 챌린지 - 4회차

1. 날짜형 자료 기본 협정시계시(Universal Time Coordinated)는 1972년에 공표된 국제적인 표준 시를 말한다. 한국은 UTC+9시간에 속하므로 기준시보다 9시간 빠르다.함수설명CURDATE현재 서버 날짜CURTIME현재 서버 시간NOW현재 서버 날짜 및 시DATETIMEYYYY-MM-DD HH:MMTIMEHH:MM:SSDATEYYYY-MM-DDYEARYYYY or YYTIMESTAMPYYYY-MM_DD HH:MM구분DATETIMETIMESTAMP용도시간대를 임의로 설정REALTIME 저장이 필요할 때(라이브 서비스)시간대그대로 저장서버의 시간대로 저장범위1000-01-01 ~ 9999-12-311970-01-01 00:00:00 ~ 2038-01-19 03:14:07자동 업데이트X..

[TIL] SQL 챌린지 - 3회차

1. 자료형- Python의 기본자료형 문자열, 숫자형, 리스트, 딕셔너리, 튜플- SQL의 기본자료형 문자열, 숫자형, 날짜 2. 숫자 자료형- 비트와 바이트 - 정수형 정수형 자료형은 AUTO_INCREMENT 제약조건을 이용하여 ID를 생성하는데 유용하다.구분범위저장크기특징 TINYINT Signed: -128 ~ 127Unsigned: 0 ~ 2551byte매우 작은 정수 값을 저장하며 메모리 사용 최소화 SMALLINT Signed: -32,768 ~ 32,767Unsigned: 0 ~ 65,5352bytes작은 정수 값 MEDIUMINT Signed: - 800만 ~ 800만Unsigned: 0 ~ 1600만3bytes중간 크기 정수 값 INT Signed: 약 - 20억 ~ 20억*Unsig..

[TIL] SQL 챌린지 - 2회차

1. KEY- 관계형 데이터베이스 KEY 1) 식별자: 데이터베이스 설계 단계에서 사용하는 용어로 각 행을 고유하게 식별할 수 있는 모든 속성 혹은 속성 조합을 나타냄 2) 기본키: 각 행을 고유하게 식별하는 데 사용되는 선택된 식별자로 테이블 간의 관계(JOIN)를 기술하기 위해 사용구분설명특징 기본 키(Primary Key) 각 행을 고유하게 식별하게 사용되는 하나 이상의 컬럼한 테이블에는 하나의 키만 존재NULL 값을 가질 수 없음각 행에 고유한 값 외래 키(Foreign Key) 한 테이블의 컬럼이 다른 키의 기본키를 참조하는데 사용되는 컬럼부모 테이블의 기본 키와 동일제약조건을 통해 참조 무결성을 유지할 수 있음 2. 테이블 생성하기 (DDL) 데이블을 생성할 때 컬럼별로 제약조건을 설정할 수 ..

[TIL] SQL 베이직 - 2회차

1. SQL 집계함수: COUNT, MAX, MIN, SUM, AVG  SQL의 집계함수는 여러 행 또는 열로부터 하나의 결과값을 반환한다. 집계함수는 전체 데이터를 대상으로 사용하거나, 특정 컬럼을 기준으로 사용할 수 있다. 집계함수는 NULL값 가진 행을 제외 하고 수행하기 때문에 count()를 이용해 행의 개수를 세었을 때 NULL 값을 제외한 수가 반환된다. AVG를 이용할 때도 NULL 값을 제외하고 평균을 구한다.  2. SQL 그룹화: GROUP BY와 HAVING GROUP BY절 집계함수에 그룹(기준) 이 더해진 개념이다. 특정 컬럼을 기준으로 데이터를 요약해서 비교하고 싶을 때 사용한다. SELECT문에 기준컬럼과 집계함수가 둘 다 있는 경우 GROUP BY는 필수이다.# 집계함수,..

[TIL] DA를 위한 데이터베이스 완전 정복

1. DBMS란? DBMS는 데이터를 체계적으로 저장하고 관리할 수 있게 도와주는 프로그램이다. 데이터를 효율적으로 관리하기 위해 사용하며 저장, 검색, 수정, 삭제 기능을 사용할 수 있다.종류설명MySQL오픈 소스 데이터베이스로 많이 사용PostgreSQL또 다른 오픈 소스 데이터베이스로 안정성이 높음Oracle기업에서 많이 사용하는 상용 데이터베이스MS SQL마이크로소프트에서 만든 데이터베이스 2. 키의 종류 데이터베이스에서 키는 데이터를 고유하게 식별하는 데 사용한다. 키를 통해 데이터베이스 내에서 특정 데이터를 쉽게 찾을 수 있다.종류설명기본키 (Primary Key)테이블에서 각 행(레코드)를 유일하게 식별중복되지 않으며 NULL 값을 가질 수 없음외래키 (Foreign Key)다른 테이블의 기..

[TIL] SQL 챌린지 - 1회차

1. 데이터베이스 서비스와 개념- MySQL 관계형 데이터베이스가 1970년에 개발된 이후 기조의 레거시 기업들은 Oracle 데이터베이스를 많이 사용하고 있으며, 여전히 대기업들은 많이 사용한다.- 클라우드 데이터베이스 종류 1) 클라우드 ▷ 클라우드를 활용하면 같은 데이터를 실시간으로 확인 가능하기 때문에 미스 커뮤니케이션을 줄일 수 있음 ▷ 프로젝트 진행 시 클라우드 데이터베이스를 사용하는 것을 권장하며 대표적으로 GOOGLE - BigQuery, AMAZON - REDSHIFT 등이 있음 2) ON - PREMISE  ▷ MySQL, ORACLE, PostgreSQL 이 대표적- 데이터 가져오기 정확하게 접속하고 싶은 DB가 있다면 정보를 알아야 한다. DBeaver는 데이터베이스를 연결하는 하나..

[TIL] SQL 베이직 - 1회차

1. SQL의 작동순서 및 작성순서- 작동순서 FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY 테이블 확인 후 조인 조건을 확인하고 조인 후 추출할 조건을 확인한다. 그리고 데이터 그룹화, 추출, 중복제거를 마치면 마지막으로 데이터를 정렬한다. 작동순서를 고려하지 않고 쿼리를 작성할 경우 의도와 다른 결과를 얻을 수 있으므로 작동순서를 꼭 기억해야 한다.- 작성순서 SELECT → FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY 2. SQL 기본구조: SELECT, FROM- SELECT SELECT문을 사용하여 테이블의 값을 선택한다. 아스테리크(*) 기호를 사용하..

[TIL] 엑셀보다 쉽고 빠른 SQL - 5주차

1. 조회한 데이터에 아무 값이 없다면  또는 상식적이지 않은 값을 가지고 있다면 어떻게 해야할까?- 데이터가 없을 때의 연산 결과 변화 케이스 1) 없는 값을 제외해주기 2) 다른 값을 대신 사용하기 ▷ 다른 값이 있을 때 조건문 이용하기 : if(rating>=1, rating, 대체값) ▷ null 값일 때 : coalesce(age, 대체값)- 데이터가 상식적이지 않은 값을 가지고 있을 때 1) 조건문으로 값의 범위를 지정하기 2. 업무 시작을 단축시켜 주는 마법의 문법 (Window Function - RANK, SUM)- Window Function의 사례와 기본 구조 Window Function은 각 행의 관계를 정의하기 위한 함수로 그룹 내의 연산을 쉽게 만들어 준다. 기본 SQL 구조로 ..

[TIL] 엑셀보다 쉽고 빠른 SQL - 4주차

1. 여러번의 연산을 한 번의 SQL문으로 수행하기(Subquery)- Subqury가 필요한 경우 1) 여러번의 연산을 수행해야 할 때 2) 조건문에 연산 결과를 사용해야 할 때 3) 조건에  Query 결과를 사용하고 싶을 때- Subqury 사용 가능한 곳 1) SELECT 절 (스칼라 서브쿼리): 특정 열의 값을 계산하거나 변환할 수 있음 2) FROM 절 (인라인 뷰): 임시 테이블처럼 사용할 수 있음. 사용시 반드시 별칭을 정해줘야 함 3) WHERE 절 (중첩 서브쿼리): 조건을 필터링할 수 있음 4) HAVING 절: 그룹화된 결과를 필터링할 수 있음 5) ORDER BY 절 6) INSERT 문의 VALUES 절 7) UPDATE 문의 SET 절 2. 필요한 데이터가 서로 다른 테이블에 ..

[TIL] 엑셀보다 쉽고 빠른 SQL - 3주차

1. 업무 필요한 문자 포맷이 다를 때, SQL로 가공하기 (REPLACE, SUBSTRING, CONCAT)- Query 결과를 바로 사용할 수 없을 때 함수 사용 1) 특정 문자를 다른 문자로 바꾸기replace(바꿀 컬럼, 현재 값, 바꿀 값)  2) 원하는 문자만 남기기substr(조회 할 컬럼, 시작 위치, 글자 수)  3) 여러 컬럼의 문자 합치기(붙일 수 있는 문자의 종류는 컬럼, 한글, 영어, 숫자, 기타 특수문자가 있다.)concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, ~~~) 2. 조건에 따라 포맷을 다르게 변경해야 한다면(IF, CASE)- 범주별로 다른 연산(계산, 문자 바꾸기) 적용하기 1) 조건에 따라 다른 방법을 적용하고 싶을 때if(조건, 조건을 충족할..