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'

















