MySQL 40

38. MySQL rank 만들기 : count(), rank()

쿼리를 만들다 보면 순위를 매기고 싶을 때가 있습니다. 그럴 때 유용하게 쓸 수 있는 방법에 대해서 알아봅시다. math라는 테이블이 있다고 가정하겠습니다. 각 칼럼은 아래의 값을 의미합니다. id : 테이블 아이디 math_score : 학생들의 수학 점수 name : 학생들의 이름 1. COUNT를 이용해서 만드는 방법 SELECT id, math_score, name, ( SELECT COUNT(*) + 1 FROM math_socre WHERE math_score > a.math_score ) AS rank FROM math AS a ORDER BY rank ASC 2. MySQL의 사용자 정의 변수를 이용하여 만드는 방법 MySQL에도 변수와 같은 개념으로 [@변수명]을 이용하여 값을 저장할 수..

MySQL 2021.11.10

37. MySQL MariaDB 백업 & 복원하기

어떠한 원인에 의해 DB서버는 언제든지 문제가 생길 수 있으므로 백업은 매우 중요합니다. 백업은 mysqldump를 이용했습니다. 이 방법은 innoDB 엔진에 대한 백업 방식이며, 논리 백업 방식을 사용하면서도 간단하게 실행할 수 있어 무난히 사용할 수 있습니다. 다만, 데이터 수가 많아질수록 속도가 매우 느려지는 단점을 지녔습니다. 테스트용 테이블 & 데이터 생성 테스트를 위해 테이블을 하나 생성합니다. CREATE TABLE fruit( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, price INT NOT NULL ); fruit라는 테이블을 생성했습니다. 테스트를 위한 데이터를 삽입합니다. INSERT INTO f..

MySQL 2021.10.29

32. MySQL Subquery (서브쿼리) 사용법 / select문 안에 select문 넣기

SQL 에서 쿼리안에 쿼리를 이용하는 것을 Subquery 라고 부른다. 서브쿼리는 크게 2가지 방법으로 사용된다. 1. select 절 예시 : 다른 테이블에서 조회한 데이터를 컬럼에 넣는다 SELECT fruit.name, (SELECT price as price FROM product WHERE name = apple) AS apple_price FROM fruit WHERE name = 'apple'; fruit 테이블에서 name = apple 데이터, (price 테이블에서 name =apple인 가격)을 조회한다. 2. where 절 예시 : SELECT id, name, amount FROM fruit WHERE name IN (SELCET name FROM sale_product); sa..

MySQL 2021.07.27

31. MySQL tinyint(1) vs tinyint(4) 차이

사내에서 MySQL을 사용하고 있는 때때로 on/off 용도의 칼럼을 추가할 일이 생겼다. 이런 칼럼을 선언할 때 나는 일반적으로 다음과 같이 사용하였다. `anwser_flag` tinyint(1) unsigned not null default 0 comment '답변 플래그', 위와 같이 tinyint(1)로 선언해서 사용했는데 문득 tinyint(4)와 무슨 차이가 있을지 궁금해서 내용을 찾아보게 되었다. tinyint(1) vs tinyint(4) 정수 타입의 데이터를 선언할 때 뒤의 길이 지정은 ZEROFILL 옵션이 없으면 아무런 의미가 없다고 한다. tinyint(1)로 선언하나 tiniyint(4)로 선언하나 해당 값에 들어갈 수 있는 데이터는 -127 ~ 127까지의 숫자로 데이터에는 영..

MySQL 2021.07.25