국비지원교육/[계룡건설] 빅데이터 기반 GreenTech SW개발자

**[계룡건설] GreenTech SW개발자 - SQL 학습 노트**

알뜰한대학생 2025. 2. 17. 17:22

이 카테고리는 국비지원 과정으로 [계룡건설] 빅데이터 기반 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: 오른쪽 테이블의 모든 행 + 왼쪽에서 일치하는 행.