SQL = 구조화된 쿼리 언어 = 데이터베이스를 분석하는 언어. 스프레드시트와 데이터베이스는 어떻게 다른가? 스프레드시트 = 엑셀 같은 것들. 1회성이거나 빠르게 필요할 때, 데이터베이스를 모르는 사람들에게도 분석을 편하게 해줌 데이터베이스는 대용량, 복잡한 데이터를
새로운 노트북을 사서 postgresql & pgadmin 설치부터 다시 시작설치 방법은 간단하다.설치 프로그램 다운받기https://www.enterprisedb.com/downloads/postgres-postgresql-downloads구글에 postgr
기초적인 SQL 구문은 SQL 프로그램에 관계없이 동일하다.1.SELECT문SQL에서 가장 자주 쓰이는 구문구문은 대문자로 쓰지 않아도 작동하나, 쿼리가 복잡해지면 키워드를 대문자로 써놓는것이 가독성에 좋다.SQL은 뒤에서부터 읽는다. 2) 테이블의 1) 열 순이다.전
열 값에 따라 오름차순/내림차순으로 정렬하는 구문SELECT & FORM 말고는 순서대로 실행되므로, 중복제거 등을 하려면 DISTINCT가 먼저 들어가야 한다.추출하고 -> 정렬해라의 순서.추출하고 -> 중복제거하고 -> 정렬해라가 된다.ORDER BY는 여러 열을
WHERE은 조건값을 지정하는 구문위 순서로 쓰이고, SELECT로 추출된 행값을 조건에 맞게 걸러주는 함수이다.조건이란 ~보다 큰, ~와 같은 ... 등이 대표적이다.조건1) 값비교값을 비교하는 조건값을 쓸때는 일반적인 =, >, <가 있고,이상/이하는 ><
특정 쿼리 조건에 맞는 행 개수를 추출하는 함수COUNT는 특정 대상에 작용하는 함수이므로 괄호가 필요하다.위 함수에서는 열 중에 어떤 값을 필터링하는 조건값이 없으므로, 전체 행 개수를 추출하게 된다.특정 조건 값을 넣어서 행 개수를 추출하는데 특히 유용하다.위와 같
BETWEENBETWEEN은 두 값 사이에 있는 값을 조회하는 구문 (두 값도 포함함)NOT BETWEEN으로 두 값 사이에 있지 않는 값을 조회할 수도 있다.BETWEEN a AND b 형태로 쓰고, WHERE에서의 조건으로 쓰인다.단순 값이 아닌 날짜에도 사용할 수
집계함수여러 조건을 입력해서 하나의 결과값을 내는 함수AVG, COUNT, MAX, MIN,SUMSELECT 혹은 HAVING 구문과 함께 사용해야하고 대상에 ()표시를 추가해야한다.집계함수 1개로는 1개의 열만 대상으로 할 수 있다.AVG는 소수점을 결과값으로 가지게
여러 테이블을 결합하는 구문INNER / OUTER / FULL JOIN, UNION 함수 등이 있다.AS문테이블에 있는 열에 다른 이름을 부여하는 구문결과값에서 테이블과 다른 열 이름으로 표시하고 싶을 때 유용하다.AS 연산자는 쿼리의 가장 마지막에 실행되므로, WH
시간 데이터의 종류TIME(시간)/ DATE(날짜) / TIMESTAMP(시간+날짜) / TIMESTAMPZ (타임스탬프+표준시간대정보)시간에 관련된 함수(SHOW) TIMEZONE : 표준시간대 정보(SELECT) NOW : 현재 (날짜 시간)(SELECT) TIME
수학함수기본적으로 왠만한 수학기호는 엑셀과 유사하다.곱하기, / 나누기 등...위와 같이 쓰면 열별 해당값을 구할 수 있다.필요하다면 마지막 쿼리처럼 AS로 곱한값 결과 열에 대해 다른 이름으로 노출할 수 있다.https://www.postgresql.org/
다른 쿼리의 결과를 사용한 쿼리를 만드는 등, 쿼리 속의 쿼리엑셀과 유사하게 쿼리를 쿼리 내의 값으로 활용하려면 서브쿼리 (쿼리 내의 쿼리)에 괄호를 쳐줘야 한다.괄호처리한 쿼리가 먼저 실행된 후 전체 쿼리가 실행된다.EXISTS 오퍼레이터를 활용해서 서브 쿼리에서 행
테이블이 자체적으로 중복 조인 되어 있는 경우같은 표가 두번 복사된 것처럼 보인다.하지만 실제로 같은 표인것은 아니므로, AS로 한쪽 테이블의 이름을 바꿔서 구별할 수 있도록 해야만 가능하다.1번 직원이 3번을 담당하고, 3번직원이 2번을 담당하는 것을 테이블로 정리했
데이터 유형가부 -> true / false문자숫자시간...데이터베이스를 생성할 때는 데이터가 어떻게 저장될지를 이해하고 생성해야 함https://www.postgresql.org/docs/current/datatype.html데이터 종류에 따라 데이터 크기가
INSERTINSERT는 표에 열을 삽입하는 함수열값은 테이블이 가지고 있는 제약조건을 만족시켜야 한다.기타키가 연결되어 제약조건으로 작용하는 경우 (3번예), 입력한 값이 연결되어 있는 테이블에 없는 값이라면 에러로 표시된다.UPDATE테이블의 값을 바꾸는 구문열1/
1.CASE특정 조건이 충족됐을때 실행하는 구문일반 CASE 구문과 CASE 표현으로 나뉨일반 CASE 구문AS를 END 뒤에 붙이면 추가되는 열 (case)의 이름이 label로 바뀜조건값 사이에는 쉼표를 붙일 필요가 없다.CASE 표현 구문무조건 조건이 값이 동일한
COALESCE입력한 값 중에 NULL이 아닌 값을 출력하는 함수.A열 - B열 값 등을 구할 때 B열에 NULL이 들어가있다면 0으로 계산한다 등에 유용하다.COALESCE (A,B,C) 일 경우 NULL값인지 앞에서부터 판단하면서 NULL이 아닌 값을 출력한다.A가
Views자주 사용하는 쿼리를 간단한 명령으로 보여주는 것데이터베이스 오브젝트로, 저장된 쿼리이다.이미 존재하는 표를 보여주듯 실행된다. 쿼리 자체를 저장한다기 보단, 쿼리로 원하는 내용을 불러오는 기능을 저장한다고 보는 것이 맞을듯.
csv, 엑셀 파일을 불러올때 테이블이 자동으로 생성되진 않는다.수동으로 테이블을 만들거나, 해당 부분을 자동화할 수 있다 (자동화 하는 법은 아래 링크들 참고)https://stackoverflow.com/questions/21018256/can-i-auto
2번째 쿼리처럼 N을 붙이면 따옴표 안의 값을 문자 데이터가 아니라 유니코드로 SQL이 인식할 수 있다.알파벳만 사용하는 경우 굳이 필요하지 않지만, 한글처럼 영어가 아닌 문자를 사용하는 경우 SQL이 데이터를 유니코드 데이터로 인식할 수 있도록 N을 붙이는 것이 필요
\*MYSQL 기준1\. 테이블 이름 약자로 표시하기테이블이름이 긴 경우 매번 테이블 이름을 치기에 번거로울 수 있다.그런 경우 다음과 같이 뒤에 약자명을 추가 기입함으로서 다른 쿼리에서 테이블 이름을 약자로 표시할 수 있다.특히 조인을 사용하게 되어 열이름 입력시 테
기본적으로 엑셀과 거의 동일하다IF(조건, Y인경우 출력값, N일경우 출력값)
LEFT/RIGHT는 엑셀과 동일LEFT (추출 원하는 열, 추출원하는 길이)RIGHT (추출 원하는 열, 추출원하는 길이)SUBSTR도 유사하나 시작지점과 길이를 둘다선택할수 있다.SUBSTR(시작지점, 추출길이)ex. A열 값이 안녕하세요 인 경우SUBSTR (1,
UNION 등을 사용할 때 열 개수와 명칭이 동일해야 쿼리 실행이 가능한데,A테이블에는 있는 값이 B테이블에는 없어서 B테이블에는 일괄로 특정 값 (NULL,999999)을 입력해야할 때가 있다.그 경우 SELECT 값 AS 열이름 FROM B 로 입력하면 된다.예시는
날짜만 표기하기select date_format(날짜열, '%Y-%m-%d')=> YYYY-MM-DD 로 출력됨%Y 년도 - Year(4자리 표기)%y 년도 (뒤에 2자리 표기)%M 월 - 월 이름(January ~ December)%m 월 - 월 숫자(00 ~ 12)
floor는 내림을 의미
IN 사용하기음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하려고 하면,내림차순으로 정렬해서 끊을 수 없으므로 LIMIT를 활용하여 풀 수는 없다.이럴 땐 IN의 대상값에 서브쿼리를 이용하여 가상의 테이블을 만듬으로서, 즐겨
WHERE 절의 대상값으로 서브쿼리에서 1개 값만 추출하여 활용함.
엑셀로 시트/피벗 나누어서 수식 한번으로 안되는 데이터를 가공하듯,임시 테이블을 통해서 데이터 가공을 용이하게 함.
Null 값은 집계 함수에서 제외가 된다 -> 제외 안하고 카운트 할 수도 있나? IFNULL, 아니면 CASE WHEN으로 NULL이면 이걸로 인식해라고 추가로 먹여주기Null 때문에 평균 구할 때 AVG 랑 뽑아서 단순 나누기 한 거랑 결과 값이 다를 수 있음JOI
SESSION table 생성 쿼리에서 temp 빼면 sandbox용 테이블 만드는거랑 동일함Sandbox 테이블 은 데일리로 자동 업데이트 되나? 안됨. / 생성 개수에 제한은 없나? 제한 없음.Partition by : 뒤에 나오는 칼럼 기준으로 데이터를 구분Clu