Today I Learned
- Programmers 문제 풀기
- mySQL 공부
MySQL
SQL이란?
- SQL은 Structured Query Language의 약자로, 관계형 데이터베이스 시스템에서 자료를 관리하고 처리하기 위해 설계된 언어를 의미함
mySQL이란?
- MySQL은 오픈 소스 관계형 데이터베이스(RDBMS)
- RDBMS는 데이터가 열과 행으로 저장되어 데이터 구조를 쉽게 파악하고 이해할 수 있도록 사전에 정의한 관계로 데이터를 구성하는 데이터베이스 시스템을 의미함
Select 쿼리문이란?
- 데이터베이스에 명령을 내리는 것, 즉 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 것을 의미함
- Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지로 구성됨
테이블과 필드
- 테이블: 테이블은 orders처럼 데이터가 담긴 엑셀 시트와 동일하다. 이런 형태의 값이 데이터베이스에 담기면, orders라는 이름의 테이블이 된다.
- 필드: order_no, created_at, course_title, user_id, payment_method, email 각각이 필드입니다.
MySQL SELECT
SELECT *
FROM Customers
;
- SELECT문은 데이터베이스에서 데이터를 선택하는 데 사용된다.
- SELECT *은 "Customers" 테이블에서 모든 열을 선택한다.
MySQL WHERE
SELECT *
FROM Customers
WHERE CustomerID = 3
;
- WHERE절은 레코드를 필터링해서 지정된 조건을 충족하는 레코드만 추출하는 데 사용한다.
SELECT *
FROM orders
WHERE course_title != "웹개발 종합반"
;
- !=로 같지 않음 조건 걸기
SELECT *
FROM orders
WHERE created_at
BETWEEN "2020-07-13" AND "2020-07-15"
;
- BETWEEN으로 범위 조건 걸기
SELECT *
FROM users
WHERE email LIKE "s%com"
AND name = '이**'
;
- 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로 끝나는 모든 데이터
SELECT *
FROM checkins
WHERE week IN (1, 3)
;
- IN으로 포함 조건 걸기
- ex) 1, 3주차 사람들의 데이터만 보고 싶을 때
mySQL 유용한 문법
SELECT *
FROM orders
WHERE payment_method = "kakaopay"
LIMIT 5
;
- LIMIT로 일부 데이터만 가져오기
- 데이터의 양이 많은 경우 데이터를 불러올 때 시간이 오래 걸릴 수 있기 때문에 실무에서 조회용으로 많이 사용
SELECT DISTINCT(payment_method)
FROM orders
;
- DISTINCT로 중복 데이터는 제외하고 가져오기
- 필드에 어떤 종류의 데이터가 존재하는지 확인할 때 사용
SELECT COUNT(*)
FROM orders
;
- COUNT로 데이터가 총 몇 개인지 숫자 세기
SELECT count(distinct(name))
FROM users
;
- Distinct와 Count를 같이 써보기
- 회원들의 성(family name)씨가 몇 개인지 궁금하다면?
회고
SQL 생각보다 어렵지 않아서 금방 배우고 있다. 캠프 들어가서 초반에 하루종일 강의 듣던 때 생각도 나고 ㅎㅎ 오랜만에 제대로 공부하려니 재밌는 거 같다!