SELECT
, FROM
, WHERE
, LIMIT
을 사용해 간단한 데이터를 추출하고 분석해보기
SQL(Structured Query Language) 이란?
: 관계형데이터베이스 시스템에서 자료를 관리 및 처리하기 위해 설계된 언어
SQL의 기본 조작 명령어
- SELECT : 검색
- INSERT : 등록
- UPDATE : 수정
- DELETE : 제거
우선, SELECT 명령어를 이용해 SQL에서 기존에 있는 데이터를 조회, 검색해 봅시다.
SELECT의 기본 구조는 SELECT A FROM B
로, A
는 참조할 열의 정보, B
는 참조할 테이블의 정보를 입력하면 됩니다.
실습1. Employees 테이블 모든 정보 불러오기
SELECT * FROM Employees
SELECT *
에서*
은 Table에서 모든 열을 불러온다는 뜻입니다.- 위 코드를 입력하면 Employees 테이블에 있는 10개의 데이터를 불러올 수 있습니다.
실습2. Employees 테이블에서 데이터 일부만 불러오기
SELECT * FROM Employees LIMIT 5 -- 상위 5개의 데이터만 가져오는 방법
LIMIT n
은 SELECT, FROM으로 불러온 데이터들 중 상위 n개를 불러온다는 뜻입니다.LIMIT
문을 추가하면 데이터의 형태가 어떤지 알아보기 편하겠죠🤔?
실습3. Employees 테이블에서 특정 열만 불러오기
-- Table에서 EmployeeID, Notes 열만 불러오기 SELECT employeeid, notes FROM employees LIMIT 5
- 위 코드를 보면 앞에서 실습한 코드와 차이가 있습니다. (힌트 : 대소문자)
- SQL에서는 대소문자를 구분하지 않기 때문에
EmployeeID
열을employeeid
로 작성해도 됩니다.
🔥AS
로 출력하는 컬럼에 별칭주기 🔥-- Table에서 EmployeeID를 'ID', Notes를 '개인 정보'로 데이터 불러오기 SELECT employeeid AS ID, notes AS '개인 정보' FROM employees LIMIT 5
AS
를 사용하면 위와 같이 컬럼에 별칭을 부여할 수 있습니다.- 따옴표 없이
ID
라고 작성해도 되지만, 띄어쓰기와 함께 별칭을 부여하고 싶다면,'개인 정보'
와 같이 따옴표로 묶어주어야 됩니다.
WHERE A
로, A
에는 필터링할 조건식을 입력하면 됩니다.Customers
Table을 이용해보겠습니다.실습 전, TABLE의 데이터 형태 확인하기
SELECT * FROM customers LIMIT 10
- 열(column)은
CustomerID
,CustomerName
,ContactName
등 총 7개 입니다.
실습1. 고객 이름이 A로 시작되는 데이터만 불러오기
-- 방법 1 SELECT * FROM customers WHERE customername < 'B'
WHERE
절을 이용하면 고객이름이B
로 시작되는 데이터의 이전 정보만 불러올 수 있습니다.
연산자 | 의미 |
---|---|
= | 같다 |
!=, <> | 같지 않다 |
>, < | 크다, 작다 |
>=, <= | 크거나 같다, 작거나 같다 |
💡 주의해야할 점
WHERE 절
에서 필터링 조건 등을 쓸 땐, 데이터 원소의 대소문자를 구분해야 합니다.예시
-- 대소문자 잘 지킨 경우 SELECT * FROM customers WHERE country = 'Mexico'
-- 대소문자 안 지킨 경우 SELECT * FROM customers WHERE country = 'mexico' -- 이렇게 쓰면, 데이터가 나오지 않음
실습5. 특정 조건의 데이터만 불러오기
에서 비교 연산자를 사용하는데 어려움이 있었다.
해당 실습에서 WHERE customername < 'B'
를 입력했을 때 'B' 이전의 값들만 출력된다는 점은 이해가 되었다.
WHERE customername <= 'B'
를 입력했을 때, 'B'로 시작되는 고객 데이터도 불러올 줄 알았는데 앞 코드와 동일한 결과가 나왔다.
어려움을 해결하기 위해, 아래와 같이 직접 코드로 입력해보았다.
SELECT 'A' = 'A', 'A' != 'B', 'A' < 'B', 'A' > 'B'; -- 출력(1, 1, 1, 0)
SELECT 'A' >= 'B', 'A' <= 'B', 'A' < 'AA' -- 출력(1, 0, 1)
► 문자를 위와 같이 비교할 때, 알파벳 순서대로 뒤에오는 것이 더 크다는 걸 알 수 있다.
► 만약 고객 이름이 'B'라는 데이터가 있다면WHERE customername <= 'B'
적용 시, 그 데이터도 불러올 것이다.
처음엔, 왜 'B'로 시작되는 데이터는 가져오지 않는 걸까 고민했지만 생각보다 단순했다. WHERE customername <= 'B'
절을 사용하면, B
까지만 조건이 허용된다는 것!!
그 다음 데이터인 Berglunds snabbköp
부터는 B
보다 크기 때문에 불러올 수 없다는 것!!
SELECT * FROM customers WHERE customername < 'Bo'
- 지금 생각해보면 참 바보같은 질문이었지만... 나에게 던지는 그 바보같은 질문 덕분에 완전히 이해했다!!!!!!!
여러 사이트를 참고하여 내용을 보충하려고 노력했습니다.
그리고 비교 연산자 종류를 표로 추가했습니다.
SQL에서 데이터를 필요한 부분만 불러오는 과정을 배웠다. 아직 SELECT
, FROM
, LIMIT
, WHERE
만 사용했지만 파이썬을 배우다 SQL을 배우니 너무 재밌다!!!!!
1. SQL의 기본중의 기본 - SELECT 문
2. WHERE 쿼리 조건
3. [MySQL] 연산자(Operator)