Search
🔺

1. SQL 시작하기

1. SQL과 데이터베이스

데이터베이스란?

여러 사람이 공유해 사용할 목적으로 통합하여 관리되는 데이터의 모음
maria DB, Amazon Redshift, Oracle DB 등 많은 종류가 존재
데이터베이스의 종류에 따라 사용 방법이 조금씩 다름
BUT 데이터베이스에서 검색과 분석에 사용되는 기본 사용 방법은 데이터 베이스 종류와 상관없이 동일
SQL은 데이터 베이스에 접근하고 조작하기 위한 표준 언어

데이터베이스의 종류

가장 많이 사용되는 데이터 베이스는 아래두개
비관계형 데이터베이스
데이터들이 서로 관계가 없음. 테이블끼리 서로 연결되지 않은 DB
관계형 데이터베이스 SQL은 이걸 사용
하나 이상의 테이블로 이루어짐
서로 연결된 데이터를 가지고 있음
SQL을 통해 제어 가능

관계형 데이터베이스의 구조

테이블의 이름 → 1) rental, 2)book, 3)user
1) rental 테이블의 book_id 는 → 2) book 테이블과 연결되어있음
1) rental 테이블의 user_id는 → 3) user 테이블과 연결되어 있음

테이블의 구성요소

모든 테이블은 고유의 이름으로 구분하며 컬럼과 레코드로 구성
컬럼: 주제, 제목 → 사번, 이름, 성별
레코드: 내용, 값 → 이름: 홍길동, 김철수, 김영희
SQL에서 가장 중요한 명령어
Select: 검색! 원하는 정보를 골라내라 → select + 검색할 대상
from: ~로부터. 데이터를 불러오는 명령어 → from + 테이블명
where: 조건을 위한 명령 → where + 어떤 조건

2. 기본 문법 학습

SELECT문의 기본 문법

책 정보를 저장하는 book테이블에서, 저장된 책의 제목(title)과 저자(author)를 검색
select는 '컬럼'을 중심으로 검색하는 명령어
and 대신 콤마 ','
from은 테이블명을 기재
';' 세미콜론은 마침표
→ 제목과 저자기준으로 데이터 검색 가능

모든 데이터를 가져오는 방법 → *

Select * → *는 all 이라는 뜻이라 전체 데이터가 나옴

중복 데이터를 제거하는 방법 → DISTINCT

DISTINCT(뚜렷한,분명한) : 뒤에 나오는 컬럼의 중복을 제거하고 보여줌
distinct 뒤에 2개 이상의 컬럼을 적었을 때 한쪽 컬럼에 중복이 있어도 다른쪽 컬럼의 값이 다르면 다르게 취급
검색할 데이터 앞에 DISTINCT를 입력하여 사용
SQL은 관계형 데이터베이스이며 테이블로 이루어져 있다

3. 조건을 추가하여 검색하기

내가 원하는 데이터만 검색하는 방법 - WHERE

검색하고자 하는 데이터의 조건을 설정할 수 있는 명령
select와 where의 차이
select는 컬럼과 짝꿍이 됨
where은 레코드(데이터)와 짝꿍이 됨
→ select title (제목), where 돈키호테(데이터)

SELECT/WHERE의 기본 문법

제목이 '돈키호테'인 책 데이터를 book테이블에서 검색

4. 여러개의 조건을 추가하기

조건이 여러개일 때

성적을 저장하는 score 테이블에서 국어 성적이 90점 이상이거나 수학 성적이 80점 초과 (이거나 = or)인 데이터를 검색

비교연산자

비교연산자
score테이블에서 국어 성적이 90이상인 값 검색

복합조건 연산자

둘중에 하나만 써도 됨
score테이블에서 국어 성적이 90이상이거나 수학 성적이 80초과인 값 검색

기타연산자

Between: A가 10과 20사이에 포함된 값 → 10, 20도 포함함
IN: A in B → B에 A가 포함
NOT IN: A Not in B → B에 A가 포함되지 않은 값
→ 데이터: (1,2,3,4,....10)
1) A between 1 and 5 → (1,2,3,4,5)
2) A in 3 → (3)
3) A not in 3 → (1,2,4,5....10) 3이 제외
score테이블에서 수학 성적이 80과 90사이의 값 검색
math가 80과 90인 값도 포함
나이대: 20대를 찾을때 → between 20 and 29
날짜: 30대를 찾을때 → between '2020-03-01' and '2020-03-31'
문제
where first_name = 'Chirstian' or first_name = 'Georgi' and gender = 'M' → 이름이 크리티안인 사람/죠지면서 M인사람 이렇게 두개로 묶일수도 있기 떄문에 아래처럼 이름은 이름대로 묶어줌
where (first_name = 'Chirstian' or first_name = 'Georgi') and gender = 'M'