[SQL] 01. 데이터베이스와 SQL, 데이터 조회
학습 내용
- 데이터베이스와 SQL이 무엇인지 안다.
- SELECT, FROM 문을 이용하여 데이터를 조회할 수 있다.
- WHERE 절을 이용하여 데이터를 필터링할 수 있다.
01. 데이터와 데이터베이스
데이터(Data)란?
- 데이터는 ‘저장이나 처리에 효율적인 형태로 변환된 정보(information)’
데이터의 유형
데이터는 크게 세 가지의 유형을 나눌 수 있음.
- 정형 데이터(Structured Data)
- 행(Row)과 열(Column)로 구성된 표(Table) 형태의 연산이 가능한 데이터
- 정해진 구조와 스키마(Schema)가 있기 때문에 검색, 필터, 정렬 등의 처리가 빠르고 쉬움
- ex) CSV, 엑셀, 스프레드시트, 관계형 데이터베이스
- 비정형 데이터(Unstructured Data)
- 일정한 구조가 없는 자유로운 형태로 연상이 불가능한 데이터
- 구조가 없기 때문에 분석이나 처리에는 추가적인 전처리 작업이 필요
- ex) NoSQL, 이미지, 소리, 영상 등
- 반정형 데이터(Semi-structured Data)
- 일정한 구조는 있으나 엄격한 스키마는 없고 연산이 불가능한 데이터
- 태그나 key-value 쌍과 같은 일관된 표현 규칙은 존재하지만, 각 데이터 항목마다 구조가 조금씩 달라질 수 있음
- ex) HTML, XML, JSON 등
데이터베이스(Database)란?
“A database is an organized collection of data”
- 데이터베이스란(Database)는 데이터를 효율적이고 체계적으로 저장하고 관리할 수 있도록 만든 시스템
- 데이터베이스는 잘 조직화된 데이터의 모음이 저장된 폴더 같은 느낌
- 가장 대표적인 형태는 관계형 데이터베이스(Relational Database)로, 데이터를 표(Table) 형태로 저장
DBMS(Database Management System)
Database management systems (DBMSs) are specially designed software applications that interact with the user, other applications, and the database itself to capture and analyze data
- DBMS는 사용자, 다른 프로그램 또는 데이터베이스와 소통하며 데이터를 관리하고 분석하는 특별하게 고안된 소프트웨어
- Database 조작하는 프로그램
- 대표적으로 MySQL, PostgreSQL, Oracle DB, SQlite 등이 있음
02. SQL(Structured Query Language)
SQL이란?
- SQL은 데이터베이스에서 데이터를 생성, 조회, 수정, 삭제하기 위해 사용하는 표준 언어
- SQL을 통해 데이터베이스에 원하는 작업을 요청할 수 있는데, 이 때 데이터베이스에 보내는 요청문 또는 명령어를 ‘쿼리(Query)’ 라고 함
SQL은 ‘코드’가 아니라 데이터베이스에 필요한 작업을 요청하는 것이기 때문에, 작성 전에 어떤 요청을 할 지 잘 생각해야함
03. SQL 데이터 조회하기
SELECT, FROM 문
SELECT
: 데이터를 가져오는 기본 명령어로, 데이터를 조회하는 모든 Query에 사용FROM
: 데이터를 가져올 테이블을 특정해주는 문법
- 구조
- 원하는 데이터를 보기 위해서는 SELECT에 보고 싶은 칼럼명과 FROM에는 데이터를 가져올 테이블을 명시하면 됨.
SELECT 칼럼명
FROM 테이블명;
-- people 테이블에서 모든 칼럼의 데이터 가져오기
SELECT * FROM people;
-- people 테이블에서 name 칼럼의 데이터 가져오기
SELECT name FROM people;
2. 칼럼에 별명(alias) 주기
- 원하는 칼럼을 조회했지만, 칼럼명이 평소에 사용하는 명칭이나 내가 원하는 칼럼명이랑 다를 수 있음.
- 별명(alias)를 지정하여 칼럼명을 변경할 수 있음
- 주의사항
구분 | 영어, 언더바 | 한글, 특수문자 |
---|---|---|
방법 | 별명만 적음 | 큰 따옴표 |
예시 | ord_id | “주문번호” |
SELECT 칼럼명 AS 새로운 칼럼명
FROM 테이블;
-- 방법1. 칼럼명 AS 별명
SELECT order AS "주문번호" FROM orders;
-- 방법2. 칼럼명 별명
SELECT order "주문번호" FROM orders;
-- 영문
SELECT order ord_no FROM orders;
04. 원하는 조건으로 필터링
WHERE 절
WHERE
는 특정 조건을 만족하는 데이터를 조회할 때 사용하는 구문SELECT
와 함께 사용하여 조건에 맞는 데이터만 필터링 할 수 있음.
- 구조
SELECT 칼럼명 FROM 테이블명 WHERE 필터링 조건;
2. 숫자, 문자열 조건 필터링
-- 나이가 21인 사람들의 데이터 조회
SELECT *
FROM people
WHERE age=21;
-- 성별이 남성이 사람들의 데이터 조회
SELECT *
FROM people
WHERE gender = 'male';
3. 비교 연산자
연산자 | 의미 | 예시 |
---|---|---|
= | 같다 | age = 25 |
!= 또는 <> | 같지 않다 | age != 25 또는 age <> 25 |
> | 크다 | age > 30 |
< | 작다 | age < 30 |
>= | 크거나 같다 | age >= 18 |
<= | 작거나 같다 | age <= 65 |
-- 나이가 22살 이상인 사람들의 데이터 조회
SELECT *
FROM people
WHERE age >= 22;
4. 여러 개의 조건으로 필터링 (논리 연산)
논리연산자 | 의미 | 예시 |
---|---|---|
AND | 그리고 | age>20 and gender=’female’ |
OR | 또는 | age>20 or gender=’female’ |
NOT | 크다 | not gender=’female’ |
-- 나이가 20 이상이고, 성별이 'male'이 아닌 데이터 조회
SELECT * FROM people
WHERE age >= 20 AND NOT gender = 'male';
-- 나이가 20살이거나 이름이 'Bob'인 데이터 조회
SELECT * FROM people
WHERE age = 20 OR name = 'Bob';
5. 다양한 조건 (BETWEEN, IN, LIKE)
BETWEEN
: 값이 특정 범위 내에 있는지 확인할 때 사용
-- 나이가 20세 이상 30세 이하인 사람 조회
SELECT * FROM people
WHERE age BETWEEN 20 AND 30;
IN
: 특정 값 여러 개 중 하나에 해당하는지 확인할 때 사용
-- 나이가 20, 30, 40 중 하나인 사람 조회
SELECT * FROM people
WHERE age IN (20, 30, 40);
LIKE
: 문자열의 패턴매칭에 사용
와일드카드 | 의미 |
---|---|
% | 0개 이상의 문자 |
_ | 정확히 1개의 문자 |
-- 이름이 A로 시작하는 사람
SELECT * FROM people
WHERE name LIKE 'A%';
-- 이름에 'li'가 포함된 사람
SELECT * FROM people
WHERE name LIKE '%li%';
-- 이름이 정확히 세 글자이고, 두 번째 글자가 'a'인 경우 (예: 'Max')
SELECT * FROM people
WHERE name LIKE '_a_';