SQL & Database Part1

남재상·2025년 2월 25일
post-thumbnail

SQL & Database to CodingApple

코딩애플 강의를 통해 배운 SQL & Database를 정리한 글입니다.

📅 작성일

2025년 2월 25일


📌 목차

  1. 소개
  2. part1-1 : 데이터베이스의 종류
  3. part1-2 : MySQL & DBeaver 설치하려면 (맥 / 윈도우)
  4. part1-3 : SQL로 테이블 만들기 & 데이터 타입
  5. part1-4 : 데이터 출력하고 정렬하는 법 (SQL SELECT, ORDER BY)
  6. part1-5 : SQL WHERE로 데이터 필터링하기
  7. part1-6 : WHERE 뒤에 조건식을 여러개 쓰려면
  8. part1-7 : LIKE, %, _ 연산자로 간단하게 검색가능
  9. part1-8 : MIN, MAX, AVG, SUM 집계함수로 통계내기
  10. part1-9 : 컬럼 출력시 사칙연산 넣기 & 문자다루는 함수
  11. part1-10 : 숫자 조작하는 SQL 함수들
  12. part1-11 : SELECT 안에 SELECT 또 쓸 수 있음 (서브쿼리)
  13. part1-12 : 그룹지어 통계낼 땐 GROUP BY
  14. part1-13 : 중요한 IF / CASE 문법
  15. 참고 자료

📝 소개

Part 1 : Part 1


part1-1

🔹 Key-value Database

  • 캐시, 서브용 DB로 많이 사용한다
  • redis
    • 하드가 아닌 ram에다 저장을함
    • 하드의 있는 정보를 redis에 저장 후 데이터를 하드가 아닌 redis에서 뽑아 사용

🔹 Relational Database

  • 테이블 형식으로 데이터를 저장
  • 데이터를 정규화해서 저장한다
  • ACID Transaction 기능이 있음
  • 입출력 속도보단 정확도가 높아야 하는 경우에 사용

🔹 Graph Database

  • 노드에 데이터를 저장 후 자료간의 관계를 확인할 수 있음

🔹 Document Database

  • collection안에 document들을 만들고 그곳에 데이터를 JSON형태로 보관
  • 중복제거 없음
  • 분산처리 좋음
  • 정확도가 떨어질 수 있음

🔹 Column family Database

  • 얘들만의 언어를 사용해야함
  • 중복제거없음
  • 분산처리 좋음
  • 데이터 일관성 부족

🔹 Search engine

  • 인덱스 보관에 특화됨

part1-2

🔹 DBMS

  • 데이터 입출력 쉬움
  • DB접속 계정 발급 가능
  • 백업 쉬움

🔹 설치

  • 설치
  • custom - mysql server, mysql workbench

🔹 연결


part1-3

🔹 구조

  • Database는 폴더 table은 파일 이라고 생각하면 쉽다
  • 숫자는 int, 문자는 varchar, 날짜는 DATETIME을 주로 사용

part1-4

🔹 구조

  • Database는 폴더 table은 파일 이라고 생각하면 쉽다
  • 숫자는 int, 문자는 varchar, 날짜는 DATETIME을 주로 사용

🔹 SELECT

  • 테이블의 데이터를 뽑아낸다
select *
from product

🔹 ORDER BY

  • 데이터를 정렬한다
  • ASC는 오름차순 DESC는 내림차순
  • 디폴트는 ASC
select *
from product
order by 가격

part1-5

🔹 WHERE

  • 원하는 데이터를 가져오기 위한 필터링
select *
from product
where 카테고리 = '가구'

🔹 Between

  • 사이의 값을 가져온다
select *
from product
where 가격 between 5000 and 8000

part1-6

🔹 조건식을 여러개 쓰기

  • AND OR 쓰기
select *
from product
where 가격 = 5000 and 카테고리 = '가구';

🔹 NOT

  • 제외의 값을 가져온다
select *
from product
where not 가격 = 5000

🔹 IN

  • 컬럼의 값이 있는지를 확인
  • 같은컬럼 하나만 넣을 수 있다
select *
from product
where 카테고리 in ('신발','가전','식품')

part1-7

🔹 LIKE %

  • 문자입력시의 검색기능
  • %는 아무 문자라는 뜻
  • 인덱스 활용을 하지 못함
  • char는 공백을 만들기 때문에 사용할 때 주의
