MySQL/혼공SQL

[SQL 기초 강의] 6강. SQL 기본 문법(SELECT ~ FROM ~ WHERE)

묘걍 2023. 11. 7. 20:17

03-1. 기본 중에 기본 SELECT ~ FROM ~ WHERE

- SQL을 그냥 쿼리라고 부르기도 한다

🎨 SELECT

  • SELECT ~ FROM ~ WHERE 의 형태가 가장 보편적
    • SELECT 하나만 나오는 경우도 가끔 있음 (하지만 특이한 케이스)
  • 선택하라
  • 데이터베이스 안의 테이블을 가져와서 조회하는 것
  • 읽기만 하지 변경하지는 않음

🧩 앞으로 사용될 DB

출처: 혼자 공부하는 SQL

- 인터넷 쇼핑몰 데이터베이스를 가정, 인터넷 마켓의 회원을 관리

- 그 회원들이 물건을 산 건이 12건 있다

✅ Data Base

- 이름: market-DB

✅ 회원 테이블

- 이름: member

- 컬럼: 아이디, 이름, 인원(가수 그룹을 회원으로 둠), 주소, 국번, 전화번호, 평균 키, 데뷔 일자

✅ 구매 테이블

- 이름: buy

- 컬럼: 순번(PK, 자동 부여), 아이디(구매자 아이디), 물품명(NOT NULL), 분류, 단가, 수량

- 가수들이 구매한 내역

🎮 DB 만들기

https://cafe.naver.com/thisismysql/1503

 

[혼공SQL] 관련 파일 / SQL 및 소스 코드

링크를 클릭해도 다운로드가 안되면, 마우스 오른쪽 버튼 >> [새 창에서 링크 열기] >> 새로 고침을 하면 됩니다. ▶ MySQL 교재와 동일한 버전입니다. MySQ...

cafe.naver.com

카페에서

이 파일 다운받기

이 파일을 workbench에서 열어야 함

workbench를 켜고

🖱️File - Open SQL Script

🖱️해당 파일 선택해서 열기

🖱️딱히 뭐 선택하지 말고 바로 ⚡ 누르기

- 전부 실행되고

- 실행된 내용이 나옴

- 초기화 하고 싶을 때는 위 과정을 그대로 다시 하면됨 (market_db파일을 수정할 게 아니기 때문에)

🧩 쿼리 살펴보기

- 만약 market_db가 이미 있으면 지우고 없으면 넘어가라

- 실행할 때 마다 지우고 새로 만들게 되는 것

- 새로운 market_db를 만든다

- 앞으로 내가 위에서 만든 market_db를 사용하겠다

- 그 안에 member라는 테이블을 만들겠다

- 한글 사용이 절대 안되는 건 아니지만 호환성에 문제가 생길 수 있기 때문에 영어로 적어준다

- 언더바(_)를 사용해 컬럼명을 어느 정도 알아볼 수 있도록 한다

- CHAR, VARCHAR: 모두 문자형 ()안에 최대 글자수 지정

- INT: 정수형(숫자)

- SMALINT: 작은 정수?

- DATE: 날짜

- 휴대폰 번호를 CHAR로 잡은 이유는 앞의 0을 잘 살리기 위해. 숫자로 해도 상관은 없지만

- INSERT문을 통해 모든 회원 등록

- NULL이 가능한 컬럼에는 NULL값이 있기도 함

- SELECT 문을 통해 확인

 

- 스키마에서 안 보일 때는

🖱️ 마우스 오른쪽 → Refresh All


🎨 USE문

- DBMS안에 DB가 한개가 아님

- 그 중에서 어떤 DB를 사용할지 지정해주는 것

Schema 칸에서 진하게 나오면 현재 그 DB를 사용중이라는 의미

🧩 사용법

- 쿼리문 하나 끝날 때 무조건 세미콜론(;) 붙여주기

- SELECT 옆에는 열을 지정해줘야하는데 *를 사용하면 모든 열을 다 보겠다는 의미

