SQL

SQL로 데이터 수정/ 삭제/ 활용

Bordercolli 2023. 8. 24. 21:16
728x90

🦮 데이터 수정(UPDATE)

UPDATE [테이블] SET 컬럼='변경할 데이터' WEHRE 조건문;

UPDATE [테이블] SET 컬럼='변경할 데이터' → 이렇게만 쓰고 실행을 하면 에러가 난다.

왜냐하면 한 컬럼 데이터 모두 i3로 변경되기 때문이다. 그래서 WHERE를 같이 써서 일부 데이터만 수정하도록 한다.

그래서 통상적으로 UPDATE 구문은 WHERE라는 조건과 함께 사용된다.

ex) id가 3인 레코드의 name을 i3으로 변경하라.

여러 개의 데이터를 변경하고 싶다면????

🦮 데이터 삭제(DELETE)

DELETE FROM 테이블명 WHERE 컬럼='값';

"DELETE FROM 테이블명"만 작성하면 모든 데이터가 삭제된다.(테이블은 그대로 있지만, 안에 아무런 값도 없음.)

 

🦮 문제

1. lowest_price(컬럼명) INT UNSIGNED으로 컬럼 추가

→ ALTER TABLE mytable ADD COLUMN lowest_price INT UNSIGMED ;

 

2. lowest_price에 최저값 입력하기

INSERT INTO 테이블(lowest_price) VALUES (값입력);

 

3. lowest_price가 300000이하인 레코드 중에서 name과 model_num만 검색하기.

🦮 크롤링 시작전...

웹 사이트에 정보를 가져오는 기술을 통해서 내 DB에 저장하려면 어떻게 해야할까???

1. 일단 어떤 정보를 가져와야 할까??

각 상품마다 이미지, 타이틀, 원래가격, 할인가격, 할인율이 있다. 그리고 이 정보가 무료로 배송할지 아닐지에 대한 정보가 있다. 그리고 각 카테고리별로 100위까지의 정보가 있으니 각 카테고리에 대한 정보가 필요로 하다. 심지어 각 카테고리에 서브 카테고리가 있다. 특정 상품이 서브 카테고리에 포함이 되는지? 또는 전체에서의 1위인지 이런 것을 저장할 정보가 필요로 하다. 그렇다면 이 정보를 어떻게 DB로 만들어야할까???

 

2. 엑셀로 필요한 정보들을 기재해보자.

그런데 해당 상품들을 클릭을 하면, 

각 상품마다 상품코드가 있다. 이 상품코드가 필요한 이유 중 하나는 해당 상품이 패션의류 1위에도 들어갈 수 있지만, ALL카테고리 22위에도 들어갈 수 있다. 즉 한 카테고리에만 들어가는 것이 아니다. 

 

그렇다면 시트를 두 개 만들어서 하나는 PRODUCT 또 하나는 RAKING이라고 만든다.

RANKING이라는 기본키가 없으니 ID를 우선 넣고, 

이렇게 함으로써 이 특정 상품이 어떤 카테고리에 어떤  서브카테고리에 어떤 랭킹에 중복되어 나타날지라도 그 상품정보를 테이블에 막 상세하게 기술하는 것이 아니라 해당 PRODUCT_CODE만 적어주면 된다.

이 RANKING테이블에 PRODUCT_CODE에 대한 상세한 정보는 앞서 PROUDCT테이블에서 설명해줄 것이다.

만약에 우리들이 상품을 판매하는 업체명을 추가적으로 적으려면 모든 테이블을 수정하는 것이 아니라 PRODUCT테이블만 건들면 다른 테이블들이 PRODUCT테이블을 참고하여 정보를 알 수 있게 된다.

 

이렇게 하나의 테이블에 모든 컬럼을 넣는거보다 분리하는 것이 저장공간적으로도 효율적이고, 특정부분 테이블 수정이 필요할 경우 특정 부분만 수정하면 돼서 관리차원에서 유용하다.

 

 

여기서 CODE를 INT로 하지 않는 이유는 00011을 했을 경우 11만 출력될 수 있다. 그래서 변수타입을 가변 텍스트변수로 지정한다.

 

PRODUCT테이블 만들기

PRODUCT 테이블을 이렇게 작성할 수 있다.

RANKING테이블 만들기

ranking테이블

RANKING테이블의 ID는 각각의 레코드를 특정하는 식별자이다.

 

RAKING에 있는 PRODUCT_CODE는 PRODUCT의 PRODUCT_CODE와 관계가 있다. 이 관계형 데이터베이스는 특정 테이블에 특정 필드와 또 다른 테이블의 특정 필드와 관계가 있다는 것을 나타내는 문법이 존재한다.

테이블을 만들때보면 뭔가 특정 필드가 또 다른 필드에 연결되어 있는 것처럼 구조를 작성한다.

 

이제 직접 데이터를 넣어보자.

PRODUCT에 정보 삽입

프로그래밍으로 데이터베이스를 다루면 크롤링이 가능하다. 그래서 방금한 것 처럼 일일이 입력하지 않아도 수백 수억개의 레코드를 가져올 수 있다.

 

어떻게 진짜 DB를 만들고 실제 데이터를 넣는지 해보았고, 이후에는 프로그래밍을 하면서 SQL을 해보자.