SQL이란?/주요 데이터 타입 겁나게 쉽게 알아보기

아뇨 민균데요·2025년 5월 16일
0

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


📊SQL이란?

  • structured 구조화 된 Query의문을 제기하는 Language언어
    쉽게 말하면 데이터에 질문하고, 수정하는 언어다.
    GUI도 가능하지만, SQL(CLI)을 다룰줄 알아야 자유롭고 정확함.
    C퀄=sql(본업에서는 c퀄이라 많이 이야기 함)

    💡GUI?(Graphical User Interface)
    그래픽을 클릭해서 쓰는 인터페이스. 브라우저 통해서 사용하던 데스크탑 프로그램이던 이 방식으로 제일 많이 사용함! 명령어 없이도 직관적으로 사용할 수 있어 초보자들에게 적합하지만 느리고 메모리 소모가 크다...!
    💡CLI?(command Line Interface)
    텍스트 기반으로 명령어를 입력해서 컴퓨터를 제어하는 방식.
    빠르고 메모리 소모가 적다! 자동화(scripting)에 적합!
    또 세부적이고 다양한 기능을 활용할 수 있다


🦫DBeaver란?

  • SQL을 다루는 클라이언트 도구 중 하나(Client Tool)
    SQL을 다루는 툴이지 SQL이 아님!! 뭐 다룰 줄 아세요 물어 봤을 때
    DBeaver요 요러고 자빠져 있으면 안됨 ㅠㅠㅠㅠ SQL이요 라고 대답해야 함
  • 다양한 DB(MYSQL, Oracle, MSSQL 등) 연결 가능
  • GUI+SQL Editor 둘 다 지원

🧠 6. 논리적 설계 vs 물리적 저장?

논리적물리적
개념, 구조실제 저장되는 데이터
예: 이름, 나이 필드예: '김민지', 28

논리적 설계: 테이블 구조 짜기 => 데이터 모델링
물리적 저장: 실제 값이 저장되는 것

🧠 사례로 알아보자

  • "우리 학원 수강생 명단을 관리하고 싶어요. 이름이랑 나이, 수강 과목을 저장했으면 좋겠어요."

🧱 논리적 설계 (개념, 구조 = 모델링 단계)

고객의 말에서 다음과 같은 테이블 구조(=논리적 설계)를 도출한다.

📋 테이블: students

컬럼(Column) 이름의미데이터 타입 (예시)
name학생 이름VARCHAR(50)
age나이INT
course수강 과목VARCHAR(100)

이렇게 테이블의 구조(설계도)를 만드는 것이 바로 논리적 설계


💾 물리적 저장 (실제 데이터 입력 = Row)

nameagecourse
김민지28Python 기초
이수진24SQL 활용
박태호32데이터 시각화

설계한 테이블에 실제 데이터를 입력한다.
📦 저장된 데이터 예시 (Row = 물리적 데이터)
Row=가로 방향 말하는 거임. 열.


🧾 7. DB 구성 요소

용어설명
Database데이터가 저장되는 공간
Table데이터가 저장되는 표
Column하나의 속성/항목
Row (Record)한 사람/한 사건에 대한 데이터 묶음

예시안을 보고 무엇이 DATABASE, TABLE, COLUMN, ROW인지 스스로 알아보자

ID이름나이
1철수22

🗂️ MySQL 주요 데이터 타입 정리표<중요!>

1. 📦 숫자형 (Numeric)

타입설명예시
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사용을 권장!


2. 🔤 문자형 (String/Text)

타입설명예시
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을 많이 사용


3. 🕒 날짜/시간형 (Date & Time)

타입설명예시
DATE날짜 (연-월-일)'2025-05-14'
TIME시간 (시:분:초)'14:30:00'
DATETIME날짜 + 시간'2025-05-14 14:30:00'
TIMESTAMP자동 시간 기록용현재 시간 저장 가능


🛠️ 8. 실습 ① – DB연결 및 테이블 생성

  • 연결 문자열(Connection String)

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;


🎯 마무리

  • 데이터를 저장/조회/수정/삭제하는 기본 언어: SQL
  • 웹이나 앱도 결국 SQL을 내부에서 사용
  • 분석하려면 데이터가 저장되는 구조와 의미를 이해하는 것이 먼저!

참고:Keep going 코북 티스토리

profile
this man을 꿈 속에서 보신 적이 있으신가요?

0개의 댓글