가장 많이 쓰는 데이터 형식(자료형)

숫자

문자

날짜와 시간

 

 

 

테이블 생성 ( 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  -- 기존 테이블 변경 시, 제약조건 테이블도 자동 변경

-- 옵션을 추가하지 않고 삭제 / 수정 요청시 , 무결성 제약조건에 위배된다는 오류와 
-- 함께 수행되지 않습니다.

+ Recent posts