-- 1. 테이블 만들기
CREATE TABLE students (
student_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INTEGER,
major VARCHAR(100),
email VARCHAR(100) UNIQUE,
enrolled_date DATE DEFAULT CURRENT_DATE
);
-- major 열은 varchar(100)이므로 최대 길이가 100인 문자열을 저장할 수 있음
-- 2. INSERT문으로 행 추가하기
INSERT INTO students (name, age, major, email)
VALUES
('김지민', 21, '컴퓨터공학', 'jimin.kim@example.com'),
('이서준', 23, '경영학', 'seojoon.lee@example.com'),
('박하윤', 22, '디자인학과', 'hayoon.park@example.com');
-- 3. SELECT문으로 추가된 행 확인하기
SELECT *
FROM students;-- 4. NOT NULL의 제약
INSERT INTO students (name, age, major, email)
VALUES
(NULL, 21, '컴퓨터공학', 'jimin.kim@example.com');-- 5. DEFAULT로 값을 지정해 행 추가하기
INSERT INTO students (name, age, major, email)
VALUES
('김연준', DEFAULT, '공간정보공학', 'yeonjun.kim@example.com');-- 6. 암묵적으로 디폴트값을 가지는 행 추가하기
INSERT INTO students (name, age)
VALUES
('김학준', 32);
SELECT *
FROM students;##삭제하기(DELETE)
-- 7. 이름이 김학준인 행만 삭제
DELETE FROM students WHERE name = '김학준';
-- 8. 삭제된 행 확인
SELECT *
FROM students;-- 9. 물리삭제와 논리삭제를 위한 테이블 생성
CREATE TABLE members (
member_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
join_date DATE DEFAULT CURRENT_DATE,
is_deleted BOOLEAN DEFAULT FALSE
);
INSERT INTO members (name, email)
VALUES
('홍길동', 'hong@example.com'),
('김영희', 'kim@example.com'),
('박철수', 'park@example.com');
-- 10. 박철수(member_id=3)를 논리삭제 처리
UPDATE members
SET is_deleted = TRUE
WHERE member_id = 3;
-- 실제 서비스에서는 삭제된 회원을 제외하고 조회
SELECT *
FROM members
WHERE is_deleted = FALSE;
-- 11. 김영희(member_id=2)를 테이블에서 완전히 삭제
DELETE FROM members
WHERE member_id = 2;
SELECT *
FROM members;