TIL#101 SQL 기초

Dasom·2020년 10월 27일
0

database

목록 보기
4/15

table 의 외래키 제약조건을 잘못하여서 수정하였다. 제약조건은 바로 수정이 없어서 먼저 설정하였던 제약조건을 삭제 후 다시 제약조건을 추가하면 된다.

제약조건 삭제

ALTER TABLE product_records DROP CONSTRAINT FK_product_records_product_id_products_id;

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;

제약조건 추가

ALTER TABLE product_records ADD CONSTRAINT FK_product_records_product_id_products_id FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE;

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 FOREIGN KEY (외래키컬럼명) REFERENCES 제약조건걸 테이블명 제약조건;

컬럼 추가

ALTER TABLE options ADD (product_number varchar(50));

ALTER TABLE 테이블명 ADD (컬럼명 컬럼타입);

group by/ join
일대다 테이블을 조인하여 일인쪽 테이블의 상품명이 중복되지 않게 다인쪽 상품번호를 임의로 한개만 선택하도록 하고 싶었는데 몇시간만에 해결하였다😅

SELECT * FROM products a JOIN (SELECT product_id, max(product_number) FROM options GROUP BY product_id)b ON a.id=b.product_id;

group by 는 집계함수(sum, max, min..)를 이용한 경우에만 사용할 수 있다. product_number중 하나만 임의로 선택하여 상품이름의 중복을 없애야 하기 때문에 max로 묶어주고 product_id로 group by 하여 참조하는 쪽 테이블인 상품 테이블과 조인하였다.

profile
개발자꿈나무🌲

0개의 댓글