-- 소파라는 단어가 들어가 있는 데이터
select *
from product
where 상품명 like '%소파%'

-- 소파로 끝나는 단어
select *
from product
where 상품명 like '%소파'

-- 소파로 시작하는 단어
select *
from product
where 상품명 like '소파%'

🔹 LIKE _

  • _는 아무 문자 중 한 글자라는 뜻
-- 앞한글자다음 소파라는 단어가 들어가 있는 데이터
select *
from product
where 상품명 like '_소파'

-- _를 통해 글자수를 지정할 수 있음
where 상품명 like '__소파'

part1-8

🔹 MIN, MAX

  • 최소값 최대값을 가져온다
select min(사용금액)
from card

select max(사용금액)
from card

🔹 AVG

  • 평균값을 가져온다
select avg(사용금액)
from card

🔹 SUN

  • 합계를 가져온다
select sum(사용금액)
from card

🔹 COUNT

  • 행의 개수를 가져온다
select count(사용금액)
from card

🔹 AS

  • 컬럼명을 바꿀 수 있다
select max(사용금액) as 작명
from card

🔹 Distinct

  • 컬럼의 중복된 값을 제거
select distinct 연체횟수
from card

🔹 LIMIT

  • 출력 할 개수를 나타낸다
select 사용금액
from card
order by 사용금액 desc limit 1

part1-9

🔹 사칙연산

  • 컬럼에 숫자를 연산 및 컬럼과 컬럼의 연산 가능
select 사용금액*10, 사용금액* 사용금액
from card

🔹 CONCAT

  • 문자 이어붙이기
select concat(고객명, 고객등급)
from card

🔹 TRIM

  • 단어바꾸기
  • (컬럼,바꾸고싶은단어,바꿀단어)
select replace (고객등급, '패' , '훼')
from card

🔹 SUBSTR

  • 문자의 일부만 출력
  • (컬럼,몇글자부터,몇글자)
select substr(고객명,3,2)
from card

🔹 INSERT

  • 문자 일부를 교체
  • (컬럼,몇글자부터,몇자,바꿀단어)
select insert('test@naver.com',1,4,'hello')
from card

part1-10

🔹 GREATEST / LEAST

  • 하나의 행이나 숫자배열 안에서 최대, 최소를 뽑아준다
SELECT GREATEST(5, 3, 2, 1, 4);
SELECT LEAST(5, 3, 2, 1, 4);

🔹 FLOOR/CEIL

  • 소수점 들어있는 숫자들을 정수로 변환할 때 사용한다
SELECT FLOOR(10.1);
SELECT FLOOR(10.9);

SELECT CEIL(10.1);
SELECT CEIL(10.9);
-- 출력 10 10 11 11

🔹 ROUND/TRUNCATE

  • 소수점 부분을 반올림/내림할 때 사용한다
SELECT ROUND(10.777, 2);
SELECT TRUNCATE(10.777, 2);
-- 출력 10.78, 10.77

🔹 POWER

  • 숫자를 거듭제곱하고 싶을 때 사용한다
SELECT POWER(4, 2)

🔹 ABS

  • 숫자의 절댓값을 출력한다
SELECT ABS(-100)

part1-11

🔹 서브쿼리

  • 쿼리에 또 쿼리를 쓸 수 있다
  • 1개의 데이터만 뱉는 쿼리문만 서브쿼리가 가능하다
select *
from card
where 사용금액 > (select avg(사용금액) from card)

part1-12

🔹 GROUP BY

  • 컬럼의 같은 값끼리 모아준다
  • 대부분 카테고리 컬럼에 사용한다
select 고객등급, avg(사용금액)
from card
group by 고객등급

🔹 HAVING

  • GROUP BY결과를 필터링할 때 사용
select 고객등급, avg(사용금액)
from card
group by 고객등급
having 고객등급 = 'vip'

part1-13

  • 조건문을 사용하여 데이터 출력
  • 양자택일밖에 못한다
select 사용금액, if(사용금액 > 200000, '우수', '그지')
from card

🔹 CASE

  • 여러개의 조건식을 사용할 수 있다
select 사용금액,
case
	when 사용금액 >= 200000 then '우수'
	when 사용금액 >= 100000 and 사용금액 < 200000 then '우수'
	when 사용금액 < 100000 then '우수'
	else '그치'
end as 평가
from card

📚 참고 자료

profile
작은 코드 하나에도 책임을 담는 개발자입니다!

0개의 댓글