목록mysql (43)
개발은 처음이라 개발새발
오늘은 실제 업무를 하면서 SQL를 활용할 때 가장 많이 사용하는 구문을 하나 포스팅 해보겠습니다. 저는 실제 스포츠 데이터를 기반으로 분석을 통해 가공 스탯을 만드는 일을 주로 하기 때문에 SQL에서도 연산과 조건문을 자주 사용하는데요. 그중에서 조건문으로 많이 활용하는 CASE...WHEN...THEN입니다. 형식은 아래와 같습니다. CASE WHEN 조건1 THEN 결과값1 WHEN 조건2 THEN 결과값2 WHEN 조건3 THEN 결과값3 ELSE 결과값 END 형식을 보면 알다시피 WHEN과 THEN은 항상 같이 사용됩니다. 그리고 WHEN과 THEN은 여러개를 사용할 수 있습니다. ELSE의 경우는 WHEN ...THEN...의 조건문에 모두 부합되지 않을 때 표출될 값입니다. 파이썬의 조건문..
우선 group by를 소개했을 때 예제로 적어보았던 사용자별 총 구매액을 다시 불러 와보겠습니다. select userid as '사용자 아이디', sum(price*amount) as '총 구매액' from buytbl group by userid; +---------------+-----------+ | 사용자 아이디 | 총 구매액 | +---------------+-----------+ | BBK | 1920 | | EJW | 95 | | JYP | 200 | | KBS | 1210 | | SSK | 75 | +---------------+-----------+ 지난 번에는 이렇게 총 구매액만을 구해봤는데 여기에서 더 나아가 총 구매액이 1000 이상인 사용자에게만 사은품을 증정하고 싶다면 어떻게..

SQL에서 group by와 함께 사용하는 집계함수에 대해 간단하게 알아보겠습니다. 위 표는 group by와 함께 사용되는 집계 함수입니다. 그렇다면 위의 것들 중에 예제로 간단하게 어떻게 노출되는지 확인해보겠습니다. 우선 평균을 구해보겠습니다. 지난 편에 이어 buytbl에서 전체 구매자가 구매한 물품의 개수를 구해보겠습니다. select avg(amount) as '평균 구매 개수' from buytbl; +----------------+ | 평균 구매 개수 | +----------------+ | 2.9167 | +----------------+ 이렇게 전체 평균 구매 개수를 구하는 걸 넘어 사용자별로 평균 구매 개수를 한번 내보겠습니다. select userid , avg(amount) as '..
SQL에는 파이썬 처럼 group by가 존재합니다. group by는 말그대로 그룹으로 묶어주는 역할을 합니다. 이를 통해서 그룹별로 수량이 어떻게 되는지 그리고 품목 남은 수량의 가격이나 구매자가 총 얼마를 결재 했는지에 대해 알 수 있습니다. 우선 buytbl에서 사용자별 구매한 물품 개수에 대해 알아보겠습니다. select userid, sum(amount) from buytbl group by userid; +--------+-------------+ | userid | sum(amount) | +--------+-------------+ | BBK | 19 | | EJW | 4 | | JYP | 1 | | KBS | 6 | | SSK | 5 | +--------+-------------+ 네 ..
서브쿼리란 쿼리문 안에 또 쿼리문이 들어 있는 것을 말합니다. 지금까지는 숫자의 범위 안에 있는 데이터이거나 그것보다 큰 데이터를 찾을 때 where이나 between문 안에 직접적으로 숫자를 입력했지만 만약 데이터 안에 어떤 인물보다 높은 조건을 도출해야 한다면 어떨까요? 이럴 때는 서브 쿼리를 사용하면 됩니다. 지난 편과 마찬가지로 sqldb의 usertbl을 활용해보겠습니다. 이번에는 직접적으로 height가 몇보다 큰지가 아닌 김경호보다 키가 큰 데이터를 도출해보겠습니다. ### 김경호 키 확인 select name,height from usertbl where name = '김경호'; ### 서브쿼리를 활용해 김경호보다 키가 큰 데이터 찾기 select name, height from usert..
이번에 간단하게 소개해볼 연산자는 LIKE 입니다. 가끔 where 조건을 적을 때 컬럼명은 기억이 나는데 조건으로 적을 데이터가 기억이 안날 때가 있습니다. 저같은 경우는 이름을 등록할 데이터베이스의 경우 성은 기억이 나는데 이름이 기억이 안 날때가 많더라고요. 이럴 때 LIKE 연산자를 사용하면 여러분의 기억을 찾는데 도움이 될 겁니다. ### LIKE select name,height from usertbl where name like '김%'; +--------+--------+ | name | height | +--------+--------+ | 김범수 | 173 | | 김경호 | 177 | +--------+--------+ 위 사용한 조건은 맨앞에 이름이 김이고 %는 뒤에 몇글자든 허용한다..
이번 시간에는 WHERE 절에 대해 알아보겠습니다. WHERE절은 조회하는 결과에 특정한 조건을 줘서 원하는 데이터만 보고 싶을 때 사용하는 구문입니다. 우선 지난 시간에 소개한 SQL의 기본적인 쿼리 구문을 다시 보겠습니다. ####SELECT 구문 기본 구조 SELECT 열 이름 FROM 테이블 이름 WHERE 조건 지난 시간에는 from까지 해봤는데 이번 시간에는 where 조건식에 대해 해보겠습니다. 저는 sqldb의 usertbl에 있는 데이터를 가지고 조건을 입혀 추출해볼건데요. 이름이 '김경호'인 사람의 데이터를 찾아보겠습니다. use sqldb; select * from usertbl where name = '김경호'; +--------+--------+-----------+------+-..