- 차례는 mem_id 대로 정렬됨

 

✅ 만약 다른 DB를 선택하고 member 테이블을 찾으면 오류남

- sys라는 DB에는 member 테이블이 없다

 

🧩 선언

- 한 번 선언하고 나면 다른 DB를 사용하겠다고 하지 않는 이상 유지된다

- workbench를 닫았다 열면 새로 선언해줘야 한다

- 또 해도 오류가 나지는 않는다

 

🎨 WHERE

- 실제 DB를 사용할 때는 전체 테이블을 볼 일이 없으므로

- 내가 보고 싶은 조건에 해당하는 내용만 보기 위해 WHERE를 쓴다

- 쿼리문 만들 때 WHERE를 쓰는 게 일반적이다

 

🧩 FROM에서 명시해주기

 

- 위와 같이 여러 줄에 나눠 쓸 수도 있다

- 드래그는 한번에 해야 제대로 실행된다.

- USE를 사용해 이미 DB를 선언해줬지만 FROM부분에 한번 더 선언해줄 수도 있다

  이때는 FROM DB명.테이블명 이렇게 써주면 된다

✅ 만약 다른 DB를 사용중이라면

- sys DB를 사용중

- market_db의 member 테이블을 보려면 FROM에서 지정해준다

- 흔하지는 않다

- 보통 DB 여러개를 동시에 쓰는 경우가 거의 없다

- 대개는 하나의 DB 안에서 작업한다

 

🧩 특정 열만 골라 보기

- SELECT 에서 선언해준다

- SELECT에 선언한 순서대로 결과가 나온다

✅ alias

- 원하는 컬럼명으로 보여주고 싶을 때

- 띄어 쓰기가 있을 경우 " "로 묶어준다

- 참조만 할 뿐 진짜 값은 아니다

- 진짜 값은 height, debut_date이다.

 

🎮 멤버수가 4명인 그룹

레드벨벳 왜 4명이지?

- WHERE 절을 쓰면 여러 건이 나올 수도 있고 안 나올 수도 있다

🎮 멤버수가 40명인 그룹

- 문법적 오류는 없지만 결과가 안 나올 수 있다

 

🎮 멤버들의 평균 키가 162 이하인 그룹

- 멤버 테이블에서 아이디와 이름만 조회해라. 조건은 평균 키가 162보다 작거나 같은 그룹

🎮 평균 키가 165보다 크면서 멤버 수가 6명 이상인 그룹

- 두 조건 다 만족해야하는 AND 조건

🎮 평균 키가 165 이상이거나 멤버 수가 6명 이상인 그룹

- 둘 중 하나만 만족해도 되는 OR 조건

🎮 평균 키가 163 이상 165 이하인 그룹

 

✅ BETWEEN - AND

- 이게 좀 더 편리하다

- 숫자 범위 내

🎮 경기도에 살거나 전남에 살거나 경남에 사는 그룹

- AND 나 BETWEEN AND로 묶을 수 없음

- 동시에 두 곳 이상에서 살 수 없기 때문

✅ IN

- 문자

 

🎨 LIKE

- 문자를 비교하는 것

- (원하는 문자열)%: 원하는 문자열이 나오기만 하면 뒤가 뭐든 상관 없음

- %는 글자 수 상관 없음

✅ = 

- 정확한 명칭을 다 쓸 수 있으면 = 을 써도 되지만

- 그게 아니라 위에처럼 일부 문자만 가지고 찾으려고 하면 =를 사용할 수 없다

- 오류가 나진 않고 결과가 없다고 나옴

✅ _

- 특정 글자 수 만큼 모르는 상황에서 특정 문자열이 들어간 데이터를 찾고 싶을 때

- '에이'핑크, '블랙'핑크 라서 _ 두개를 붙여 찾음

 

 

 

 

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/_JURyg_KzHE?si=qsffUy8rjk39qI-q