전번에 배운 기본 개념에 대해서 제대로 정립을 안하고 가니 문제는 풀리는데 자꾸 궁금한 점이 생겨서 다시 한 번 나의 언어로 정리 해보려 한다!

💡GUI?(Graphical User Interface)
그래픽을 클릭해서 쓰는 인터페이스. 브라우저 통해서 사용하던 데스크탑 프로그램이던 이 방식으로 제일 많이 사용함! 명령어 없이도 직관적으로 사용할 수 있어 초보자들에게 적합하지만 느리고 메모리 소모가 크다...!
💡CLI?(command Line Interface)
텍스트 기반으로 명령어를 입력해서 컴퓨터를 제어하는 방식.
빠르고 메모리 소모가 적다! 자동화(scripting)에 적합!
또 세부적이고 다양한 기능을 활용할 수 있다
- SQL을 다루는 클라이언트 도구 중 하나(Client Tool)
SQL을 다루는 툴이지 SQL이 아님!! 뭐 다룰 줄 아세요 물어 봤을 때
DBeaver요 요러고 자빠져 있으면 안됨 ㅠㅠㅠㅠ SQL이요 라고 대답해야 함- 다양한 DB(MYSQL, Oracle, MSSQL 등) 연결 가능
- GUI+SQL Editor 둘 다 지원
논리적 물리적 개념, 구조 실제 저장되는 데이터 예: 이름, 나이 필드 예: '김민지', 28 논리적 설계: 테이블 구조 짜기 => 데이터 모델링
물리적 저장: 실제 값이 저장되는 것
🧠 사례로 알아보자
- "우리 학원 수강생 명단을 관리하고 싶어요. 이름이랑 나이, 수강 과목을 저장했으면 좋겠어요."
🧱 논리적 설계 (개념, 구조 = 모델링 단계)
고객의 말에서 다음과 같은 테이블 구조(=논리적 설계)를 도출한다.
📋 테이블: students
| 컬럼(Column) 이름 | 의미 | 데이터 타입 (예시) |
|---|---|---|
| name | 학생 이름 | VARCHAR(50) |
| age | 나이 | INT |
| course | 수강 과목 | VARCHAR(100) |
이렇게 테이블의 구조(설계도)를 만드는 것이 바로 논리적 설계
💾 물리적 저장 (실제 데이터 입력 = Row)
name age course 김민지 28 Python 기초 이수진 24 SQL 활용 박태호 32 데이터 시각화 설계한 테이블에 실제 데이터를 입력한다.
📦 저장된 데이터 예시 (Row = 물리적 데이터)
Row=가로 방향 말하는 거임. 열.
용어 설명 Database 데이터가 저장되는 공간 Table 데이터가 저장되는 표 Column 하나의 속성/항목 Row (Record) 한 사람/한 사건에 대한 데이터 묶음
예시안을 보고 무엇이 DATABASE, TABLE, COLUMN, ROW인지 스스로 알아보자
ID 이름 나이 1 철수 22
타입 설명 예시 INT 정수 (4바이트) 1, 100, -50 BIGINT 큰 정수 (8바이트) 12345678900 FLOAT 부동소수점 (단정도) 3.14 DOUBLE 더 정밀한 소수 3.1415926535 DECIMAL(p,s) 고정 소수점 (정밀한 계산용) DECIMAL(10,2) → 99999999.99
FLOAT=부동 소수점 숫자, 보통 32비트(7자리) 사용
DOUBLE=더 정확한 부동 소수점 숫자, 보통 64비트(15~16자리) 사용
decimal=고정 소수점 숫자, 128비트(28~29자리) 사용. 정밀도 높아서 금융권에서 많이 씀
여기서 부동은 浮(뜰 부)動(움직일 동)이다! 부동(不動)의 4번 타자 할 때의 부동 아님 ㅋㅋ
또 INT형이 BIGINT 보다 10%이상 디스크 용량을 절약한다.
수십억개의 데이터를 갖지 않는다면 효율성 측면에서 INT사용을 권장!
타입 설명 예시 CHAR(n) 고정 길이 문자열 CHAR(5) → 'Hi ' VARCHAR(n) 가변 길이 문자열 VARCHAR(50) → 'Hello' TEXT 긴 텍스트 데이터 블로그 본문 등 ENUM 미리 정의된 값 중 하나 ENUM('M','F')
💬CHAR는 말 그대로 고정형.
ex) CHAR(8)로 선언 시 글자를 한 개를 넣든 두 개를 넣든 8바이트의 공간을 차지
※ CHAR =char(문자, character)
💬VARCHAR는 반대로 가변형 문자열
데이터의 길이에 따라서 가변적으로 길이가 정해짐.
ex) VARCHAR(8)로 선언 시 글자를 한 개를 넣으면 1바이트, 2개를 넣으면 2바이트의 공간을 유동적으로 차지.
※ VARCHAR = variable(변동이 심한, 가변적인) + char
CHAR는 경우에 따라 데이터가 낭비될 수 있지만 추후 연산이 필요 없기 때문에 검색속도 및 읽히는 속도가 VARCHAR에 비해 빠르다는 장점이 있음. 글자 수가 고정되는 경우에 사용하면 데이터를 보다 효율적으로 관리할 수 있음.
ex) 주민등록번호, 전화번호, 사원번호 등
VARCHAR는 입력받은 데이터의 크기가 작을 경우, 그 크기만큼만 메모리를 차지하므로 메모리 사용량을 줄일 수 있다는 장점이 있음. 또 글자 수에 크게 상관이 없어서 문자열은 일반적으로 VARCHAR을 많이 사용
타입 설명 예시 DATE 날짜 (연-월-일) '2025-05-14' TIME 시간 (시:분:초) '14:30:00' DATETIME 날짜 + 시간 '2025-05-14 14:30:00' TIMESTAMP 자동 시간 기록용 현재 시간 저장 가능
Server host: sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com (또는 localhost, 127.0.0.1 등 서버 주소 및 PORT 번호)
database: sparta
username: sparta_student
password: **
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, ins_date DATETIME DEFAULT CURRENT_TIMESTAMP );
🔄 9. 실습 ② – CRUD
▪ INSERT (Create)
INSERT INTO users (name, age) VALUES ('홍길동', 25);
▪ SELECT (Read)
SELECT * FROM users;
▪ UPDATE (Update)
UPDATE users SET age = 26 WHERE id = 1;
▪ DELETE (Delete)
DELETE FROM users WHERE id = 1;
🎯 마무리