✍️ Study Note
1. 테이블 삭제
- DROP TABLE 테이블이름
- FOREIGN KEY 제약조건의 기준테이블은 삭제 불가. (제약조건 or 외래키 테이블 선삭제 필요)
2. 테이블 수정
- ALTER TABLE 테이블이름 '수정 조건'
- '수정 조건' 종류 : ADD COLUMN, ADD CONSTRAINT, ADD INDEX, DROP CHECK, DROP PRIMARY KEY 등
(1) 열 추가
- ALTER TABLE 테이블이름 ADD 열이름
USE TABLEDB;
ALTER TABLE USERTBL
ADD HOMEPAGE VARCHAR(30) -- 열 추가
DEFAULT 'WWW.HANBIT.CO.KR' -- 디폴드값 추가
NULL; -- NULL 허용
(2) 열 삭제
- ALTER TABLE 테이블이름 DROP 열이름
- 해당 열에 제약조건이 있을 경우, 제약조건 선삭제 필요
ALTER TABLE USERTBL
DROP MOBILE1;
2-1. 행 삭제
- DELETE FROM 테이블이름 WHERE 조건
DELETE FROM BUYTBL WHERE USERID = 'BBK';
(3) 열 수정 (열 이름 or 데이터형식 변경)
- ALTER TABLE 테이블이름 CHAGE COLUMN 열이름
- 해당 열에 제약조건이 있을 경우, 제약조건 선삭제 필요
ALTER TABLE USERTBL
CHANGE COLUMN NAME UNAME VARCHAR(20) NULL;
3-1. 데이터 수정
- UPDATE 테이블이름 SET 바꿀내용 WHERE 조건
UPDATE USERTBL SET BIRTHYEAR = 1971 WHERE USERID = 'JYP';
(4) 제약조건 추가, 삭제
- ALTER TABLE 테이블이름 ADD CONSTRATIN 제약조건이름 [PRIMARY KEY, FOREIGN KEY, CHECK] 조건
- ALTER TABLE 테이블이름 DROP [PRIMARY KEY, FOREIGN KEY, CHECK] 제약조건 이름
- 제약조건 이름은 Navigator - Schemas 트리에서 확인할 수 있다.
-- 제약조건 추가
ALTER TABLE USERTBL
ADD CONSTRAINT CK_BIRTHYEAR
CHECK ((BIRTHYEAR >= 1900 AND BIRTHYEAR <=2023) AND (BIRTHYEAR IS NOT NULL));
-- 제약조건 삭제
ALTER TABLE USERTBL
DROP CHECK CK_NAME;
4-1. 제약조건 활성화 / 비활성화
- SET FOREIGN_KEY_CHECKS = 0 or 1
SET FOREIGN_KEY_CHECKS = 0; -- 제약조건 잠시 끄기
INSERT INTO BUYTBL VALUES (NULL, 'BBK', '모니터', '전자', 200, 5); -- 제약조건에 상관없이 데이터 입력
SET FOREIGN_KEY_CHECKS = 1; -- 제약조건 다시 시작
4-2. 제약조건 자동 업데이트
- ON UPDATE CASCADE : 기존테이블 데이터 변경 시, 제약조건 테이블 데이터도 자동 변경
- ON DELETE CASCADE : 기존테이블 데이터 삭제 시, 제약조건 테이블 데이터도 자동 삭제
-- 제약조건 자동업데이트 설정
ALTER TABLE BUYTBL
ADD CONSTRAINT FK_USERTBL_BUYTBL
FOREIGN KEY (USERID) REFERENCES USERTBL(USERID)
ON UPDATE CASCADE
ON DELETE CASCADE;
-- USERTBL 수정 시, BUYTBL 자동 수정
UPDATE USERTBL SET USERID = 'VVK' WHERE USERID = 'BBK';
SELECT USERID FROM BUYTBL WHERE USERID = 'VVK';
-- USERTBL 삭제 시, BUYTBL 자동 삭제
DELETE FROM USERTBL WHERE USERID = 'VVK';
SELECT USERID FROM BUYTBL WHERE USERID = 'VVK';
'코딩공부' 카테고리의 다른 글
[SQL] MYSQL 스토어드 프로시저(IF, CASE, WHILE)와 동적 SQL (0) | 2021.10.20 |
---|---|
[SQL] MYSQL 뷰(View) 생성, 수정, 삭제 (0) | 2021.10.19 |
[SQL] MYSQL Workbench 테이블 생성, 제약조건 종류 (0) | 2021.10.17 |
[SQL] MYSQL 대용량 텍스트, 영상 업로드 방법 (0) | 2021.10.16 |
[SQL] MYSQL JOIN (INNER, OUTER, SELF, CROSS) (0) | 2021.10.15 |