SQL & Database Part2

남재상·2025년 2월 28일
post-thumbnail

SQL & Database to CodingApple

코딩애플 강의를 통해 배운 SQL & Database를 정리한 글입니다.

📅 작성일

2025년 2월 25일


📌 목차

  1. 소개
  2. part2-1 : 테이블과 컬럼 생성할 때 SQL 써야 약간 멋있음
  3. part2-2 : 컬럼에 안전하게 제약 (Constraints) 주기
  4. part2-3 : 정규형 알면 DB 설계 가능 (1NF, 2NF)
  5. part2-4 : 제3정규형 (3NF) & Foreign Key
  6. part2-5 : 테이블 2개 합쳐서 출력은 INNER JOIN
  7. part2-6 : 저번시간 숙제와 LEFT, RIGHT JOIN
  8. part2-7 : 데이터 넣거나 복사하려면 INSERT
  9. part2-8 : 수정 삭제는 UPDATE / DELETE
  10. part2-9 : SELECT 결과들을 합치려면 UNION
  11. part2-10 : table 대신 view 쓰는 이유
  12. 참고 자료

📝 소개

Part 2 : Part 2


part2-1

🔹 데이터베이스 생성, 삭제

  • DDL문법
-- 생성
create database 테스트

-- 삭제
drop database 테스트

🔹 테이블 생성, 삭제

  • DDL문법
-- 생성
create table 테스트.new_table (
	id int,
	이름 varchar(100) default '홍길동',
	나이 int
)

-- 삭제
drop table new_table

🔹 컬럼 추가, 수정, 삭제

  • DDL문법
-- 생성
alter table new_table add 컬럼명 varchar(1000)

-- 수정
alter table new_table modify column 나이 varchar(100)

-- 삭제
alter table new_table drop column 컬럼명

part2-2

🔹 NOT NULL 제약

  • 값이 없으면 에러를 뽑아줌
create table 테스트.new_table (
	id int not null,
	이름 varchar(100),
	나이 int
)

🔹 UNIQUE 제약

  • 값이 중복되면 에러를 뽑아줌
create table 테스트.new_table (
	id int unique,
	이름 varchar(100),
	나이 int
)

-- 이거는 id 이름값이 전부 같으면 금지라는뜻
create table 테스트.new_table (
	id int,
	이름 varchar(100),
	나이 int,
	unique(id, 이름)
)

🔹 CHECK( )

  • 들어올 데이터 값 검사
create table 테스트.new_table (
	id int,
	이름 varchar(100),
	나이 int check(나이 > 0),
)

🔹 PRIMARY KEY

  • 행을 구분하기 위해 만듬
  • not null unique가 추가로 들어감
create table 테스트.new_table (
	id int primary key,
	이름 varchar(100),
	나이 int,
)

🔹 AUTO_INCREMENT

  • 데이터를 안넣어도 자동으로 1씩 증가
create table 테스트.new_table (
	id int auto_increment,
	이름 varchar(100),
	나이 int,
)

🔹 Constraints

  • 행이아닌 마지막줄에 저렇게 적어도 작동잘함
CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT,
    CONSTRAINT 제약조건작명 PRIMARY KEY (id),
    CONSTRAINT 제약조건작명2 CHECK(나이 > 10)
)

part2-3

🔹 제 1정규형

  • 한 칸의 하나의 데이터만 있는것

🔹 제 2정규형

  • 현재 테이블의 주제와 관련없는 컬럼을 다른 테이블로 뺴는 작업
  • partial dependency를 제거한 테이블
  • 두개 컬럼을 합친 primary keycomposite primary key라고하는데
    composite primary key 중에 하나의 컬럼에만 종속되어 있는 따까리 컬럼을

part2-4

🔹 제 3정규형

  • 일반 컬럼에만 종속된 컬럼을 다른 테이블로 빼는것
  • 제 2정규형에서 transitive dependency를 제거한것
  • 컬럼A에 컬럼B가 종속, 컬럼B에 컬럼C가 종속되어있는 경우를 transitive dependency라고함

🔹 참고

  • primary key, foreign key 항상 넣으면 좋음

part2-5

🔹 INNER JOIN

  • 테이블을 합쳐준다
  • 이거쓰면 where못쓰고 on쓰기가능
select 프로그램, 가격, 강사, 출신대학
from program
inner join teacher
on 강사id = teacher.id

part2-6

🔹 LEFT JOIN

  • INNER JOIN + 왼쪽 테이블 전부 출력
select *
from program
left join teacher
on 강사id = teacher.id

🔹 RIGHT JOIN

  • INNER JOIN + 오른쪽 테이블 전부 출력
select *
from program
right join teacher
on 강사id = teacher.id

part2-7

🔹 INSERT

  • 데이터 넣는법
insert into stock (id,상품명,가격)
values(1,'김치',500)

🔹 TEMPORARY

  • 임시테이블을 만들 때 사용
create temporary table 테이블

part2-8

🔹 UPDATE

  • 데이터 수정
update stock
set 가격 = 1000
where id = 1

🔹 DELETE

  • 데이터 수정
delete
from stock
where 가격 = 1000;

part2-9

🔹 UNION

  • 데이터 수정
  • 컬럼들은 똑같아야함
  • Default 중복제거, 중복제거 싫으면 UNION ALL
select * from 테이블1
union
select * from 테이블2

part2-10

🔹 view

  • 가상의 테이블
  • 실제로 테이블이 생성되는게 아니라 SELECT 문법을 테이블형태로 눈속임해주는 것
CREATE VIEW 뷰이름 AS
SELECT 컬럼1, 컬럼2, ...
FROM 테이블명

📚 참고 자료

profile
작은 코드 하나에도 책임을 담는 개발자입니다!

0개의 댓글