25/02/25 (화)
오늘은 새로운 수
업 데이터베이스 활용입니다!
알고리즘 정말 재밌었는데.. 아쉽습니다..
그리고 새로운 조가 정해졌습니다.
어색하지만 금방 친해지겠죠
1. 강의
CH03 SQL 기초
1.1) SQL 학습을 위한 준비
- DB(데이터베이스) + 백엔드(자바) + 프론트엔드(HTML, CSS, JS)
- 자바 백엔드 : 주로 Spring 프레임워크 사용
- DB : 대표적으로 Oracle, MySQL, IBM DB2, MS SQL, Tibero(국내) 등
- 백엔드 개발에서 DB/SQL이 차지하는 비중이 매우 크고 중요함
DBMS와 DB의 차이
- DB(Database) : 데이터의 저장소
- DBMS(Database Management System) : DB 서비스를 관리해주는 시스템
- 권한 관리, 다중 클라이언트 접속 제어, 안정적 운영 지원 등의 기능 제공
- MySQL Workbench에서 "스키마"는 DB를 의미함
SQL의 역사
- 1970년대 후반 IBM에서 SEQUEL 시스템으로 시작
- 처음에는 국방, 과학 등 특정 분야의 데이터 관리용으로 개발됨
- 초기에는 메인프레임에서 터미널로 접속하여 사용
- PC와 인터넷의 발달로 DBMS가 일반화되면서 프로그래밍 언어와 연동 필요성 증가
- JDBC(Java)와 ODBC(Microsoft)를 통한 연동 표준화
관계형 DB와 NoSQL 비교
관계형 DB(SQL)
- 엄격한 데이터 무결성 관리, 정형화된 데이터 저장
- 중요한 트랜잭션, 은행 등 금융 데이터에 적합
NoSQL
- 대용량 데이터 빠른 처리, 유연한 구조
- 통신사 로그, 천체 관측 데이터 등 대용량 데이터 처리에 적합
1.2) SQL 개요
- SQL (Structure Query Language) : 데이터에 대한 질의 언어
- DDL (Data Definition Language) : CREATE, ALTER, DROP
- DML (Data Manipulation Language) : SELECT, INSERT, DELETE, UPDATE (CRUD 해당)
- DCL (Data Control Language) : GRANT, REVOKE
- DBA (Database Administrator) : 데이터베이스 설치, 관리, 유지하는 업무를 담당하는 사람
- SELECT : 질의 결과 추출되는 속성 리스트 열거
- FROM : 질의에 어느 테이블이 사용되는지 열거
- WHERE : 질의의 조건 작성
- CREATE SCHEMA "name";
- USE "name";
1.3) 데이터 조작어 - 검색
1. SELECT 문
SELECT/FROM
SELECT bookname, price
FROM Book;
WHERE 조건
비교 | =, <>, <, <=, >, >= |
범위 | BETWEEN |
집합 | IN, NOT IN |
패턴 | LIKE |
NULL | IS NULL, IS NOT NULL |
복합조건 | AND, OR, NOT |
실습 코드
select * from book; -- 모든 컬럼을 만든 순서대로
select price, bookname, bookid, publisher from book; -- 모든 컬럼을 순서를 다르게
select bookname, price from book; -- 일부 컬럼
select publisher from book; -- 모든 출판사 ( 중복 포함 )
select distinct publisher from book; -- 모든 출판사 ( 중복 제거 )
-- where
select * from book where price =7000; -- 모든 row 중 where 조건에 맞는 row 만 추출
select * from book where price >20000; -- 모든 row 중 where 조건에 맞는 row 만 추출
select * from book where price !=7000; -- 모든 row 중 where 조건에 맞는 row 만 추출 ( <>, != : 다른 조건 )
select * from book where bookid between 5 and 7;
select * from book where price between 10000 and 20000; -- 경계선 포함
select * from book where price >= 10000 and price <= 20000; -- 경계선 포함
select *
from book
where publisher = '굿스포츠' or publisher = '대한미디어';
select *
from book
where publisher in ( '굿스포츠' ,'대한미디어' ); -- publisher 가 in 다음의 집합에 포함되는 것 추출 (권장)
select *
from book
where publisher not in ( '굿스포츠' ,'대한미디어' ); -- publisher 가 in 다음의 집합에 포함되지 않는 것 추출 (권장)
select *
from book
where publisher != '굿스포츠' and publisher != '대한미디어';
-- like
select * from book where bookname like '축구의 역사'; -- wildcard 가 없으므로 = 과 동일한 비교
select * from book where bookname like '%축구%'; -- 비교 컬럼에 축구 두 글자가 포함되면 된다.
select * from book where bookname like '골프%'; -- 비교 컬럼에 축구 두 글자가 포함되어야 하고 반드시 골프로 시작.
select * from book where bookname like '%기술'; -- 비교 컬럼에 축구 두 글자가 포함되어야 하고 반드시 기술로 종료.
-- 복합 조건
select * from book where bookname like '%축구%' and price >= 20000;
select * from book where price <=10000 or price >= 30000; -- 복합 조건이 3개 이상이면서 and 와 or 가 섞여 있는 경우 가독성을 위해서라도 () 를 활용
-- order by 항상 맨 마지막에 수행되도록 query 작성 ( 결과물을 만드는 중간에 order by 포함되면 성능 하락의 원인이 된다. )
select * from book order by bookname; -- asc, desc (생략하면 asc)
select * from book order by bookname desc; -- 내림차순
select * from book order by price desc;
select * from book order by price desc, bookname desc;
2. 실습
1) 프로그래머스
모든 레코드 조회하기 (SELECT, ORDER BY)
https://school.programmers.co.kr/learn/courses/30/lessons/59034 (정답)
12세 이하인 여자 환자 목록 출력하기 (SELECT, WHERE, ORDER BY) https://school.programmers.co.kr/learn/courses/30/lessons/132201 (정답)
흉부외과 또는 일반외과 의사 목록 출력하기 (SELECT , WHERE, ORDER BY) https://school.programmers.co.kr/learn/courses/30/lessons/132203 (정답)
조건에 맞는 도서 리스트 출력하기 (SELECT, DATE_FORMAT, WHERE, ORDER BY) https://school.programmers.co.kr/learn/courses/30/lessons/144853 (정답)
3. 마무리
3.1) WorkShop
3.2) 더 공부할 것
'LG 유플러스 유레카 > 데이터베이스 활용' 카테고리의 다른 글
[25일 차] 데이터베이스 활용(Ch04) (0) | 2025.02.28 |
---|---|
[24일 차] 데이터베이스 활용 (Ch03, Ch04) (0) | 2025.02.27 |
[23일 차] 데이터베이스 활용 (Ch03) (0) | 2025.02.26 |