[Database/MySQL] MySQL SELECT 구문 활용하기 🙌🏻

Jung Wish·2021년 1월 5일
0

데이터베이스

목록 보기
2/6
post-thumbnail

MySQL SELECT 구문 활용하기 🙌🏻

💡 TIPS
MySQL은 관계형 데이터베이스 시스템(RDBMS)중 하나로, 오픈소스를 기반으로 합니다. 서버 사이드 기반으로 만들어져 GUI 기능을 내장하지 않고 있습니다. Oracle에서 만든 Workbrench라는 GUI 프로그램을 설치한 후 MySQL 서버를 연동해서 사용할 수 있습니다.

SELECT 구문 🐰

기본개념

  • SELECT문은 기본적으로 데이터를 검색하는 기능으로 CRUD중에서 READ에 해당하는 기능을 수행합니다.
  • 기본적인 구문은 다음과 같습니다.
-- *는 모든 데이터를 검색하겠다는 의미입니다.
SELECT * FROM table_name;

SELECT 활용 🐰🐰

WHERE

WHERE : SQL의 조건문으로 데이터의 검색 조건을 설정할 수 있습니다.

-- where 이후에는 조건을 의미합니다. 
-- id가 1인 모든 데이터를 출력한다는 의미입니다.
SELECT * FROM table_name WHERE id = 1;

비교연산자

비교연산자(<,<=,>,>=,=,!=) : WHERE문 내부에서 조건식을 결정할 때 자주 사용하는 비교연산자입니다.

-- id가 10초과인 데이터를 모두 출력합니다.
SELECT * FROM table_name WHERE id > 10;

💡 TIPS > 초과, < 미만, >= 이상, <= 이하, = 같음, != 같지않음

복합 조건 연산자

복합 조건 연산자(&&,||,!) : 여러가지의 조건을 함께 사용할 때, 검색조건의 우선순위 또는 복합적인 검색조건 생성 등의 기능을 합니다.

-- id가 10초과이면서 15가 아닌 데이터를 모두 출력합니다.
SELECT * FROM table_name WHERE id > 10 AND id != 15;

💡 TIPS
AND, && : 모든 조건을 만족
OR, || : 조건 중 하나 이상을 만족
NOT, ! : 해당 조건이 아님
NOT > AND > OR 순으로 실행됩니다. ()를 통해 먼저 실행하고자 하는 조건문을 지정할 수 있습니다.

BETWEEN

BETWEEN A AND B : 특정 범위(A,B) 안에 포함되는 값을 나타냅니다.

-- id가 10~20 사이에 있는 데이터를 모두 출력합니다.
SELECT * FROM table_name WHERE id BETWEEN 10 AND 20;

💡 TIPS BETWEEN A AND B는 A와 B를 포함한 사이 값을 지칭합니다. 또한 A, B 자리에는 숫자 이외에도 문자열(➡️ A, B에 해당하는 튜플 사이 모든 튜플을 검색), datetime 등이 올 수 있습니다.

IN, NOT IN

IN, NOT IN : 특정 데이터 모음에 포함된 값을 나타냅니다.

-- friend 값이 (ryan, apeach, muzi, neo)에 포함되는 데이터를 모두 출력합니다.
SELECT * FROM table_name WHERE friend IN('ryan', 'apeach', 'muzi', 'neo');

💡 TIPS NOT IN은 IN의 반대로, 튜플에 포함되지 않는 값을 나타냅니다. 또한, IN(SELECT statement)의 형태로 서브쿼리를 넣어 사용할 수도 있습니다.

LIKE

LIKE : 특정 문자가 포함된 문자열을 찾고 싶을 때 사용하는 명령입니다. 와일드카드 표시를 통해 특정 문자열이 포함된 자료를 검색할 수 있습니다.

-- title 속성이 harry로 시작하는 모든 데이터를 검색합니다.
SELECT * FROM table_name WHERE title LIKE 'harry%';
-- title 속성이 a를 포함한 최소 3글자 이상의 문자열이고
-- a의 앞뒤로 문자열이 있을 수 있습니다.
SELECT * FROM table_name WHERE title LIKE '%a__%';

💡 TIPS 와일드 카드라고 불리는 %는 모든 여러개의 문자열 또는 하나의 문자에 대응됩니다. 또한, _는 글자 1개의 문자에 대응하며 1개의 자리를 차지하는 문자가 존재한다로 이해하면 됩니다.

이미지 출처 : w3school
이 밖에도 위와 같이 다양한 와일드카드가 존재합니다.

ORDER BY

ORDER BY : 데이터를 검색할 때 정렬하여 결과를 출력하는 명령어입니다.

-- 특정 테이블 내에서 age필드에 대해 내림차순으로 정렬해 모든 데이터를 출력합니다.
SELECT * FROM table_name
WHERE [where caluses]
ORDER BY age DESC;
-- Customer 테이블에서 Country 필드를 기준으로 오름차순 정렬을 하고,
-- 정렬된 상태에서 CustomerName 필드를 기준으로 내림차순 정렬을 하여 결과를 출력합니다.
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

💡 TIPS DESC 는 내림차순 옵션을 준다는 의미이며, 오름차순은 ASC 으로 표기합니다. Default option은 오름차순입니다. 또한, 정렬 기준을 여러개의 필드로 줄때에는 앞에 오는 순서대로 정렬 우선순위를 가집니다.

LIMIT

LIMIT : 테이블에서 출력하고자 하는 데이터의 개수를 제한하는 명령어입니다.

-- Customers 테이블에서 Country가 Germany인 데이터를 3개만 가져옵니다.
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
-- 2번째 데이터부터 5개를 가져오기
SELECT * FROM book LIMIT 1, 5;

💡 TIPS 관리할 데이터가 매우 많은 경우, 데이터의 일부만 보고 싶을 때 사용하면 유용합니다. 처음을 기준으로 LIMIT 만큼 데이터를 출력합니다. 만약 숫자를 연속으로 입력하면 첫 번째 숫자가 가리키는 인덱스부터 두 번째 숫자만큼의 길이의 데이터를 출력한다는 의미입니다.

Reference

profile
Frontend Developer, 올라운더가 되고싶은 잡부 개발자, ISTP, 겉촉속바 인간, 블로그 주제 찾아다니는 사람

0개의 댓글