ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL 제약조건 확인, 추가, 수정, 삭제 방법
    Server/MySQL 2022. 11. 7. 16:47

    CRUD API 기능 구현 중에 DB table에 column에 unique 키 제약조건을 잘못 설정했었다.

     

    예를들어, 로그인을 위한 정보를 받아오는데 이름에 unique값이 들어간다던지..하는 말도 안되는 실수가 있었는데,

    연습이니까 테이블을 지우고 갈아 엎어도 됐지만, 현업에서 그렇게 문제를 해결하는 것은 절대 불가능할 것이기 때문에

    테이블 컬럼의 제약조건을 수정하는 방법을 찾아서 해결했었다.

     

    물론 처음 테이블을 만들 때 부터 제약조건을 잘 걸어뒀으면 문제없겠지만!

    나중에 프로젝트 할 때 ERD를 세세하게 잘 만들어 둬서 수정하는 일을 없게 해야겠다!

     

    // 제약조건 확인하기
    select * from information_schema.table_constraints // 이건 내 db 전체
    select * from information_schema.table_constraints where constraint_schema = '데이터베이스명' // 이건 해당 DB 내 전체 조회
    select * from information_schema.table_constraints where table_name = '테이블명'; // 이건 
    or
    SHOW CREATE TABLE '테이블명'
    
    // 제약조건 추가
    
    외래키 : ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] FOREIGN KEY(컬럼 명) 
    REFERENCES [부모테이블 명](PK 컬럼 명) [ON DELETE CASCADE / ON UPDATE CASCADE];
    // constraint [제약조건 이름]은 생략 가능한데, 생략하면 default값으로 생성된다.
    
    기본키 : ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] PRIMARY KEY(컬럼 명);
    
    // 제약조건 삭제
    ALTER TABLE [테이블 명] DROP CONSTRAINT [제약조건 이름];
    ALTER TABLE [테이블 명] DROP FOREIGN KEY [제약조건 이름];
    
    // NOT NULL 제약 조건 추가
    ALTER TABLE [테이블 명] MODIFY [컬럼 명] [데이터 타입] CONSTRAINT [제약조건 이름] NOT NULL;

     

    참고 : https://www.w3schools.com/sql/sql_foreignkey.asp

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

    [MySQL] 문자열 자르기(left, substring, right)  (0) 2023.03.24
    [MySQL] IF, CASE ~ WHEN, IFNULL, COALESCE  (0) 2023.03.17
    [MySQL] JSON_ARRAGG, JSON_OBJECT  (0) 2022.11.07

    댓글