MySQL Workbench 에서 테이블 생성
SQL로 테이블 생성
- 쿼리 문으로 코드 입력하여 생성
- CREATE, INSERT
제약조건(Constraint)
- 데이터의 무결성을 지키기 위한 제한된 조건
- 특정 데이터를 입력 시 어떠한 조건을 만족 했을 때에 입력되도록 제약
- 데이터의 무결성을 위한 제약조건
- 제약조건은 CREATE 할 때는 필드 옆에 바로 쓸 수도 있지만 마지막에 CONSTRAINT 로 지정해 줄 수 도 있다
- CREATE 할 때 못넣었으면 (); 밖에서 ALTER ADD(DROP) CONSTRAINT로 추가 해 줄 수 도 있다.
PRIMARY KEY(기본 키)
- 데이터 구분할 수 있는 식별자
- 중복이나 NULL값 입력 될 수 없음
- 기본 키로 생성한 것은 자동으로 클러스터형 인덱스 생성
- 테이블에 기본 키를 하나 이상 열에 설정 가능
FOREIGN KEY(외래 키)
- 두 테이블 사이의 관계 선언하여 데이터 무결성 보장
- 외래 키 관계 설정하면 하나의 테이블이 다른 테이블에 의존
- 외래 키 테이블이 참조하는 기준 테이블의 열은 반드시 PRIMARY KEY 이거나 UNIQUE 제약 조건이 설정 되어 있어야 함
- 외래 키 옵션 중 ON DELETE CASCADE 또는 ON UPDATE CASCADE
- 기준 테이블의 데이터가 변경되었을 때 외래 키 테이블도 자동으로 적용되도록 설정
UNIQUE
- 중복되지 않는 유일한 값을 입력해야 하는 조건
- PRIMARY KEY와 비슷하나 UNIQUE는 NULL 값 허용
- NULL은 여러 개가 입력되어도 상관 없음
CHECK
- 입력되는 데이터를 점검하는 기능
- EX) 키(Height)제한 - 마이너스 값이 들어올 수 없도록
- EX) 출생 년도 제한 - 1900년 이후이고 현재 시점 이전
- ALTER TABLE문으로 제약 조건 추가 가능
DEFAULT
- 값 입력하지 않았을 때 자동으로 입력되는 기본 값 정의하는 방법
- ALTER TABLE 사용 시에 열에 DEFAULT 를 지정하기 위해서 ALTER COLUMN문 사용
NULL
- NULL 값 허용하려면 NULL, 허용하지 않으려면 NOT NULL 사용
- PRIMARY KEY가 설정된 열에는 생략하면 자동으로 NOT NULL
- NULL 값은 ‘아무것도 없다’ 라는 의미, 공백(’ ‘) 이나 0과 다름
뷰
- 뷰는 일반 사용자 입장에서는 테이블과 동일하게 사용하는 개체다.
- 한 번 생성해 놓으면 테이블이라고 생각하고 사용해도 될 정도로 사용자들의 입장에서는 테이블과 거의 동일한 개체로 여겨진다.
- 테이블로 봐도 무방하다
SELECT userid, name, addr FROM usertbl;
CREATE VIEW v_usertbl AS SELECT userid, name, addr FROM usertbl;
SELECT * FROM v_usertbl;
- 뷰 작동 방식
실습
생성
CREATE VIEW v_userbuytbl AS
SELECT
U.userid AS'USER_ID',
U.name AS 'USER_NAME',
B.prodName AS 'Product_Name',
U.addr,
CONCAT(U.mobile1, U.mobile2) AS 'MOBILE_PHONE'
FROM usertbl U
INNER JOIN buytbl B
ON U.userid = B.userid;
SELECT * FROM v_userbuytbl;
수정
ALTER VIEW v_userbuytbl AS
SELECT
U.userid AS'사용자 아이디',
U.name AS '이름',
B.prodName AS '제품이름',
U.addr '주소',
CONCAT(U.mobile1, U.mobile2) AS '전화번호'
FROM usertbl U
INNER JOIN buytbl B
ON U.userid = B.userid;
SELECT * FROM v_userbuytbl;
삭제
DROP VIEW v_userbuytbl;
OR REPLACE
- 있으면 지워서 만들고 없으면 그냥 만들어라
CREATE OR REPLACE VIEW v_userbuytbl AS
SELECT
U.userid AS'USER_ID',
U.name AS 'USER_NAME',
B.prodName AS 'Product_Name',
U.addr,
CONCAT(U.mobile1, U.mobile2) AS 'MOBILE_PHONE'
FROM usertbl U
INNER JOIN buytbl B
ON U.userid = B.userid;
그룹 함수 사용하는 뷰
- SUM() 함수 사용하는 뷰
CREATE VIEW v_sum AS
SELECT userid AS 'userid', SUM(price*amount) AS 'total'
FROM buytbl GROUP BY userid;
SELECT * FROM buytbl;
SELECT * FROM v_sum;
뷰의 장점
- 보안에 도움이 된다.
- 필요한 부분만 보여줄 수 있기 때문에
- 복잡한 쿼리를 단순화 시켜 줄 수 있다.
- 쿼리문이 짧아진다.
- 한 번 만들어 만 놓으면 긴 쿼리문을 실행 안 시켜도 된다.
- 쿼리문이 짧아진다.
'빅데이터 분석가 양성과정 > MySQL' 카테고리의 다른 글
스토어드 프로시저 (0) | 2024.07.11 |
---|---|
인덱스 (0) | 2024.07.11 |
MySQL의 데이터 형식 (2) | 2024.07.11 |
SQL 기본 쿼리문 ( 2 ) (0) | 2024.07.11 |
SQL 기본 쿼리문 ( 1 ) (0) | 2024.07.11 |