가장 많이 쓰는 데이터 형식(자료형)
숫자
문자
날짜와 시간
테이블 생성 ( usertbl , buytbl )
-- 형식
CREATE TABLE [테이블명] (
[컬럼명] [자료형] [제약조건],
[컬럼명2] [자료형] [제약조건]
FOREIGN KEY [컬럼명] REFERENCES [테이블명] [컬럼명] -- 외래키 설정
);
CREATE TABLE usertbl -- 회원 테이블
( userID CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
name VARCHAR(10) NOT NULL, -- 이름
birthYear INT NOT NULL, -- 출생년도
addr CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
mobile1 CHAR(3), -- 휴대폰의 국번(011, 016, 017, 018, 019, 010 등)
mobile2 CHAR(8), -- 휴대폰의 나머지 전화번호(하이픈제외)
height SMALLINT, -- 키
mDate DATE -- 회원 가입일
);
CREATE TABLE buytbl -- 회원 구매 테이블(Buy Table의 약자)
( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
userID CHAR(8) NOT NULL, -- 아이디(FK)
prodName CHAR(6) NOT NULL, -- 물품명
groupName CHAR(4) , -- 분류
price INT NOT NULL, -- 단가
amount SMALLINT NOT NULL, -- 수량
FOREIGN KEY (userID) REFERENCES usertbl(userID)
);
mySQL 제약조건
PRIMARY KEY
- 대부분의 테이블은 기본키를 하나씩 가지고 있다.
- 절대 중복될 수 없는 값
- NULL 이 입력될 수 없다.
- 많은 행의 데이터를 구분할 수 있는 식별자이다.
FOREIGN KEY
- 두 테이블 사이의 관계를 선언함.
- 하나의 테이블이 다른 테이블에 의존하게 됨.
- 외래키 테이블이 참조하는 테이블의 기준 열은 반드시 Primary Key 거나 Unique 제약조건이 설정되어 있어야한다.
UNIQUE
- 중복되지 않는 유일한 값
- Primary Key 와 차이점은. NULL을 허용한다.
CHECK
- 입력되는 데이터를 점검하는 기능이다.
--형식
CREATE TABLE usertbl -- 회원 테이블
( userID CHAR(8)
name VARCHAR(10)
birthYear INT CHECK ( birthYear > 1996 )
);
DEFAULT
- 값을 입력하지 않았을 때, 자동으로 입력되는 기본 값을 정의한다.
--형식
CREATE TABLE usertbl -- 회원 테이블
( userID CHAR(8)
name VARCHAR(10) DEFAULT '이름없음'
birthYear INT
);
NULL / NOT NULL
- NULL 을 허용 / 비허용 하게 해주는 제약조건이다.
CREATE TABLE usertbl -- 회원 테이블
( userID CHAR(8) NOT NULL
name VARCHAR(10)
birthYear INT
);
테이블 삭제 DROP TABLE
--형식
DROP TABLE [테이블명];
테이블 수정 ALTER TABLE
-- 열의 추가
ALTER TABLE [테이블명]
ADD [컬럼명] [자료형] [제약조건];
-- 열의 삭제
ALTER TABLE [테이블명]
DROP COLUMN [컬럼명];
-- 열의 이름 및 데이터 형식 변경
ALTER TABLE [테이블명]
CHANGE COLUMN [기존컬럼명] [변경할컬럼명] [변경할자료형] [제약조건];
-- 스키마 명으로 제약조건 조회
select * from information_schema.table_constraints
where CONSTRAINT_SCHEMA = '스키마명';
-- 테이블 명으로 제약조건 조회 ( 제약조건 삭제 할 때 필요함 )
select * from information_schema.table_constraints
where TABLE_NAME = '테이블명'; -- WHERE 절 이기때문에 따옴표 필수
-- 열의 제약조건 추가 및 삭제
ALTER TABLE [테이블명]
ADD PRIMARY KEY (컬럼명); -- 기본키 추가
ADD FOREIGN KEY (컬럼명) REFERENCES 테이블명(컬럼명); -- 외래키 추가
ADD UNIQUE KEY (컬럼명); -- 유니크 키 추가
ADD CHECK (조건식); -- 체크 추가
ALTER COLUMN 컬럼명 SET DEFAULT 값; -- 디폴트값 추가
ALTER TABLE [테이블명]
DROP PRIMARY KEY; -- 기본키 제약조건 삭제
DROP FOREIGN KEY [제약조건명]; -- 외래키 제약조건 삭제
DROP INDEX | KEY [제약조건명]; -- 유니크 제약조건 삭제 (INDEX , KEY 둘 다 같은 명령어)
DROP CHECK [제약조건명]; -- 체크 제약조건 삭제
ALTER COLUMN 컬럼명 DROP DEFAULT; -- 디폴트값 제거
외래키 생성 시 추가옵션
-- 바로 위에있는 테이블 수정에서 코드를 일부 가져 옴.
ALTER TABLE [테이블명]
ADD FOREIGN KEY (컬럼명) REFERENCES 테이블명(컬럼명)
ON DELETE CASCADE -- 기존 테이블 삭제 시, 제약조건 테이블도 자동 삭제
ON UPDATE CASCADE -- 기존 테이블 변경 시, 제약조건 테이블도 자동 변경
-- 옵션을 추가하지 않고 삭제 / 수정 요청시 , 무결성 제약조건에 위배된다는 오류와
-- 함께 수행되지 않습니다.
'더존 노션 필기 옮기기 > SQL' 카테고리의 다른 글
Oracle EMPLOYEE DDL DML (0) | 2022.11.22 |
---|---|
SQL 3일차 오라클 DB3 조인, 서브쿼리 (0) | 2022.08.30 |
SQL 2일차 오라클 DB 2 단일행함수 , 그룹함수 (0) | 2022.08.30 |
SQL 1일차 오라클DB 설치 및 설정 (0) | 2022.08.30 |