[MySQL입문] SELECT FROM WHERE (+ AS, LIKE, BETWEEN, IN, 논리연산자)

Date:     Updated:

카테고리:

태그:

모두의 SQL 과 인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

🚀 SQL 쿼리 (= SQL문)

  • 쿼리를 작성한 후 실행 버튼을 누르면 된다. (F5)
  • SQL문을 소문자로 써도 상관없다. 대소문자 상관 없음
    • 예약어를 대문자로 쓰고 나머지를 소문자로 쓰는게 가독성이 좋다!
  • SQL 문장 하나가 끝나면 세미콜론을 붙여준다.
    • SQL문이 한 문장 밖에 없으면 세미콜론 생략해도 됨
  • 전체 쿼리문의 일부분인 특정 SQL 문을 드래그 하고 실행하면 전체 쿼리문이 아닌, 드래그한 그 쿼리문만 실행된다!


🚀 SELECT : 조건에 맞는 행렬 조회하기

SELECT는 데이터를 조회(READ)하는 역할을 한다. 조건에 맞는 데이터(행)들을 화면에 출력해준다!

  • SELECT : 조회할 열 (쉼표로 나열 가능)
  • FROM : 테이블 이름
  • SELECT 는 항상 FROM 과 같이 기술한다.
  • 그리고 SELECTFROM 은 필수로 입력해야한다! (WHERE, ORDER BY 등등 이런 것들은 생략 가능)


🔥 전체 데이터 조회하기

SELECT *
FROM players;

* 는 ‘전부 다!’를 뜻한다. 즉, “players 테이블에서 모든 열을 다 가져와라” 라는 의미이다. 한국말로는 가져올 테이블 FROM 부분을 앞에 쓰는 것이 더 자연스럽지만 (테이블에서 뫄뫄를 가져와라) SQL문은 영어에서 왔다는 것을 기억하자!


🔥 원하는 열들만 조회하기

SELECT nameFirst, nameLast, birthYear
FROM players;

image

“players 테이블에서 nameFirst, nameLast, birthYear 모든 열을 다 가져와라”


🔥 별칭 사용하기 : AS

SELECT 열 이름 AS 별칭

생략 가능하다.

SELECT nameFirst AS 이름, nameLast, birthYear
FROM players;

image

원래 명명된 이름 외에 임의로 열 이름을 바꿔 출력하고자 할 때 AS를 사용한다. nameFirst 열이 이름으로 출력된 것을 확인할 수 있다. 원래의 이름이 영원히 이름으로 바뀐 것이 아니라 임시로 이름으로 출력만 된 것 뿐이다.


🚀 WHERE : 원하는 조건의 데이터만 조회하기

  • 조건 식을 적고 해당 조건에 맞는 데이터만 조회할 수 있다.
  • 순서로는 FROM 다음에 와야 한다.
  • 생략 가능하다.
SELECT nameFirst, nameLast, birthYear
FROM players
WHERE birthYear = 1866; --원하는 조건

image

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';

image

birthYear 열 값이 1974 이고 & birthCountry 열 값이 USA 인 행들만 조회한 것을 확인할 수 있다.

  • 문자열 리터럴은 ' ' 작은 따옴표로 쓴다.
SELECT nameFirst AS name, nameLast, birthYear, birthCountry, weight
FROM players
WHERE (birthYear = 1974 OR birthCountry = 'USA') AND weight > 185;

image

  • ANDOR 보다 우선순위가 더 높다. (먼저 실행됨)
  • 우선순위 높이려면 괄호 쓰면 됨


🔥 BETWEEN A AND B

>=, <= 을 함께 사용한 것과 같다. a 이상 b 이하

SELECT nameFirst AS name, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear BETWEEN 1975 AND 1980;

image

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);

image

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;

image

deathYear 열 값이 NULL 인 행들만 조회한 것을 확인할 수 있다.

SELECT *
FROM players
WHERE deathYear IS NOT NULL;

image

deathYear 열 값이 NULL 이 아닌 행들만 조회한 것을 확인할 수 있다.


🔥 LIKE

패턴으로 조회할 수 있다.

  • _ : 한 자리
    • A LIKE ‘a___’ : A 열의 값이 “a 로 시작하며 뒤에 3 자리 짜리 문자열”인 행을 조회
  • % : 자리에 상관 없는 모든 값
    • A LIKE ‘%a’ : A 열의 값이 “a 로 끝나는 모든 문자열”인 행을 조회

여담으로 회원이 탈퇴를 하면 회원 DB에서 그 회원 정보를 삭제할 것 같지만, 실제로는 그렇게 하지 않고 임시로 DELETED-닉네임 이런식으로 이름을 수정한다. 탈퇴한 회원이라도 해당 정보를 복구하고 조회해야할 일이 생길 수도 있기 때문에 삭제하지는 않는다. 이럴때 탈퇴한 회원의 정보만 조회하려면 DELETED-% 이런식으로 조회해 볼 수 있을 것이다!

SELECT *
FROM players
WHERE birthCity LIKE 'New%';

image

birthCity 값이 “NEW”로 시작하는 행을 조회

SELECT *
FROM players
WHERE birthCity LIKE 'New Yor_';

image

birthCity 값이 “NEW Yor”로 시작하며 그 뒤에 문자는 딱 한자리인 행을 조회



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

DB 카테고리 내 다른 글 보러가기

댓글 남기기