이 카테고리는 국비지원 과정으로 [계룡건설] 빅데이터 기반 GreenTech SW개발자 과정에서 학습하는 내용을 정리하는 공간입니다.
데이터베이스 정리 (MySQL)
1. 스키마
- 스키마: 데이터베이스에서 데이터 구조와 조직을 정의하는 개념이다.
- 물리적 스키마: 데이터가 실제 저장되는 방식에 대한 정의.
- 논리적 스키마: 데이터베이스의 논리적 구조와 데이터 간 관계 및 제약 조건을 정의.
2. SELECT 문
- 데이터를 조회하는 기본 명령어.
SELECT mem_id, mem_name FROM member WHERE height BETWEEN 163 AND 165;
- BETWEEN : 특정 범위의 값을 조회. 위 쿼리는 키가 163 이상 165 이하인 회원을 조회.
SELECT mem_name, addr FROM member WHERE addr IN ('경기', '전남', '경남');
- IN : 여러 개의 값을 OR 조건으로 조회. 위 쿼리는 주소가 '경기', '전남', '경남' 중 하나인 회원을 조회.
SELECT * FROM member WHERE mem_name LIKE '우%';
- LIKE : 패턴 매칭을 위한 키워드.
- '우%' : 이름이 '우'로 시작하는 모든 데이터를 조회.
SELECT * FROM member WHERE mem_name LIKE '__핑크';
- '__핑크' : 이름에서 앞의 두 글자는 아무거나, 세 번째 글자가 '핑크'인 데이터를 조회.
SELECT * FROM member ORDER BY debut_date DESC;
- ORDER BY : 데이터를 정렬. 기본값은 오름차순(ASC), 내림차순은 DESC.
SELECT * FROM member WHERE height > 164 ORDER BY height DESC, debut_date ASC;
- 키가 164 이상인 회원을 키 내림차순, 데뷔일 오름차순으로 정렬.
SELECT * FROM member LIMIT 3;
- LIMIT : 조회 결과의 개수를 제한.
SELECT DISTINCT addr FROM member ORDER BY addr;
- DISTINCT : 중복된 데이터를 제거하고 고유 값만 출력.
3. GROUP BY & HAVING
- 데이터를 그룹화하고 집계함수로 처리.
SELECT mem_id, SUM(price * amount) AS '총 지출'
FROM buy
GROUP BY mem_id
HAVING SUM(price * amount) < 1000
ORDER BY SUM(price * amount) DESC
LIMIT 1;
- GROUP BY : 특정 열을 기준으로 데이터를 그룹화.
- HAVING : 집계 함수의 결과를 제한할 때 사용 (WHERE 대신).
4. 데이터 삽입 (INSERT)
USE market_db;
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT);
INSERT INTO hongong1 VALUES (1, '우디', 25);
INSERT INTO hongong1 (toy_id, toy_name) VALUES (2, '버즈');
INSERT INTO hongong1 (toy_name, age, toy_id) VALUES ('제시', 20, 3);
- INSERT INTO : 데이터를 테이블에 삽입.
- 열 이름을 생략하면 값의 순서와 개수를 정확히 맞춰야 한다.
- AUTO_INCREMENT로 자동 번호 생성 가능.
CREATE TABLE hongong2 (
toy_id INT AUTO_INCREMENT PRIMARY KEY,
toy_name CHAR(4),
age INT
);
INSERT INTO hongong2 VALUES (NULL, '보핍', 25);
SELECT LAST_INSERT_ID();
- AUTO_INCREMENT : 자동으로 1씩 증가하는 기본 키.
- LAST_INSERT_ID() : 가장 최근에 삽입된 레코드의 자동 증가 값 확인.
5. 테이블 수정 (ALTER)
ALTER TABLE hongong2 AUTO_INCREMENT = 100;
INSERT INTO hongong2 VALUES (NULL, 'rrr', 33);
SELECT * FROM hongong2;
- ALTER TABLE : 테이블 구조를 변경.
- AUTO_INCREMENT 시작 값을 지정 가능.
6. 데이터 수정 (UPDATE)
UPDATE city_popul
SET city_name = '서울'
WHERE city_name = 'Seoul';
UPDATE city_popul
SET population = population / 10000;
- UPDATE : 테이블 데이터를 수정.
- SET : 수정할 열과 값을 지정.
- WHERE : 조건을 만족하는 행만 수정.
7. 데이터 삭제 (DELETE)
DELETE FROM city_popul
WHERE city_name LIKE 'New%' LIMIT 5;
- DELETE : 데이터를 삭제.
- LIKE : 패턴 매칭으로 특정 조건을 만족하는 데이터를 삭제.
- LIMIT : 삭제할 개수 제한.
8. 데이터 타입
- CHAR(고정길이 문자): 저장공간 낭비 가능, 성능 빠름.
- VARCHAR(가변길이 문자): 공간 절약, 성능은 CHAR보다 느림.
- TEXT, BLOB: 대용량 데이터 저장.
- 날짜/시간 타입: DATE, TIME, DATETIME.
9. JOIN (조인)
- 내부 조인(INNER JOIN): 두 테이블의 일치하는 데이터만 결합.
SELECT num, B.mem_id, prod_name
FROM buy B
INNER JOIN member M ON B.mem_id = M.mem_id
WHERE B.mem_id = 'GRL';
- 외부 조인(OUTER JOIN)
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
FROM member M
LEFT OUTER JOIN buy B ON M.mem_id = B.mem_id
ORDER BY M.mem_id;
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 행 + 오른쪽에서 일치하는 행.
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행 + 왼쪽에서 일치하는 행.
'국비지원교육 > [계룡건설] 빅데이터 기반 GreenTech SW개발자' 카테고리의 다른 글
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .12** (0) | 2025.03.21 |
---|---|
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .11** (0) | 2025.03.05 |
**[계룡건설] GreenTech SW개발자 - JavaScript 학습 노트 .1** (0) | 2025.02.17 |
**[계룡건설] GreenTech SW개발자 - CSS 학습 노트 .1** (0) | 2025.02.17 |
**[계룡건설] GreenTech SW개발자 - HTML 학습 노트 .3** (0) | 2025.02.17 |