데이터베이스_SQL_01

하이솝·2026년 5월 3일

데이터베이스

목록 보기
9/10

집합 연산자

<student>

<instructor>

Union

select * from student union select * from instructor;

  • 연산 시, 열의 개수와 각 열의 타입이 같아야 함
  • 기본적으로 중복을 제거하여 출력함
    중복을 허용하고 싶다면 union all 사용

intersect

select dept_name from student
intersect
select dept_name from instructor;

except

select dept_name from student
except select dept_name from instructor where dept_name = '음악학과';

테이블 수정

참고

  • drop: 테이블 자체를 삭제
  • delete: 테이블 내용을 삭제

ALTER TABLE

  • 기존의 테이블 구조를 변경하는 데에 사용

alter table ~ add
ALTER TABLE student ADD age INT;

  • 새로운 속성(필드, 열)을 추가할 때 사용

alter table ~ drop
ALTER TABLE student DROP COLUMN age;

  • 기존 속성(필드, 열)을 삭제할 때 사용
  • 저장되어 있던 데이터도 함께 삭제

alter table ~ modify
ALTER TABLE student MODIFY name CHAR(10);

  • 기존 속성(필드, 열)의 자료형, 크기, 제약조건 등을 변경할 때 사용
  • 데이터 유형을 변경할 때, 해당 열은 비워져 있어야 함
    ALTER TABLE student MODIFY stu_year NULL; // not null 제약 해제
    UPDATE student SET stu_year = null; // 비우기
    ALTER TABLE student MODIFY stu_year char(12);

describe

  • desc or describe: 특정 테이블의 구조를 보여줌
  • 해당 테이블의 열 이름, 데이터 유형, null 허용 여부 등

<student>

desc student;

ID는 키본키이므로 실제로는 unique 제약 포함. 따로 보이지만 않음

ALTER TABLE student ADD stu_year INT;
UPDATE student SET stu_year = 1;
ALTER TABLE student MODIFY stu_year NOT NULL;
ALTER TABLE student ADD stu_year INT DEFAULT 1 NOT NULL;

<MySQL>
alter table student add age int after name;
이름 뒤에 age 속성 추가
기본값은 맨 뒤

테이블 정의

create table student(
	ID			varchar(5) primary key,
    name		varchar(20) not null,
    dept_name	varchar(20)
    				references department(dept_name),
    tot_cred	numeric(3, 0));

단, 속성 옆에 primary/foreign key 등을 붙이는 방식은
단일 속성으로 key가 되는 경우에만 적용 가능 (복합키의 경우 사용 불가능)

0개의 댓글