• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 일본어 (0)
        • 모모타로TMC (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [MySQL] 15. UNIQUE 제약
        2024년 06월 04일
        • Song hyun
        • 작성자
        • 2024.06.04.:25
        728x90
        반응형

        [MySQL] 15. UNIQUE 제약

        1. UNIQUE 제약이란?

        2. UNIQUE key의 특징

        3. 시나리오 코드


        1. UNIQUE 제약이란?

        (1) UNIQUE key는 데이터베이스 테이블의 열(Column)에 적용되는 제약 조건이다. 이들 중에 해당 열의 값들이 고유(unique)하다는 것을 보장한다. 즉, 중복된 값을 허용하지 않는 제약이다. 

        (2) 또한 UNIQUE 제약 조건은 데이터베이스에서 인덱스를 생성할 때도 사용된다. UNIQUE 제약 조건이 설정된 열은 인덱스를 생성할 때 자동으로 인덱스로 지정되어, 검색 속도를 높일 수 있다.

         


        2. UNIQUE key의 특징

        (1) 고유한 값 보장: 특정 열에 UNIQUE key가 적용되면 해당 열에 있는 모든 값들이 고유해야 한다. 즉, 중복된 값을 허용하지 않는다.

        (2) NULL 값 허용: 기본적으로 UNIQUE key 는 Null 값을 허용한다. 즉 해당 열에는 Null 값이 최대 하나까지만 허용된다.

        (3) 인덱스 생성: UNIQUE key는 내부적으로 해당 열에 대한 인덱스를 생성한다. 이는 검색 성능을 향상시키고, 중복된 값을 피하기 위한 용도로 사용된다.

        (4) 테이블 전체에 대해 적용 가능: UNIQUE Key는 단일 열 또는 여러 열에 적용할 수 있다. 즉, 하나의 열에만 고유성을 적용할 수도 있고, 여러 열의 조합에 고유성을 적용할 수도 있다.

        (5) 제약 조건: UNIQUE key는 데이터 무결성을 보장하기 위한 제약 조건으로 사용된다. 이를 통해 잘못된 데이터가 테이블에 삽입되는 것을 방지할 수 있다.

         


        3. 시나리오 코드

         

        위와 같이 unique 제약을 건 컬럼에 중복된 값을 넣으면, Duplicate 오류가 발생하는 것을 볼 수 있다.

        (*참고하면 좋은 글: https://whatsthatsound.tistory.com/238)

         

        -- 멤버 테이블 설계 
        -- unique 제약 설정 
        create database memebers;
        use memebers;
        create table member(
        	id int primary key auto_increment,
            email varchar(50) unique, 
            phone varchar(20), 
            address varchar(100) not null
        );
        
        desc member;
        
        
        
        INSERT INTO member (email, phone, address)
        VALUES 
        ('hong@test.com', '010-1234-5678', '서울시 강남구'),
        ('kim@test.com', '010-2345-6789', '서울시 서초구'),
        ('lee@test.com', '010-3456-7890', '서울시 종로구'),
        ('park@test.com', '010-4567-8901', '서울시 마포구'),
        ('choi@test.com', '010-5678-9012', '서울시 강서구'),
        ('kang@test.com', '010-6789-0123', '서울시 송파구');
        
        select * from member;
        
        -- 문제 1: id가 2인 회원의 전화번호를 010-2222-2222로 수정해보자.
        update member
        SET phone='010-2222-2222'
        where id=2;
        
        -- 문제 2: id가 5인 회원의 이메일과 주소를 'a@naver.com','부산시 진구'로 수정해보자.
        update member
        SET email='a@naver.com' and address='부산시 진구'
        WHERE id=5;
        
        -- 문제 3: id가 1인 회원의 email을 a@naver.com으로 수정해보자.
        update member
        set email='a@naver.com'
        where id=1;
        -- email 컬럼에 `a@naver.com` 먼저 들어가 있어서 업데이트 불가 
        -- unique 제약이라 중복을 허용하지 않는다.

         

        728x90
        반응형

        'MySQL' 카테고리의 다른 글

        [MySQL] 17. 도전 문제: 테이블 및 문제 만들기  (0) 2024.06.04
        [MySQL] 16. INDEX 인덱스  (0) 2024.06.04
        [MySQL] 14. DELETE 구문과 조건절  (0) 2024.05.31
        [MySQL] 13. UPDATE 구문과 조건절  (0) 2024.05.31
        [MySQL] 12. 조건절 활용 : 샘플 데이터를 활용한 도전 과제  (0) 2024.05.31
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바