테이블 및 컬럼 이름은 문자로 시작, 30자 이하 영문대소문자, 숫자, 특수문자 _ $ #, 한글만 포함가능하며 중복되는 이름은 사용할 수 없고 예약키워드 CREATE TABLE COLUMN등 사용할 수 없다.
제약조건
데이터 무결성, 저장된 데이터가 손상되지않도록 유지하는 상태. 유효하지않는 입력을 방지하거나 유효한 벙ㅁ위에서만 데이터 변경/삭제 작업을 허용한다.
NOT NULL 해당 컬럼에 NULL을 포함되지않도록 한다.
-- NOT NULL : 이름은 반드시 입력
name VARCHAR(20) NOT NULL
UNIQUE 해당 컬럼 또는 컬럼 조합값이 유일하도록 한다.
-- UNIQUE : 이메일 중복 금지
email VARCHAR(50) UNIQUE
PRIMARY KEY 각 행을 유일하게 식별할 수있도록 한다.
-- PRIMARY KEY : 학번으로 학생 구분
student_id INT PRIMARY KEY
REFERENCES TABLE(COLUMN_NAME) 참조하고 있는 테이블의 특정 컬럼값과 일치하거나 NULL이 되도록 보장한다.
-- FOREIGN KEY(REFERENCES) : 존재하는 학과번호만 입력 가능
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
CHECK특정 조건을 항상 만족시키도록한다.
-- CHECK : 나이는 0 이상만 가능
age INT CHECK (age >= 0)
실습


dafault설정이 없을경우 insert into table values() 시 null로 기록된다.

not null 지정할 경우 insert되지않는다.

unique가 설정되면 값이 중복 될 수 없다. - 단일, 다수 가능하다


desc, describe table ~ 로 해당 조건을 확인 가능하다

좀더 정확히 알고싶다면 select문.
select * from information_schema.table_constraints where table_name = ~

check
해당 값에 선택값을 부여할 수 있다.
primary key
해당 값을 기본값으로 사용하겠다 .


primary key는 묶어서 지정될 수 있다.
constraint 묶음이름 primary key (열, 열)
show keys form 테이블
단일키든 복합키든 null불가

foreign key
FOREIGN KEY(외래키)는 반드시 “다른 테이블의 PRIMARY KEY 또는 UNIQUE KEY를 참조해야 한다.
foreign key설정은 컬럼에게, table에서 가능하다.
테이블에 정의시 reference앞에 constraint 키워드추가 foreign key (컬럼) 를 붙임
CONSTRAINT = “제약조건” (데이터에 규칙을 거는 것)
REFERENCES 참조테이블명 ( 참조필드명 )
constraint 키워드추가 foreign key (컬럼) REFERENCES 참조테이블명 (참조필드명)

AS SUBQUERY
테이블 생성과 행삽입을 동시에 진행할 수 있다.
이때 CTAS (CREATE TABLE ... AS SELECT)는 데이터 + 컬럼 구조는 가져오지만, PRIMARY KEY 같은 제약조건은 거의 안 가져온다. 제약조건까지 가져오면 충돌위험이 커지기 때문.
CTAS에서는 컬럼에 제약조건 거의 못 쓴다. 단순히 사용한다고 생각하자.
left join
“왼쪽 테이블은 무조건 살리고 오른쪽을 붙인다”는 뜻
TABLE_SUBQUERY1라는 새 테이블을 생성했다.
AS SELECT 결과로 EMPLOYEE테이블을 기준으로 테이블을 만들것인데
속성은 EMP_ID, EMP_NAME, SALARY, DEPT_NAME, JOB_TITLE을 사용하기위해
DEPARTMENT 테이블에서 DEPT_ID, DEPT_NAME
JOB 테이블에서 JOB_ID를 조인해서 JOB_TITLE을 가져올것이다.

erd 그리기 실습완료

https://standout.tistory.com/1709
MySQL Workbench로 erd만들기
database - reverse engineer 로그인 - next db 선택 - next - next 테이블 선택 - execute loading - next - finish 완료 + file - export 원하는 확장자로 다운 가능
standout.tistory.com
제약조건 확인하기
select * from information_schema.table_constraints

table과 컬럼의 이름을 바꿀 수 있다.
alter table 이전이름 rename to 바꿀이름
alter table 테이블이름 rename column 이전이름 to 바꿀이름


default값 바꾸기
alter table 테이블명 modify 칼럼명 칼람형 default '바꿀값'
단 '이전 데이터'에 반영되지않고 '이 이후'부터 반영된다.

테이블 데이터 삭제하기
delete from 테이블명

alter table 테이블명 drop colum 칼럼명
칼럼 삭제하기
단 모든 칼럼을 삭제할 수 없어 하나는 남겨둬야한다.

부모키가 삭제되면 자식 레코드 컬럼은 null이 되고
부모키가 값을 수정하면 자식 레코드의 컬럼값도 함께 변경
부모데이터가 삭제되면 child에 parent_id를 null로 변경할뿐, 연결만 끊고 데이터를 남긴다.
또 부모의 parent_id가 바뀌면 child의 parent_id도 자동으로 같이 변경해 데이터 정합성 유지한다.
CREATE TABLE parent (
parent_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE child (
child_id INT PRIMARY KEY,
parent_id INT,
name VARCHAR(50),
CONSTRAINT fk_parent
FOREIGN KEY (parent_id)
REFERENCES parent(parent_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);




실습수행 완료

view
노출되면 안되는 데이터가 있을때 사용한다.

set autocommit = 0
커밋을 자동으로 실행할 수 있다.

rollback으로 값을 다시 돌릴 수 있다.

'SK 네트웍스 AI 캠프' 카테고리의 다른 글
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day11_웹크롤링 이해와 실습 (0) | 2026.05.14 |
|---|---|
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day10_SQL 고급 (0) | 2026.05.13 |
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day8_MySQL 서버 구축 및 운영 관리 (0) | 2026.05.11 |
| [SK네트웍스 Family AI 캠프] 32기 2주차 회고: Day4 ~ Day7 (0) | 2026.05.11 |
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day7_파이썬 Streamlit GUI 웹프로그래밍 (0) | 2026.05.08 |