Database
-
[프로그래머스] 입양 시각 구하기(2)Database/DB 문제풀이 2022. 3. 15. 20:10
[프로그래머스] 입양 시각 구하기(2) MySQL 문제 : 프로그래머스_입양 시각 구하기(2) 문제 설명 문제에서 동물 보호소에서 입양 보낸 동물의 정보가 담긴 테이블이 주어집니다. 테이블의 DATETIME 칼럼에는 동물을 입양 보낸 시간이 주어지는데, 이때 각 시간별로(0시 ~ 23시) 입양이 몇 건 발생했는지를 조회하는 SQL 문을 작성해야 합니다. Solution 사용자 변수 선언, Subquery @hour라는 사용자 변수를 선언하고 -1로 초기화해 줍니다.(sql의 사용자 변수는 @~로 시작합니다.) @hour을 1씩 증가시켜주면서 각 시간별 count를 조회하는 서브쿼리문으로 시간별 입양 수를 조회합니다. DATETIME에서 HOUR 정보만 추출해야 하므로, HOUR() 함수를 이용합니다. 이..
-
[프로그래머스] 없어진 기록 찾기Database/DB 문제풀이 2022. 3. 15. 20:06
[프로그래머스] 없어진 기록 찾기 MySQL 문제 : 프로그래머스_없어진 기록 찾기 문제 설명 보호소에 들어온 동물의 정보와 보호소에서 입양 보낸 동물의 정보를 담은 테이블이 있습니다. 이때 데이터가 유실되어 보호소에서 입양 보낸 테이블에는 존재하지만 보호소에 들어온 테이블에는 존재하지 않는 동물이 생기게 되었습니다. 이 동물들의 ID와 이름을 조회하는 SQL을 작성하는 문제입니다. Solution RIGHT JOIN, NOT IN 두 가지 풀이법이 있습니다. RIGHT JOIN을 이용해 보호소에서 입양 보낸 동물들을 구한 뒤, 두 테이블 모두에 속한 동물들을 제외해 주는 방법 NOT IN을 이용하여 입양 보낸 테이블에서 보호소에 들어온 테이블의 동물을 제외해 주는 방법 으로 두 가지입니다. 풀이 1 S..
-
MySQL - JoinDatabase/DB 이론 2022. 3. 13. 02:08
MySQL - Join MySQL에서 사용하는 Join(Inner Join, Equi Join, Outer Join)을 알아보자. Tables 아래와 같은 두 개의 테이블로 Join을 알아보자. Inner Join 테이블이 두 개 있을 때, 두 집합의 교집합 영역을 출력하는 것이 Inner Join이다. 다음과 같이 입력해보자 select * from students s join teachers t on s.tid = t.tid; students와 teachers 테이블에서 tid가 동일한(교집합 영역) 튜플을 출력한다. Equi Join Equi Join은 두 테이블 사이에서 attribute의 값이 같은 튜플을 출력하는 Join이고, 같지 않은 걸 출력하는 건 Non-Equi Join이다. selec..
-
MySQL - 날짜 데이터 사용Database/DB 이론 2022. 3. 13. 02:05
MySQL - 날짜 데이터 사용 mysql에서 날짜 데이터를 사용해보자. DATE_FORMAT MySQL에서는 DATE_FORMAT 함수를 이용하여 날짜를 원하는 포맷으로 표현할 수 있다. 함수의 인자를 다음과 같이 넣어서 사용할 수 있다. DATE_FORMAT(NOW(), '지정하고 싶은 형식'); 예를 들어 `SELECT DATE_FORMAT(NOW(), '%y %m %d %a') as nowFormatting;` 다음과 같이 SELECT를 입력해보자. 위와 같은 결과가 출력된다. 지원되는 포맷 형식 DATE_FORMATE에서 두 번째 인자로 들어가는 포맷은 다음과 같다. 오늘 날짜 2020/10/21(수) 오후 10:20 30초를 기준으로 하자. 연도 : %Y(2020), %y(20) 월 : %M(..
-
MySQL User 생성, 권한 설정Database/DB 이론 2022. 3. 12. 19:53
MySQL - User 생성, 권한 설정 mysql에서 root 외의 User를 만들고 권한을 설정해보자. User, 데이터베이스 생성 CREATE USER 'vividswan'@'%' IDENTIFIED BY '12345'; GRANT ALL PRIVILEGES ON *.* TO 'vividswan'@'%'; CREATE DATABASE TEST; USE TEST; CREATE USER 'vividswan'@'%' IDENTIFIED BY '12345'; CREATE USER : user를 만드는 명령어이다. 'vividswan'@'%' : vividswan이라는 아이디를 만든다. (이때, @ 뒤에 접속할 수 있는 IP의 주소를 적어줘야한다. @localhost라고 한다면 로컬에서만 접속할 수 있고, ..
-
Mac OS에서 MySQL 한글 설정(UTF-8)Database/DB 이론 2022. 3. 11. 12:19
MySQL - UTF8 세팅 terminal을 이용해서 MySQL의 인코딩 방식을 UTF-8로 설정하자. 한글 설정(UTF-8) terminal을 실행하여 설정할 수 있다. 파일 복사 $ sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf 파일 편집 실행 $ sudo vi /etc/my.cnf i로 insert 모드로 들어가 아래의 내용을 붙여넣어준다. [mysqld] character-set-server=utf8 collation-server=utf8_general_ci init_connect=SET collation_connection=utf8_general_ci init_connect=SET NAMES utf8 [client] def..
-
Database의 여러 종류의 키Database/DB 이론 2022. 3. 11. 12:02
여러 종류의 키 데이터베이스의 슈퍼 키, 후보 키, 기본 키, 대체 키, 외래 키를 알아보자. 두 가지 릴레이션 아래와 같은 두 가지 릴레이션이 있다고 하자. 군인 테이블 병과 테이블 군인들의 정보가 담긴 군인 테이블과 병과들의 정보가 담긴 병과 테이블이다. 슈퍼 키 릴레이션 내의 특정 투플을 고유하게 식별해야 하는 애트리뷰트나 애트리뷰트의 집합이다. ex) (군번), (이메일), (군번, 이름), (군번, 이메일), (이메일, 병과 ID), (군번, 이름, 이메일), (이름, 이메일) ... 등 식별만 가능하다면 여러 가지가 슈퍼 키가 될 수 있다. 후보 키 투플을 고유하게 식별할 수 있는 최소한의 애트리뷰트이다. 위의 군인 테이블 예제에서는 군번과 이메일이며, (군번), (이메일)로 표시한다. 기본 ..
-
[프로그래머스] 보호소에서 중성화한 동물 (MySQL)Database/DB 문제풀이 2022. 3. 10. 02:47
[프로그래머스] 보호소에서 중성화한 동물 MySQL 문제 : 프로그래머스_보호소에서 중성화한 동물 문제 설명 LEFT JOIN 입양 전의 테이블인 ANIMAL_INS와 입양 후의 테이블인 ANIMAL_OUTS가 모두 필요하므로, LEFT JOIN이 필요한 문제입니다. 문제에서 요구하는 것은 입양 전에는 중성화가 되어있지 않지만, 입양 후에 중성화가 된 동물을 출력하는 것입니다. 여기서 중성화가 되어 있지 않은 동물은 Intact~로 표현됩니다. 중성화가 되어있는 동물은 Spayed~ 나 Neutered~로 표현됩니다. Solution 우선 select에서 animal_outs의 ID, Type, Name을 요청합니다. 구하는 아이디, 타입, 이름은 animal_outs 테이블이므로 from 뒤에 바로 a..