sql 24

[책 서평] SQL로 시작하는 데이터 분석

데이터 분석 과정에서 SQL을 능숙하게 다룰 줄 아는 것은 중요한 역량이 되었습니다. 다만 출판되어 있는 SQL 관련 서적들은 대부분 기초적인 문법에 대해서만 다루고 있고, 분석을 위한 내용은 사실 많지 않은 것 같습니다. 그러나 최근에 데이터 분석에 관심도 있으면서 SQL 문법도 어느정도 기초적인 문법을 알고 있는 분들이 관심을 가질 만한 책이 출판되었는데, 한빛미디어에서 출판한 이라는 책입니다. 먼저 이 책에 대한 총평으로 시작하자면, SQL을 활용하는 능력을 한 단계 업그레이드 시키고, 실무에서 더 효율적인 분석 작업을 수행하는데 도움이 될 것이라고 생각합니다. 만약 SQL에 대한 기초적인 문법을 알고 있는 분들 중에서 SQL을 더 잘 활용해 보고 싶지만 어떻게 할 수 있을지 모르겠다면, 이 책이 ..

리뷰 2022.09.14

[mysql] 프로그래머스 보호소에서 중성화한 동물

오늘은 프로그래머스 sql 문제 중에 '보호소에서 중성화한 동물' 문제에 대해서 풀어보도록 하겠습니다. 문제 난이도는 Level 4 문제이고 JOIN을 사용하면 풀 수 있다고 합니다. 문제 풀이에 사용한 언어는 mysql입니다. 이제 문제를 확인해 보겠습니다. 문제 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요. (중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시되어있습니다.) 풀이과정 일단 두 가지 큰 조건이 있습니다. 1. 보호소에 들어올 ..

[SQL] 연습 2022.07.17

[mysql] solvesql 두 테이블 결합하기

오늘은 solvesql에 있는 '두 테이블 결합하기' 문제를 풀어보겠습니다. 난이도는 쉬움이며, 언어는 mysql로 하겠습니다. 문제 events 테이블(올림픽 경기 종목과 경기 이름)과 records 테이블(역대 올림픽 참가 선수들의 신체 정보와 획득한 메달 정보)을 활용해 올림픽 골프 종목에 참가한 선수의 ID를 모두 조회하는 쿼리를 작성해주세요. 풀이과정 일단 이 문제의 포인트만 살펴보자면, 올림픽 골프 종목에 참가한 선수의 ID를 모두 조회하라는 것입니다. 우리는 여기서 올림픽 종목에 대한 것은 events 테이블과 records 테이블에 있을 것이고, 참가한 선수의 ID는 records 테이블에 있을 것이라는 것부터 알아야합니다. 그렇다면 join 구문은 events 와 records 의 각 경..

[SQL] 연습 2022.07.16

[SQL] CASE문

SQL에서 CASE문이란? SQL에서의 CASE문은 엑셀에서 IF() 함수를 떠올리면 이해하기 쉽습니다. 엑셀에서 IF() 함수는 아래와 같이 조건문에 대한 판단에 따라 참인 경우와 아닌 경우로 나뉘어서 작동하게 되는데요. *엑셀에 대한 참고: https://simon-yoon.tistory.com/29 SQL에서의 CASE문도 기본적으로 다음과 같이 작성할 수 있습니다. CASE로 CASE문을 시작하고 영어 문장 쓰듯이 자연스럽게 WHEN 쓰고 THEN 뒤에 출력할 내용을 작성하면 됩니다. SQL 쿼리 작성 예시 이제 MySQL에서 world 데이터베이스를 사용하여 쿼리를 작성해 보겠습니다. 아래는 world 데이터베이스의 country 테이블 일부입니다. 저는 여기서 빨간 박스로 표시한 populat..

[SQL] 연습 2022.07.02

[SQL] View의 특징과 생성 및 삭제

View(뷰)란? View(뷰)란, 테이블로부터 유도된 가상의 테이블을 의미합니다. 여기서 포인트는 '가상의 테이블'이라는 점입니다. '가상의 테이블'이므로 실제 데이터를 저장하고 있지는 않습니다. 그렇다면 View는 왜 사용하는 것일까요? View의 역할은 가상 테이블로 특정한 쿼리를 실행한 결과만 보고자 할 때 사용합니다. 다시 말하면 테이블을 참조해서 원하는 칼럼만을 조회하는데 View를 사용하면 쿼리를 더 단순하게 만들 수 있다는 장점이 있기 때문입니다. 이번에는 View의 특징을 살펴보겠습니다. 1. 참조한 테이블이 변경될 경우, View도 함께 변경된다. 2. 한번 생성된 View는 수정이 불가능하며, 따라서 한번 생성된 View는 변경을 원할 경우 삭제 후 재생성해야 한다. 3. 특정 컬럼만..

[SQL] 연습 2022.06.26

[DB] mysql에서 한글 포함된 쿼리 insert 안될 때

mysql에서 새로운 스키마를 생성하고 새로운 테이블을 생성하여 데이터를 직접 입력할 때 쿼리문에 한글이 포함된 데이터를 입력하는 경우 오류가 발생한다면, 해당 스키마와 테이블의 캐릭터 셋을 확인해야 합니다. 예를 들어, 아래와 같은 쿼리를 입력하고자 했을 때 INSERT INTO `shop_db`.`member` (`member_id`, `member_name`, `memberc_addr`) VALUES ('tess', '나훈아', '경기 부천시 중동') ; 다음과 같이 에러가 발생하면서 Response에 아래와 같은 메세지가 나온다면 Character Set을 설정해주시면 됩니다. Error Code: 1366. Incorrect string value: '\xEB\x82\x98\xED\x9B\x88..

[SQL] 연습 2022.06.11

[SQL] SQL 기본(3편)

모든 쿼리는 mysql에서 작성 서브 쿼리 1. 서브 쿼리 기본 # 전체 나라수, 전체 도시수, 전체 언어수를 1개의 row로 출력 use world; select (select count(*) from country) as total_country, (select count(*) from city) as total_city, (select count(distinct language) from countrylanguage) as total_language from dual ; DUAL 테이블을 이용하여 SELECT절에서 다양한 연산 처리를 할 수 있다. # 국토 면적이 가장 넓은 나라를 출력 # 서브 쿼리를 이용해서 한 개의 sql문으로 출력할 수 있다 select code, name, surfacear..

[SQL] 연습 2022.02.01

[SQL] SQL 기본(2편)

모든 SQL 쿼리는 mysql 기반 INSERT문 1. 데이터베이스 생성, 테이블 생성, insert로 데이터 삽입 create database test; use test; create table number1( data tinyint ); desc number1; insert into number1 value (128); select * from number1 ; 2. 제약조건이 없는 테이블 생성 후 데이터 삽입 # 테이블 생성 create table user1( user_id int, name varchar(20), email varchar(30), age int, rdate date ); # user1 테이블 확인 desc user1; # user1 테이블에 데이터 삽입 insert into use..

[SQL] 연습 2022.01.30

[SQL] SQL 기본(1편)

SELECT문 1. country 테이블에서 전체 칼럼의 데이터 가져오기 select * from country ; 2. country table에서 code, name, population 가져오기 select code, name, population from country ; 3. select절에서 연산한 결과 출력 surfacearea를 2로 나눈 결과를 new_area 칼럼으로 처리 select code, surfacearea / 2 as new_area from country ; ORDER BY로 정렬하기 1. 오름차순: population을 오름차순(asc)으로 정렬 (asc는 디폴트라서 안써로 자동으로 오름차순으로 정렬됨) select code, name, population from cou..

[SQL] 연습 2022.01.29