CA 40 – Alter Tables
Source: Dev.to
customers 테이블에서 email을 NOT NULL로 설정
ALTER TABLE customers
ALTER COLUMN email SET NOT NULL;
앞으로 삽입되는 행은 반드시 email 값을 가져야 합니다.
users 테이블에서 username을 고유하게 설정
ALTER TABLE users
ADD CONSTRAINT unique_username UNIQUE (username);
중복된 사용자 이름을 방지합니다.
products 테이블에 체크 제약조건 price > 0 추가
ALTER TABLE products
ADD CONSTRAINT price_check CHECK (price > 0);
이제 가격은 0이거나 음수가 될 수 없습니다.
orders 테이블에서 status의 기본값을 'pending'으로 설정
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'pending';
status가 제공되지 않으면 자동으로 'pending'으로 설정됩니다.
employees 테이블에 조건을 가진 salary 컬럼 추가
ALTER TABLE employees
ADD COLUMN salary INT NOT NULL;
ALTER TABLE employees
ADD CONSTRAINT salary_check CHECK (salary > 10000);
salary는 NULL일 수 없으며 10,000보다 커야 합니다.
외래키를 수정하여 부서를 삭제하면 해당 부서의 직원도 삭제되도록 함
ALTER TABLE employees
DROP CONSTRAINT employees_department_id_fkey;
ALTER TABLE employees
ADD CONSTRAINT employees_department_id_fkey
FOREIGN KEY (department_id)
REFERENCES departments(id)
ON DELETE CASCADE;
이제 부서를 삭제하면 해당 부서에 속한 직원들이 자동으로 삭제됩니다.
accounts 테이블에서 체크 제약조건 balance >= 0 제거
ALTER TABLE accounts
DROP CONSTRAINT accounts_balance_check;
balance 컬럼에 대한 체크 제약조건을 제거합니다.
payments 테이블에서 user_id와 transaction_id 조합을 고유하게 설정
ALTER TABLE payments
ADD CONSTRAINT unique_payment UNIQUE (user_id, transaction_id);
같은 사용자의 중복 거래를 방지합니다.
이번 연습을 통해 ALTER TABLE이 테이블을 삭제하지 않고 구조를 수정하는 데 사용되며, 데이터베이스에 이미 데이터가 존재할 때 매우 유용하다는 것을 배웠습니다.