03-1. 기본 중에 기본 SELECT ~ FROM ~ WHERE
- SQL을 그냥 쿼리라고 부르기도 한다
🎨 SELECT
- SELECT ~ FROM ~ WHERE 의 형태가 가장 보편적
- SELECT 하나만 나오는 경우도 가끔 있음 (하지만 특이한 케이스)
- 선택하라
- 데이터베이스 안의 테이블을 가져와서 조회하는 것
- 읽기만 하지 변경하지는 않음
🧩 앞으로 사용될 DB
- 인터넷 쇼핑몰 데이터베이스를 가정, 인터넷 마켓의 회원을 관리
- 그 회원들이 물건을 산 건이 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명인 그룹
- 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
'MySQL > 혼공SQL' 카테고리의 다른 글
[SQL 기초 강의] 8강. 데이터 변경을 위한 SQL 문(INSERT, UPDATE, DELETE) (1) | 2023.11.11 |
---|---|
[SQL 기초 강의] 7강. SQL SELECT 절의 형식(ORDER BY 절과 GROUP BY 절) (0) | 2023.11.08 |
[SQL 기초 강의] 5강. 데이터베이스 개체(인덱스, 뷰, 스토어드 프로시저) (1) | 2023.11.07 |
[SQL 기초 강의] 4강. 데이터베이스 만들기 (1) | 2023.11.03 |
[SQL 기초 강의] 3강. 데이터베이스 모델링 (1) | 2023.10.31 |