오늘은 본격적으로 My SQL 쿼리문에 대해 정리하기 전 기초적인 것들에 대해 알아보고자 합니다. My SQL에서 쿼리를 통해 데이터를 조회하거나 연산할 때 항상 SELECT로 시작하는데요. SELECT 문법과 그밖에 알아두면 좀 더 데이터를 조회하는 데 편해질 구문들에 대해 알아보겠습니다. 데이터를 조회하기 위해서는 기본적으로 내가 조회하고자 하는 데이터가 어떤 데이터베이스에 어떤 테이블에 있는지를 알아야 하는데요. 이럴 때 쓰는 구문이 "show~" 입니다. show databases; +--------------------+ | Database | +--------------------+ | employees | | information_schema | | mysql | | performance_s..

인덱스 맛보기에 이어 트리거 맛보기를 해보겠습니다. 트리거는 테이블에 부착되엇 테이블에 insert, update, delete 작업이 발생되면 실행되는 코드입니다. 쉽게 설명하면 '자동'으로 위와 같은 쿼리가 실행된다는 겁니다. 자세한 내용은 다음 시간에 다뤄보도록 하고 이번 시간은 맛보기로 해보겠습니다. 우선 shopdb에 있는 memeber_tbl에서 삭제된 데이터를 트리거 통해 삭제된 데이터를 담는 테이블에 넣어보려고 합니다. 그러면 우선 member_tbl에 삭제할 데이터를 입력해보도록하겠습니다. 그리고 삭제한 데이터를 담을 테이블까지 생성해보겠습니다. insert into shopdb.member_tbl values('figure','연아','경기도 군포시'); #데이터 변경 update sh..

데이터베이스는 데이터를 효율적이고 안전하게 저장하는 역할을 해야 할 뿐만 아니라 조회 역시 빠르게 하는 게 좋습니다. 이를 위해서 필요한 것은 여러 가지가 있는데요. 그중에서 인덱스를 지정해 조회를 하는 시간을 줄이는 방법이 있습니다. 이번 시간에는 이것이 MySQL이다 3장에서 간략히 소개된 인덱스 활용 맛보기에 대해 소개해보겠습니다. 우선 새로운 테이블을 만들고 데이터를 삽입해야 합니다. 데이터는 이것이 MySQL이다 초반 다운받을 수 있는 employees 데이터베이스에서 가져오려고 합니다. #새로운 테이블 만들기 create table shopdb.indexTBL ( first_name varchar(14), last_name varchar(16), hire_date date); #새로운 테이블에..