[WIL] 엑셀보다 쉬운 SQL 1주차: select, where

모기·2023년 3월 26일
0

WIL

목록 보기
1/1

0. 들어가며

  • SQL을 잘 하기 위해서는 반복적 삽질로 감잡기 + 원리 이해가 중요
  • 4주간 배울 것 = 데이터 잘 뽑아내기(Read)
  • 이번주는? 데이터를 불러오고 (Select), 조건에 맞게 필터링 하는 것 (Where)
  • 쿼리는 열 번 듣는 것보다, 한 번 짜는게 빨리 는다




1. DB와 SQL

1) DB?

  • 공동 작업을 위해 데이터를 담는 통

  • 통상적으로 모든 데이터베이스는 CRUD에 해당하는 기능을 지원

	C (Create): 데이터의 생성
	R (Read): 저장된 데이터를 읽어오는 것
	U (Update): 저장된 데이터를 변경
	D (Delete): 저장된 데이터를 삭제
  • DB의 중요성
	다량의 데이터의 효과적인 저장/수정/사용 > 작업 속도 향상, 충돌 시 에러 띄우는 기능 등

2) SQL?

  • Structured Query Language의 약자
  • 데이터베이스에 요청(Query)을 날려서 원하는 데이터를 가져오도록 도와주는 언어
  • 손쉬운 데이터 읽기(Read)/정리/분석
  • 'SQL 쿼리를 작성한다' = 데이터를 가져올 명령어를 작성한다




2. 쿼리 작성 팁/유의사항

  • 원하는 정보가 담긴 테이블을 찾는 게 중요

    • show tables;
    • select * from 테이블명;
  • SQL문은 길어질수록 헷갈림 > 줄을 잘 맞춰 쓰기!

  • 문자열은 따옴표 안에 입력. 숫자는 따옴표 불필요.

    • 예)
		where created_at between '2020-07-13' and '2020-07-15';
  • 숫자와 문자는 필드의 아이콘 이미지로도 구분 가능.
    • 문자열(ABC), 숫자(123)
  • 구글링: 'how to use like in sql'




3. Select, Where절

0) 사용 프로그램: DBeaver

  • 쿼리 입력창이 없을 때: 좌 상단 양피지 모양 클릭 > New Script

  • 쿼리 실행:
    ctrl + Enter

  • DB의 테이블 목록 보기:

show tables;
  • 공백 없는 문단은 하나의 쿼리문으로 인식.
    엔터로 줄끼리 공백을 만들어주면 다른 명령으로 인식되어 각각의 쿼리를 실행 가능.
위 사진을 예로 들면, slect * from users u와 나머지 문단으로 구분 가능

	1) 두 문단 중 아무 곳에나 커서를 두고 쿼리 실행
	2) 둘 중 커서가 있는 곳의 쿼리가 실행됨


1) Select 쿼리문

  • DB에서 '데이터를 선택해 가져오겠다'
    → 4주간의 모든 쿼리문에 적용
  • 구성
    (1) 어떤 테이블에서
    (2) 어떤 필드(의 데이터)를 가져올지
    	테이블: 표. 엑셀 시트와 동일
    	필드: =column. 각 열의 제목

  • 특정 테이블의 모든 필드(*) 가져오기:
select * from 테이블명;

  • 특정 테이블의 '특정 필드'만 가져오기:
select 필드명 from 테이블명;


2) Where 절

  • Select로 가져올 데이터에 조건을 걸어주는 것( ~만 가져와라)

  • 구성
    (1) 원하는 테이블
    (2) 조건을 걸 필드
    (3) 조건


  • 같음 (기본 조건) : where 필드 = 조건;
  • 같지 않음 : where 필드 != 조건;

  • 테이블a에서 필드b의 조건c만 가져와라:
select * from 테이블a
where 필드b = '뽑아낼 필드 내용 c';

	1) '뽑아낼 필드 내용 c'가 따옴표 안에 있는 이유: 
        필드명이나 테이블명이 아닌 문자열로 인식시키기 위함. 
        따옴표를 쓰지 않으면 c를 컬럼(필드)으로 인식.
	2) '=' 빼먹지 않도록 주의

  • 초과: where 필드 > 범위;
  • 미만: where 필드 < 범위;
where point > 20000;
포인트 필드에서 20000점 초과
  • 이상: where 필드 >= 범위;
  • 이하: where 필드 <= 범위;
where point >= 20000;
포인트 필드에서 20000점 이상

  • 연결: and

    • 웹개발 종합반이면서(and) 결제수단이 CARD인 주문건만 뽑기
select * from orders
where course_title = '웹개발 종합반' and payment_method = 'CARD';


	1) 필드 내 데이터가 'CARD'처럼 대문자일 경우, 
       'card'가 아닌 'CARD'로 맞춰 써 주는 것이 좋다.  

  • 범위: where 필드명 between A and B;

    • 예) 7월 13일, 7월 14일의 주문데이터만 보기
select * from orders
where created_at between "2020-07-13" and "2020-07-15";


	1) 낮은 값 먼저 입력. 가령, 713일 부터 입력.
	2) 날짜의 경우, 13일과 14일의 데이터를 보고 싶다면
       범위를 13일과 15일 사이로 주어야 한다.
    3) 2000~3000 의 숫자 범위를 보고 싶을 땐
       between 2000 and 3000 (o)
       between 2000 and 3001 (x)

  • 포함: where 필드명 in A;

    • 예) 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보기
select * from checkins 
where week in (1, 3);

  • 패턴(문자열 규칙): where 필드명 like '%ABC';

    • % 앞에 무엇이 있든 ABC로 끝나는 것

    • 예) 다음 (daum) 이메일을 사용하는 유저만 보기

select * from users 
where email like '%daum.net';
  • like%가 함께 쓰이는 예
- where email like 'a%': email 필드값이 'a로 시작'하는 모든 데이터
- where email like '%a' email 필드값이 'a로 끝'나는 모든 데이터
- where email like '%co%' email 필드값에 'co를 포함'하는 모든 데이터
- where email like 'a%o' email 필드값이 'a로 시작하고 o로 끝'나는 모든 데이터

profile
출력 중

0개의 댓글