Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 가격이 제일 비싼 식품의 정보 출력하기 #프로그래머스 가격이 제일 비싼 식품의 정보 출력하기 #프로그래머스 #식품분류별 가장 비싼 식품의 정보 조회하기 #프로그래머스 식품분류별 가장 비
- 프로그래머스 #오랜 기간 보호한 동물(2) #프로그래머스 오랜 기간 보호한 동물(2)
- 조건에 맞는 사용자 정보 조회하기
- 프로그래머스 #프로그래머스 우유와 요거트가 담긴 장바구니 #우유와 요거트가 담긴 장바구니
- 저자 별 카테고리 별 매출액 집계하기
- 프로그래머스 #프로그래머스 입양 시각 구하기(2) #입양 시각 구하기(2) #프로그래머스 입양 시각 구하기(1) #입양 시각 구하기(1)
- 프로그래머스 취소되지 않은 진료 예약 조회하기 #취소되지 않은 진료 예약 조회하기
- 조건에 부합하는 중고거래 상태 조회하기
- 프로그래머스 조건에 부합하는 중고거래 댓글 조회하기
- 프로그래머스 #프로그래머스 NULL 처리하기 #NULL 처리하기
- 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 #프로그래머스 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
- 프로그래머스 조건에 부합하는 중고거래 상태 조회하기
- 프로그래머스 #프로그래머스 헤비 유저가 소유한 장소 #헤비 유저가 소유한 장소
- 자동차 대여 기록에서 장기/단기 대여 구분하기 #프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기
- SQL #DDL
- 강원도에 위치한 생산공장 목록 출력하기 #프로그래머스 강원도에 위치한 생산공장 목록 출력하기 #프로그래머스 #경기도에 위치한 식품창고 목록 출력하기 #프로그래머스 경기도에 위치한 식
- 태블로 테이블 계산
- 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
- 프로그래머스 #프로그래머스 서울에 위치한 식당 목록 출력하기 #서울에 위치한 식당 목록 출력하기
- 조건에 부합하는 중고거래 댓글 조회하기
- 프로그래머스 조건에 맞는 사용자 정보 조회하기
- 프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
- 프로그래머스 #프로그래머스 5월 식품들의 총매출 조회하기 #5월 식품들의 총매출 조회하기
- 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 #프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
- 프로그래머스 #조건별로 분류하여 주문상태 출력하기 #프로그래머스 조건별로 분류하여 주문상태 출력하기
- 프로그래머스 #프로그래머스 중성화 여부 파악하기 #중성화 여부 파악하기
- 자동차 대여 기록 별 대여 금액 구하기
- 프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기
- 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
- 조건에 맞는 사용자와 총 거래금액 조회하기
Archives
- Today
- Total
데이터 분석
DDL (Data Definition Language) 본문
- 스키마, 도메인, 테이블, 뷰, 인덱스를 정의/변경/제거 할 때 사용한다
- AUTO COMMIT된다 > DROP, TRUNCATE 사용 시 원상복구 불가
CREATE TABLE
CREATE TABLE 테이블명 ( 칼럼명 칼럼유형 CONSTRAINT , ... );
이외에도 CREATE VIEW, CREATE INDEX 등 존재함.
칼럼유형 (데이터타입)
- CHAR : 고정문자열 ex) "AA" = "AA "
- VARCHAR2 : 가변 길이 문자열 ex) "AA" ≠"AA "
- NUMBER : 숫자 ex) NUMBER(8,2) 정수 6자리 소수 2자리
- DATE : 날짜
제약조건 (CONSTRAINT)
데이터 무결성을 유지하기 위해
- PRIMARY KEY : 기본키, 한 테이블에 하나만 (중복 불가 NULL불가)
- UNIQUE : 고유하게 식별하기 위한 고유 키 (중복 불가 NULL가능)
- NOT NULL : NULL 불가
- CHECK : 테이블의 특정 컬럼에 설정하는 제약
- FOREIGN KEY : 외래키, 여러 개 가능
참조동작
INSERT ACTION
- AUTOMATIC : Child에 삽입 시 Parent 테이블에 PK가 없으면 PK 생성 후 Child에 삽입
- SET NULL : PK 없으면 Child 외부키를 NULL값으로 셋팅
- SET DEFAULT : PK 없으면 Child 외부키를 지정값으로 셋팅
- DEPENDENT : Child 삽입 시 Parent 테이블에 PK 존재 할 떄만 삽입 허용
- NO ACTION : 참조 무결성 위반되면 액션 취하지 않음
DELETE / MODIFY ACTION
- CASCADE : Parent 삭제 시 Child 같이 삭제
- SET NULL : Parent 삭제 시 Child의 해당 필드는 NULL로 셋팅
- SET DEFAULT : Parent 삭제 시 Child의 해당 필드는 지정값으로 셋팅
- RESTRICT : Parent 삭제 시 Child에 PK가 없는 경우만 Parent 삭제 허용
- NO ACTION : 참조 무결성에 위반되면 엑션 취하지 않음
요약하면
Parent 테이블에서 삽입은 마음대로 가능하지만 삭제는 참조
Child 테이블에서 삭제는 마음대로 가능하지만 삽입은 참조
ALTER TABLE
ALTER TABLE을 이용한 컬럼 변경 시 주의할 점은 이미 입력된 값에 영향을 주는 변경은 허용되지 않는다는 점이다.
컬럼 추가
ALTER TABLE 테이블명 ADD (컬럼명 컬럼유형 제약조건) ;
컬럼삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명 ;
컬럼 속성 변경
# ORACLE
ALTER TABLE 테이블명 MODIFY(컬럼명 컬럼유형 제약조건) ;
# SQL SERVER
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 컬럼유형
컬럼의 유형, 길이(크기), DEFAULT값(NULL값이 입력 될 때 대체 될 값), NOT NULL제약조건 등 변경가능하다.
단, 이미 입력된 값에 영향을 미치는 변경은 허용되지 않는다.
컬럼명 변경
ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 새로운컬럼명 ;
테이블명 변경
#ORACLE
RENAME 기존테이블명 TO 새로운테이블명 ;
#SQL SERVER
SP_NAME '기존테이블명' , '새로운테이블명'
제약조건 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명) ;
CONSTRAINT는 수정 개념이 없으므로 수정하려면 삭제 후 새로 만들어야한다.
제약조건 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명 제약조건 (컬럼명) ;
DROP TABLE
테이블 제거
DROP TABLE 테이블명 ;
# 참조 제약에 걸린 모든것을 연쇄적으로 제거 (ORACLE)
DROP TABLE 테이블명 CASCADE CONSTRAINT ;
테이블의 모든 행 제거
TRUNCATE TAVLE 테이블명 DROP COLUMN 삭제할 컬럼명 ;
해당 테이블의 모든 행만 제거 후 저정공간을 재사용하도록 해체해줌 즉, 테이블은 삭제되지 않음.
※ 추가적으로 SQL SERVER의 경우 괄호를 사용하지 않고 여러 컬럼을 동시에 수정하는 기능은 없다고 보면 된다.
'SQL > 추가 학습' 카테고리의 다른 글
DCL (DATA CONTROL LANGUAGE) (0) | 2023.03.14 |
---|---|
데이터 모델 (0) | 2023.03.05 |
TCL (0) | 2023.03.02 |
DML (DATA MANIPULATION LANGUAGE) (0) | 2023.03.01 |
oracle 설치 (0) | 2023.02.27 |