[MySQL입문] SELECT FROM WHERE (+ AS, LIKE, BETWEEN, IN, 논리연산자)
카테고리: DB
책 모두의 SQL 과 인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click
🚀 SQL 쿼리 (= SQL문)
- 쿼리를 작성한 후
실행
버튼을 누르면 된다. (F5
) - SQL문을 소문자로 써도 상관없다. 대소문자 상관 없음
- 예약어를 대문자로 쓰고 나머지를 소문자로 쓰는게 가독성이 좋다!
- SQL 문장 하나가 끝나면 세미콜론을 붙여준다.
- SQL문이 한 문장 밖에 없으면 세미콜론 생략해도 됨
- 전체 쿼리문의 일부분인 특정 SQL 문을 드래그 하고 실행하면 전체 쿼리문이 아닌, 드래그한 그 쿼리문만 실행된다!
🚀 SELECT : 조건에 맞는 행렬 조회하기
SELECT
는 데이터를 조회(READ)하는 역할을 한다. 조건에 맞는 데이터(행)들을 화면에 출력해준다!
- SELECT : 조회할 열 (쉼표로 나열 가능)
- FROM : 테이블 이름
SELECT
는 항상FROM
과 같이 기술한다.- 그리고
SELECT
와FROM
은 필수로 입력해야한다! (WHERE, ORDER BY 등등 이런 것들은 생략 가능)
🔥 전체 데이터 조회하기
SELECT *
FROM players;
*
는 ‘전부 다!’를 뜻한다. 즉, “players 테이블에서 모든 열을 다 가져와라” 라는 의미이다. 한국말로는 가져올 테이블 FROM
부분을 앞에 쓰는 것이 더 자연스럽지만 (테이블에서 뫄뫄를 가져와라) SQL문은 영어에서 왔다는 것을 기억하자!
🔥 원하는 열들만 조회하기
SELECT nameFirst, nameLast, birthYear
FROM players;
“players 테이블에서 nameFirst, nameLast, birthYear 모든 열을 다 가져와라”
🔥 별칭 사용하기 : AS
SELECT 열 이름 AS 별칭
생략 가능하다.
SELECT nameFirst AS 이름, nameLast, birthYear
FROM players;
원래 명명된 이름 외에 임의로 열 이름을 바꿔 출력하고자 할 때 AS
를 사용한다. nameFirst
열이 이름
으로 출력된 것을 확인할 수 있다. 원래의 이름이 영원히 이름
으로 바뀐 것이 아니라 임시로 이름
으로 출력만 된 것 뿐이다.
🚀 WHERE : 원하는 조건의 데이터만 조회하기
- 조건 식을 적고 해당 조건에 맞는 데이터만 조회할 수 있다.
- 순서로는
FROM
다음에 와야 한다. - 생략 가능하다.
SELECT nameFirst, nameLast, birthYear
FROM players
WHERE birthYear = 1866; --원하는 조건
birthYear
열 값이 1866 인 행들만 조회한 것을 확인할 수 있다.
🔥 논리 연산자
- C++과 다르게 equal 연산자는
==
가 아니라=
이다. - 우선순위 👉 괄호 > AND > OR
SELECT nameFirst, nameLast, birthYear
FROM players
WHERE birthYear != 1866;
birthYear
열 값이 1866 이 아닌 행들만 조회한 것을 확인할 수 있다.
SELECT nameFirst AS name, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear = 1974 AND birthCountry = 'USA';
birthYear
열 값이 1974 이고 & birthCountry
열 값이 USA 인 행들만 조회한 것을 확인할 수 있다.
- 문자열 리터럴은
' '
작은 따옴표로 쓴다.
SELECT nameFirst AS name, nameLast, birthYear, birthCountry, weight
FROM players
WHERE (birthYear = 1974 OR birthCountry = 'USA') AND weight > 185;
AND
가OR
보다 우선순위가 더 높다. (먼저 실행됨)- 우선순위 높이려면 괄호 쓰면 됨
🔥 BETWEEN A AND B
>=, <= 을 함께 사용한 것과 같다. a 이상 b 이하
SELECT nameFirst AS name, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear BETWEEN 1975 AND 1980;
birthYear
열 값이 1975 이상 1980 이하인 행들만 조회한 것을 확인할 수 있다.
🔥 IN
- 조회하고자 하는 값이 여러개일 때 사용한다. IN (a, b, c) 라면 a, b, c 값 중 하나라도 값이 만족하면 조건에 해당하는 결과를 출력한다.
OR
을 여러개 사용해야할 것을IN
하나로 편하게 표현할 수 있다.
SELECT nameFirst AS name, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear IN (1975, 1950, 1980);
birthYear
열 값이 1975, 1950, 1980 중 하나라도 해당하는 행들을 조회한 것을 확인할 수 있다.
🔥 IS NULL, IS NOT NULL
- A IS NULL : A 열 값이 NULL 이면 참
- A IS NOT NULL : A 열 값이 NULL 이 아니면 참
SELECT *
FROM players
WHERE deathYear != NULL;
NULL
값인지를 알고싶다면 != NULL
하면 안된다. IS NULL
을 사용하여야 한다!
SELECT *
FROM players
WHERE deathYear IS NULL;
deathYear
열 값이 NULL
인 행들만 조회한 것을 확인할 수 있다.
SELECT *
FROM players
WHERE deathYear IS NOT NULL;
deathYear
열 값이 NULL
이 아닌 행들만 조회한 것을 확인할 수 있다.
🔥 LIKE
패턴으로 조회할 수 있다.
_
: 한 자리- A LIKE ‘a___’ : A 열의 값이 “a 로 시작하며 뒤에 3 자리 짜리 문자열”인 행을 조회
%
: 자리에 상관 없는 모든 값- A LIKE ‘%a’ : A 열의 값이 “a 로 끝나는 모든 문자열”인 행을 조회
여담으로 회원이 탈퇴를 하면 회원 DB에서 그 회원 정보를 삭제할 것 같지만, 실제로는 그렇게 하지 않고 임시로 DELETED-닉네임
이런식으로 이름을 수정한다. 탈퇴한 회원이라도 해당 정보를 복구하고 조회해야할 일이 생길 수도 있기 때문에 삭제하지는 않는다. 이럴때 탈퇴한 회원의 정보만 조회하려면 DELETED-%
이런식으로 조회해 볼 수 있을 것이다!
SELECT *
FROM players
WHERE birthCity LIKE 'New%';
birthCity
값이 “NEW”로 시작하는 행을 조회
SELECT *
FROM players
WHERE birthCity LIKE 'New Yor_';
birthCity
값이 “NEW Yor”로 시작하며 그 뒤에 문자는 딱 한자리인 행을 조회
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기