MySQL 값 지우기, 재정렬

5w31892p·2023년 10월 5일
0
  1. 생성
create table 테이블명  (    
	  id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY comment '설명'
    , 필드명 BIGINT comment '설명' NOT NULL
    , 필드명 VARCHAR(512) comment '설명' NOT NULL
    , 필드명 LONGTEXT comment '설명' NOT NULL) 
    comment '설명' engine=innodb AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
    
    마이그레이션을 진행할 경우
    AUTO_INCREMENT=다음시작할숫자로지정
  1. FK 연관관계
ALTER TABLE 테이블명
ADD CONSTRAINT 아이디명
FOREIGN KEY (FK맺을아이디명) REFERENCES tb_user(FK맺을테이블명);
  1. 마이그레이션
insert into 새로운테이블명

# 기존테이블의 필드를 새로운테이블 필드 순서에 맞게 나열
SELECT id, aa, bb, cc, dd, ee, ff, 

# 필드의 값을 바꾸는 작업
CASE WHEN ROLE='ADMIN' THEN '001' ELSE '002' END,

# string인 데이트를 DATE로 바꾸는 작업
STR_TO_DATE(modified_date, '%Y/%m/%d %H:%i:%s'),  
STR_TO_DATE(created_date, '%Y/%m/%d %H:%i:%s')
FROM 기존테이블명;

# 변경 작업이 없을 때에는 
 insert into 새로운 테이블명
SELECT id, aa, bb, cc, dd, ee, ff, 
FROM 기존테이블명;
  1. 테이블 내 값 지우기 (연관관계로 인해 USER테이블의 row를 지워야 할 때)
DELETE FROM `해당테이블명` WHERE `지울필드명` = '값';
DELETE FROM `해당테이블명` WHERE `지울필드명` IN ('값', '값', '값');
DELETE FROM `해당테이블명` WHERE `지울필드명` BETWEEN 해당값부터 AND 해당값까지;
  1. id값 재정렬
ALTER TABLE `재정렬할 테이블명` AUTO_INCREMENT=1;
SET @COUNT = 0;
UPDATE `재정렬할 테이블명` SET 재정렬할 필드명 = @COUNT:=@COUNT+1;
  1. 하나의테이블두개의값가져와구분하기
SELECT concat(별칭.필드명, '####', 별칭.필드명) FROM 테이블명 별칭;

0개의 댓글