View

- 실체가 없는 데이터베이스 개체 중에 하나 ( 바로가기 아이콘과 비슷)

- SELECT 문으로 만들어져 있다.

- 접근하는 순간 SELECT 문이 실행되고 그 결과가 출력된다.

- 뷰를 형성 / 접근 / 삭제 하는 방식

-- 형성 방식
CREATE VIEW 뷰_이름
AS
	SELECT 문;
    
-- 접근 방식
SELECT 열_이름 FROM 뷰_이름
	[WHERE 조건];
    
-- 삭제
DROP VIEW 뷰_이름;

- 뷰를 사용하는 이유

  • 보안에 도움이 된다
    • 선택된 열_이름 만을 제공하므로 다른 개인 정보를 보여주지 않는다.
    • 사용자마다 테이블에 접근하는 권한에 차별을 둘 수 있다.
  • 복잡한 SQL을 단순하게 만들 수 있다.

- 추가 용어

  • 뷰를 조회 할때 열 이름에 공백이 있으면 백틱을 이용해서 입력 :  `member id`
  • WITH CHECK OPTION  : 뷰에 설정된 조건만 입력되도록 지정하는 SQL
  • SHOW CREATE VIEW 뷰_이름 : 뷰_이름 의 소스 코드를 보여주는 SQL

 

제약조건(constraint)은 데이터의 무결성을 지키기 위해 제한하는 조건.

  • 대표적인 제약조건
    • PRIMARY KEY 제약조건 - "중복되지 않는 값이여야 하고,  NULL 값을 허용하지 않는다." 
      • 기본 키에 이름 지정: CONSTRAINT PRIMARY KEY PK_mem_id (mem_id)
      • DESCRIBE 문을 이용하면 지정한 이름(PK_mem_id) 나옴. 지정안하면 PRI
    • FOREIGN KEY 제약조건 - "두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할. 외래키가 설정된 열은 꼭 다른 테이블의 '기본 키'와 연결한다. 
      • (예) 회원 테이블 member (기준 키 있음, 기준 테이블) - 구매 테이블 buy ( 기준 키 와 외래 키 있음, 참조 테이블)
      • 참조 테이블이 참조 하는 기준 테이블의 열은 반드시 PRIMARY KEY 나  UNIQUE로 설정되어야 한다.
      • 설정 → FOREIGN KEY(mem_id) REFERENCES member(mem_id)
        • 열 이름이 기준 테이블과 같지 않아도 된다. () 안에 연결 시킬 열 이름을 넣으면 된다.
      • 기본 키- 외래 키 관계가 설정되면 기준 테이블의 해당 열은 변경되거나 삭제되지 않는다.
        • ON UPDATE CASCADE : 기준 테이블에 있는 연결된 PK열이 변경되면 자동으로 참조 테이블의 FK열도 변경
        • ON DELETE CASCADE : 기준 테이블의 데이터가 삭제되면 참조 테이블의 데이터도 삭제
    • UNIQUE 제약조건 - 중복되지 않는 유일한 값, NULL 값 허용
      • 설정   email CHAR(30) NULL UNIQUE
    • CHECK 제약조건 - 입력되는 데이터는 점검하는 기능
      • 신장을 물어보는 열에 마이너스 값이 입력되지 않도록하기
      • 설정
        • height  TINYINT UNSIGNED NULL CHECK( height >= 100)
        • phone1  CHAR(3) NULL CHECK(phone1 IN('02', '031', '032', '054', '055', '061))
    • DEFAULT 정의 - 입력하지 않았을 때 자동으로 입력되는 값 설정
      • 설정
        • height  TINYINT UNSIGNED NULL DEFAULT 160
        • phone1  CHAR(3) NULL DEFAULT '02'
    • NULL 값 허용 - 아무 것도 없다는 의미, 공백이나 0과는 다름
      • NOT NULL 값 허용 안함

 

'DataBase > MySQL' 카테고리의 다른 글

[ MySQL 최적화 ] Index  (1) 2024.12.26
MySQL- 가상의 테이블 View  (0) 2023.08.26
MySQL - SQL 프로그래밍 (IF, CASE, WHILE, 동적 SQL)  (0) 2023.08.26
MySQL - 테이블 묶는 조인(JOIN)  (0) 2023.08.12
MySQL - 데이터 형 변환  (0) 2023.08.04

+ Recent posts