mkdir -p aiffel/sql_basic
ln -s ~/data/* aiffel/sql_basic/
Cloud Jupyter에서 데이터 확인 : aiffel > sql_basic
pandasql 라이브러리 설치
!pip3 install pandasql
데이터가 있는지 확인!
이때, FileNotFoundError
가 발생한다면 생성한 ipynb 파일의 위치를 확인하자.
필자의 경우, 루트 폴더가 /
가 아닌 /aiffel
였기 때문에 데이터 확인 코드의 폴더 위치 부분을 바꿔야 했음!
data_dir = 'aiffel/sql_basic/'
data_dir = 'sql_basic/'
또 다른 방법은 ipynb 파일 자체를
/
위치로 옮겨주는 것!
해당 내용부터는 별도의 개인 Google Colab을 이용해 진행했음을 알려드립니다.
mysql("""
쿼리문 작성
""")
*
은 모든 컬럼 조회SELECT *
FROM 테이블명
FROM
절 다음에 WHERE
절 작성!SELECT 원하는 컬럼
FROM 테이블명
WHERE 조건절
A = 'value'
: A와 'value'는 같음A !=(<>) 'value'
: A와 'value'는 같지 ❌A > n
: A가 n보다 큼A >= n
: A가 n보다 크거나 같음A < n
: A가 n보다 작음A <= n
: A가 n보다 작거나 같음=
특정 데이터 선택 시 사용
2012년 기준 날짜, 계절, 날씨 컬럼 확인(LIMIT은 100만 보겠다는 의미)
같다
의 의미로 사용할 경우
!=
또는 <>
>
, >=
>
: 크다, >=
: 크거나 같다<
, <=
<
: 작다, >=
: 작거나 같다AND
: 앞 뒤 조건 모두 만족해야 참 -> 여러개 조건 존재OR
: 앞 조건 또는 뒤 조건 중 하나라도 만족해야 참 - >여러 개 조건 존재IN
: 값 리스트 중 하나라도 만족하는 해당 결과 출력 시 사용NOT
: 조건 부정(논리 연산자 의미 반전AND
WHERE [조건1] AND [조건2]
조건1 | 조건2 | Result |
---|---|---|
T | T | T |
F | T | F |
T | F | F |
F | F | F |
bike 테이블에서 2011년도 봄 시즌 데이터 보기
2011년도 봄시즌 22시 발생한 데이터 보기
2011년도 봄시즌 일요일에 발생한 데이터 보기
OR
WHERE [조건1] OR [조건2]
조건1 | 조건2 | Result |
---|---|---|
T | T | T |
F | T | T |
T | F | T |
F | F | F |
WHERE hr = 10 OR 11
은 왜 안될까?
- 쿼리문의 경우, 비교하고자 하는 컬럼명까지 명확하게 지정해줘야 하기 때문!
⭐️ IN
⭐️
컬럼이 어떤 값들의 집합에 속할 경우
조회 데이터가 여러 개일 경우 사용
리스트의 값 중 하나라도 만족하면 해당 결과값 무조건 출력!
=
와의 차이점
- = : 값 1개 비교 가능
- IN : 여러 개 list로 저장해서 비교 가능
그럼 OR을 쓰면 안되나요?
- 상관없지만..! 하나의 컬럼에서 같은 인자에 대한 조건을 줄 때는 IN이 효율적이겠죠?
1월(Jan), 3월(Mar), 5월(May) 전체 데이터
NOT
조건을 부정으로 만들어 부정 연산자!
조건에 대한 반대 결과
1월(Jan), 3월(Mar), 5월(May)이 아닌 전체 데이터
연습 : 1월(Jan), 3월(Mar), 5월(May)이 아니고, 전체 대여 건수가 10보다 큰 데이터?
NULL
Between A and B
비교 연산자와 동일한 출력을 보인다!
number Between 3 AND 5
number>=3 AND number<=5
계산에 사용
SELECT
, WHERE
문에 사용
주로 숫자에 사용(문자열이나 날짜 타입 데이터는 명확한 결과 나오기 어려움)
실무에서 많이 사용한다!!
산술연산자 종류 : +, -, *, / 등
⭐️우선 순위⭐️ :
()
>*
,/
>+
,-
dteday에 2를 더하고, weekday에 3을 더한다면?
주의 : RDBMS 종류에 따라 에러 발생될 수 있음. 숫자가 아닌 데이터는 산술 연산자 사용을 지양하는 것이 좋다!
temp에 +2, -2, *2, /2
추가