강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của pink321ryu
pink321ryu

câu hỏi đã được viết

Tạo bảng bằng tệp CSV dữ liệu công khai

Tên đường 14 Địa chỉ Xây dựng DB (2)

[14강 도로명 주소db 구축(2)]관련

Viết

·

423

·

Đã chỉnh sửa

1

안녕하세요.

평소에 궁금했던 분야였고 업무에 활용하고 싶었는데 아무래도 sql 초급수준이다 보니 어떻게 접근을 해야 할지 몰랐는데 본 강좌가 무척 도움이 되었습니다.

이에 감사드리며 다소 기초적일 수 있는 질문 두가지를 드립니다. 아무리 생각해도 제 수준에서는 알 수가 없어서요.

ㅡㅡ;

 

  1. 도로명주소db 활용방법 중 도로명코드의 update 쿼리문 중, rownum=1 을 사용하는 이유는 뭔가요?

     

    어차피 where 조건으로 B.도로명코드=A.도로명 코드 AND B.읍면동일련번호 = A.읍면동일련번호 로 하면 한행만 나오지 않나요??

  1. 간단히 쿼리문으로 조회를 해봤는데요. 조건상 1개의 행만 나와야 할 거 같은데 두개가 나오는 이유를 모르겠습니다. ( 23.10월 주소db 전체분 을 반영하였습니다.)

 

sqlmariadbheidisql

Câu trả lời 2

1

swa님의 프로필 이미지
swa
Người chia sẻ kiến thức

안녕하세요. 문의하신 내용에 대해 답변드립니다.

1.일반적으로 ORACLE에서 ROWNUM이란 출력된 결과값들에 대한 일련번호를 뜻합니다. 다시 말해 ROWNUM=1이란, 결과로써 출력된 집합 레코드들 중 첫 번째 건을 의미합니다.

해당 경우 UPDATE 문장의 문법 특성상,

SET (A,B,C) = (SELECT A,B,C ...)중, (SELECT 절)의 결과 집합이 2건 이상일 때 반드시 오류가 발생합니다. 중복된 동일 건들이 2건 이상 발생해도 오류가 나며 서로 다른 건들이 2건 이상 발생해도 오류가 납니다. 따라서 해당 SQL은 그러한 경우를 미연에 방지하기 위해 동일한 값들이 발생하더라도 첫 번째 건 하나만 추출하여 UPDATE 한다면 정상 처리될 것이라 판단하여 작성된 것으로 여겨집니다. (물론 결과값들은 동일한 값들이 발생될 것입니다.)

(참고로, WHERE절 이하의 EXISTS 처리는 조금 다릅니다. EXISTS문의 경우는 결과 레코드 집합이 단 1건이라도 존재하는 것을 내부 처리 중 확인하게 되면 더 이상 해당 부분 조건절을 처리하지 않고 바로 TRUE를 반환하는 방식입니다. 문의하신 내용과는 상관없지만 참고 바랍니다.)

 

2.문의하신 내용에서

'도로명주소.관리번호' 의 데이터 타입이 VARCHAR 입니다. 따라서 문자열 비교 시 문법인 외따옴표(')로 묶어야 정상적인 비교 작업이 수행됩니다. 예시 주신 바와 같이 정수값 등의 포맷으로 비교하게 되면 최대 범위값 등의 제한으로 일부만 비교되어 뒷자리 값 판단이 어려운 나머지 오류데이터들이 출력될 수 있습니다.

일반적으로 코드값이 입력되는 컬럼의 데이터타입은 제아무리 숫자만 입력될 것이라 예상되더라도 100% 확신이 없는 이상 문자형(VARCHAR)으로 정의되어야 하며, 또한 비교 시에도 반드시 외따옴표(')로 묶어 비교되어야 정상처리를 보장할 수 있습니다.

 

pink321ryu님의 프로필 이미지
pink321ryu
Người đặt câu hỏi

네. 궁금증이 풀렸네요. 친절한 답변 감사합니다.

이런 저런 강의를 들을수록 부족한 부분이 느껴지는 것 같습니다.

배워야 할 것들이 많네요.

아무래도 sql강의도 추가로 들어야 하겠네요.

0

swa님의 프로필 이미지
swa
Người chia sẻ kiến thức

안녕하세요 류재안 님.

최근 강좌에 문의하신 질의와 답변들이 다른 수강생들에게도 적절한 참고자료가 될 것 같습니다.

마침 SQL강좌에 관심을 가지시는 것으로 생각되어, 부족하지만 감사의 뜻으로 MariaDB와 관련되어 만들어진 내부함수 강좌에 대한 무료 쿠폰을 발급해 드리고자 합니다.

혹시 의향이 있으시다면 아래 주소로 메일 한 통 남겨주십시오. 쿠폰 코드를 보내드리도록 하겠습니다.

메일주소 : baraboki.pub@gmail.com

쿠폰적용 강좌 : MariaDB 클라이언트 개발, 내부함수 편

강좌에 관심을 가져주셔서 감사드립니다.

Hình ảnh hồ sơ của pink321ryu
pink321ryu

câu hỏi đã được viết

Đặt câu hỏi