본문 바로가기

SQL

[MySQL] Join (LEFT, RIGHT, INNER) / UNION LEFT OUTER JOIN (= LEFT JOIN) 왼쪽 테이블 기준으로 오른쪽 테이블을 합침 SELECT i.id, i.name, s.item_id, s.inventory_count FROM item AS i LEFT OUTER JOIN stock AS s #테이블에 alias 붙여줌 ON i.id = s.item_id #테이블 조인 조건 조인할 때는 SQL 문이 길어지기 때문에 테이블 이름에 alias를 붙여주는 게 좋다. RIGHT OUTER JOIN (= RIGHT JOIN) 오른쪽 테이블 기준으로 왼쪽 테이블을 합침 SELECT i.id, i.name, s.item_id, s.inventory_count FROM item AS i RIGHT OUTER JOIN stock AS s #테이블에 a.. 2022. 2. 1.
[MySQL] 뷰 (VIEW) 만들기 뷰 : 조인 등의 작업을 해서 만든 '결과 테이블' 이 가상으로 저장된 형태 일시적으로 생성한 결과 테이블을 저장해둔 것 뷰(VIEW)는 가상테이블이라고도 한다. #AS 뒤에 나오는 쿼리문의 결과 테이블을 VIEW 로 저장하라 CREATE VIEW three_tables_joined AS SELECT i.id, i.name, AVG(star) AS avg_star, COUNT(*) AS count_star FROM item AS i LEFT OUTER JOIN review AS r ON r.item_id = i.id LEFT OUTER JOIN member AS m ON r.mem_id = m.id WHERE m.gender = 'f' GROUP BY i.id, i.name HAVING COUNT(*) .. 2022. 2. 1.
[MySQL] 서브쿼리 사용법 서브쿼리 : SQL 문 안에 부품처럼 들어가는 SELECT 문 sub (하위의, 일부분의) Query (데이터베이스에 보내는 요청) 서브쿼리를 쓸 땐 괄호로 감싸줘야함 서브쿼리는 HAVING 절, SELECT 절, WHERE 절, FROM 절 등에서 사용할 수 있다. HAVING 절에 있는 서브쿼리 예시 쿼리문 > SELECT i.id, i.name, AVG(star) AS avg_star FROM item AS i LEFT OUTER JOIN review AS r ON r.item_id = i.id GROUP BY i.id, i.name HAVING avg_star 서브쿼리를 포함하는 전.. 2022. 2. 1.
[MySQL] GROUP BY , HAVING, WITH ROLLUP GROUP BY 칼럼들을 어떠한 조건의 그룹으로 묶어서 그룹별 집계를 보고 싶을 땐 GROUP BY를 사용 한다. GROUP BY 로 그루핑 해주고 집계함수를 사용하면 그루핑 된 각 그룹에 대해서 집계함수 들이 각각 실행된다. (GROUP BY 를 쓰지 않았을 때는 테이블 전체 row 가 하나의 그룹인 것) 예시 쿼리문 > SELECT gender, COUNT (*) AS COUNT, #COUNT (*) 는 조회 되는 row 의 개수를 구해주는 표현식 AVG (height), MIN(weight) FROM member GROUP BY gender ; 출력 결과 > gender COUNT AVG (height) MIN(weight) male 987 179 55.8 female 1523 165 41.3 예시.. 2022. 1. 26.
[MySQL] 컬럼 이름 바꿔서 보여주기 Alias (AS) 컬럼 이름 바꿔서 보여주는 것을 Alias (별명) 라고 한다. 컬럼명이 height 인데 보여줄 때 '키' 라는 단어로 보여주고 싶다면 AS 를 사용해서 명명 해주면 된다. AS 로 컬럼 Alias(별명) 붙여주기 SELECT email, height AS 키, weight AS 몸무게, weight / (height/100) * (height/100) AS BMI FROM member; (참고 : 칼럼끼리 계산은 + 더하기 - 빼기 * 곱하기 / 나누기 % 나머지 구하기 이렇게 가능) Alias 에 공백이 포함되면 작은 따옴표로 감싸줘야한다. SELECT email, height AS 키, weight AS 몸무게, weight / (height/100) * (height/100) AS 'BMI 지수.. 2022. 1. 26.
[MySQL] NULL 이 있는 로우 조회하기 NULL 은 값이 없음을 나타내는 단어다. 데이터 테이블에 값이 없는 로우가 있을 수 있다. 회원 가입할 때 선택 값으로 넣어둔 항목들은 유저가 회원 가입시 빈 값으로 두고 넘어 갈 수 있기 때문에 그 부분은 NULL 이 된다. 데이터 추출 시 NULL 인 부분들을 조회 하고 싶을 때 어떻게 조회 하는지 알아보자 IS NULL NULL 인 로우 조회 # member 테이블에서 address 칼럼이 NULL 로우들 조회 SELECT * FROM member WHERE address IS NULL; IS NOT NULL NULL 이 아닌 로우 조회 # member 테이블에서 address 칼럼이 NULL 이 아닌, 값이 있는 로우들만 조회 SELECT * FROM member WHERE address IS .. 2022. 1. 26.
[MySQL] DATE 관련 SQL 함수 모음 (CURDATE, DATEDIFF 등) DATE 데이터 타입을 갖는 컬럼의 값들을 다룰 때 자주 쓰는 함수들 모음 1. 연도, 월, 일 추출 연도 : YEAR ( ) 월 : MONTH ( ) 일 : DAYOFMONTH ( ) # member 테이블에 birthday 날짜의 연도가 1998인 데이터 출력 SELECT * FROM member WHERE YEAR(birthday) = '1998'; # member 테이블에 birthday 날짜의 월이 6,7,8인 데이터 출력 SELECT * FROM member WHERE MONTH(birthday) IN (6,7,8); # member 테이블에 birthday 날짜의 일이 15일~17일인 데이터 출력 SELECT * FROM member WHERE DAYOFMONTH(birthday) BETWE.. 2022. 1. 23.
[MySQL] 대소문자 구분해서 검색하기 _ BINARY 데이터베이스의 테이블에 적용된 기본 설정 중, 문자열이 동일한지 확인할 때, 대소문자를 구별하지 않겠다고 설정 되어있는 테이블들이 있다. 이런 경우 대소문자가 달라도 알파벳만 같으면 같다고 판단이 되어버린다. 이 설정에 상관없이 대소문자를 구분해서 검색하는 방법이 있을까? 바로 BINARY 를 사용하면 가능하다. LIKE BINARY '%g%' SELECT * FROM member WHERE sentence LIKE BINARY '%g%'; #member 테이블에 sentence 칼럼에 소문자 g가 포함된 데이터 출력 SELECT * FROM member WHERE sentence LIKE BINARY '%T%'; #member 테이블에 sentence 칼럼에 대문자 T가 포함된 데이터 출력 BINARY.. 2022. 1. 23.
[MySQL] % ' " _ 문자로 쓰고 싶을 땐 이스케이핑 원래 특정 의미('임의의 길이를 가진 문자열')를 나타내던 문자(%)를 그 특정 의미가 아니라, 일반적인 문자처럼 사용하고 싶을 땐 이스케이핑(escaping) 을 해야한다. 어떤 문자가 그것에 부여된 특정한 의미, 기능으로 해석되는 게 아니라 그냥 단순한 문자 하나로 해석되도록 하는 것을 이스케이핑이라고 한다. % 는 'LIKE에서 쓰이는 표현식'으로 , ‘임의의 길이를 가진 문자열’을 의미하는데 그냥 문자로 쓰고 싶다면 % 앞에 역슬래쉬(백슬래쉬, backslash) 기호를 붙여주면 된다. 백슬래쉬는 키보드상에 엔터키 위에 원화 표시(\) 되어있는 키다. SELECT * FROM member WHERE sentence LIKE '%\%%' #member 테이블에 sentence 칼럼에 문자 % 가 포.. 2022. 1. 23.
[MySQL] WHERE 절 _ 기본적인 조건 표현식 모음 (LIKE, BETWEEN, IN 등) 1. 부등호, 등호 ( =, >=, , = 27 ; SELECT * FROM member WHERE age 27 ; SELECT * FROM member WHERE age < 27 ; member 테이블에서 age 칼럼 값이 27과 같지 않다 SELECT * FROM member WHERE age != 27 ; SELECT * FROM member WHERE age 27 ; 2. 사이의 값 BETWEEN A AND B member 테이블에서 age 칼럼 값이 18 부터 34 .. 2022. 1. 23.
[구글 스프레드시트] SQL Query문을 구글스프레드 시트에서~ 구글 스프레드시트에서 를 통해 SQL 쿼리문과 같은 기능을 사용할 수 있다. query 함수는 아래와 같이 사용. = query(사용할 데이터 범위 설정, 쿼리문) 필자는 SQL문을 어디에 사용했느냐, 매주 상품별로 발주를 넣는데, 100개가 넘는 브랜드 중 팀원마다 맡은 브랜드가 있다. 각 팀원별로 맡은 브랜드만 확인하면 되니까 Query 함수를 써서 해당 브랜드만 각 담당자별 시트탭에 데이터를 뿌려줬다. ↓실제 시트 화면↓ 우선 상품별로 발주가 필요한지 여부를 체크해 주는 '상태부여' 탭을 만들고 (한달 동안 판매된 수량과 재고 수량 비교하여 발주할 수량 정해줌) 각 담당자들 탭에 query 문으로 데이터 뿌려주기 =QUERY('상태 부여'!A2:I,"select * where B='에뛰드 하우스' .. 2021. 5. 14.
[sql + 엑셀함수] 데이터 정제하기 안녕하세요! 종종 팀장님께서 급 '사내 솔루션 팀별 사용량을 알려줘!' '한달동안 이 페이지에 사람들이 얼마나 접속했는지 알려줘!' 등등 이러한 요청들을 하시는데, 오늘도 요청받은김에 포스팅 하나 하렵니다요~ :D 오늘의 요청 ▶사내 솔루션 ㅇㅇㅇ 사용량을 보고 싶어. 최근 팀별로 키워드 등록 얼마나 했는지 알려줘~ 1. 팀별로 등록한 키워드가 쌓이는 DB에 접속해서 where 문으로 날짜 조건을 걸어서 raw data 를 뽑고 구글 스프레드시트에 복붙! 2. 팀별 코드가 의미하는 팀 이름을 알 수 있는 DB에 접속해서 raw data 를 가져와 구글 스프레드 시트에 복붙한다. *아래 사진은 구글스프레드 시트에 붙여넣은 화면 3. 함수를 슉슉 사용하여 보기 좋게 정리한다. 이번에 사용한 함수는 uniqu.. 2019. 8. 23.
[MySQL] 쿼리문 분석하기 예제 이 쿼리문으로 대체 어떤 데이터를 얻을 수 있을지! 스스로 분석해 보실 수 있도록 예제를 준비했습니다 아래 쿼리문을 보시고 어떤 데이터를 얻을 수 있을지 한번 생각해보세요! 답은 아래에 있습니다 ----------------------------------------------------------------------------------------------------------------------------------- SELECT KEYWORD ,SUM(QC) AS QC // QC : 쿼리(키워드) 검색량을 나타내는 칼럼 ,SUM(CLK_CNT) AS CC // CLK_CNT : 쿼리 검색 결과들 중 무엇이라도 클릭한 횟수를 나타내는 칼럼 ,(SUM(CLK_CNT)/SUM(QC)) AS CTR .. 2019. 8. 22.
[MSSQL] 기초 쿼리문 SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다. (위키백과) SQL 언어를 사용해서 데이터를 관리하고 검색하죠. SQL 문법을 사용하는 RDBMS의 종류도 다양하고 조금씩 사용법이 다릅니다. 그 중에서 오늘은 MSSQL의 기본 표현들을 소개해 보겠습니다. ▶SELECT, FROM, TOP SELECT 칼럼명1, 칼럼명2, 칼럼명3 FROM 테이블명 ex) SELECT a,b,c FROM A => DB에 있는 많은 테이블들 중 A 테이블에서 칼럼 a,b,c 보여줘 ex) SELECT * FROM A => DB에 있는 많은 테이블들 중 A 테이블에있는 모든 칼럼 보여줘 ▶where, group by, order by where 칼럼명 .. 2019. 8. 22.
[MySQL] DB에서 원하는 조건의 데이터 추출하기 안녕하세요 요즘 기업들에서 꼭 개발팀이 아니더라도 DB에 접속해서 필요한 데이터들 추출하여 사용하는 경우가 많더라구요. 해당 테이블 권한만 받아서요. 성과 데이터가 필요하기도 하고, 앞으로 추진할 프로젝트를 위해 데이터 분석도 해봐야 하고 이유는 다양해요. 그래서 실생활에(?) 자주 쓰이는 간단한 쿼리문 공유드려요 :) ★오늘 포스팅할 내용은 요것입니다★ -------------------------------------------------------------------------- DB에는 너무나 많은 데이터가 즐비해있다! 그 중에 내가 원하는 조건의 데이터만 깔끔하게 추출하고싶다! 그것도 간단하고 짧은 쿼리문으로! ----------------------------------------------.. 2019. 8. 22.
728x90
반응형
LIST