[SQL] 간단한 데이터 추출하고 분석하기(1) - SELECT, FROM, WHERE, LIMIT

jae.y·2022년 9월 24일
1

👩🏻‍💻 SQL

목록 보기
1/2

🎯 목표 설정

SELECT, FROM, WHERE, LIMIT 을 사용해 간단한 데이터를 추출하고 분석해보기

📝 오늘 공부한 내용

1. SQL

SQL(Structured Query Language) 이란?
: 관계형데이터베이스 시스템에서 자료를 관리 및 처리하기 위해 설계된 언어

SQL의 기본 조작 명령어

  • SELECT : 검색
  • INSERT : 등록
  • UPDATE : 수정
  • DELETE : 제거

    우선, SELECT 명령어를 이용해 SQL에서 기존에 있는 데이터를 조회, 검색해 봅시다.



2. SELECT 문

SELECT의 기본 구조SELECT A FROM B로, A는 참조할 열의 정보, B는 참조할 테이블의 정보를 입력하면 됩니다.

📍코드로 실습하기

  • 모든 실습은 관계형 데이터베이스의 기능을 제공하는 MySQL을 사용했습니다.
  • 실습은 w3shcools 에서 수행했습니다.

실습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라고 작성해도 되지만, 띄어쓰기와 함께 별칭을 부여하고 싶다면, '개인 정보'와 같이 따옴표로 묶어주어야 됩니다.



3. WHERE 절

  • WHERE 조건을 사용하면 특정 행을 불러올 수 있습니다.
  • 기본 구조WHERE A로, A에는 필터링할 조건식을 입력하면 됩니다.

📍코드로 실습하기

  • 이번 실습은 DataBase를 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)

profile
데이터 분린이 :)

0개의 댓글