어제 잠깐 outer join에 대해서 했었습니다. 거기에서 on 절이 나왔었는데요. where 조건과 헷갈릴 여지가 꽤 다분해 보였습니다. 이 둘의 차이점만 간단하게 다루어 보도록 하겠습니다. 그 전에 이런 질문을 생각해 봅시다. 이 두 쿼리는 임의의 t1, t2 데이터에 대해서, 임의의 condition 1과 condition2에 대해서 같은 결과를 리턴할까요? 이렇게 극단적으로 가는 질문은 아니오가 답인 경우가 많습니다. 어떻게 다를까요? on 뒤에 붙는 조건은, JOIN 조건을, where 뒤에 붙는 조건은 필터링 조건을 의미합니다. 이 둘이 어떻게 다른지 예제 테이블로 보여드리도록 하겠습니다. 테이블 t1은 아래와 같습니다. 다음에, 테이블 t2는 아래와 같습니다. 그러면 여기서 JOIN 조건이..
코딩 검색 결과
mysql에서 JOIN 연산은 총 4~5편 정도에 걸쳐서 쓸 예정입니다. 사실, 웹 사이트에서 많이 쓸 법한 쿼리라서 그렇다고는 말을 못 하겠어요. 이전에, 카티션 곱에 대해서 이야기를 한 적이 있을 거에요. [관련글] [코딩/Sql] - mysql from : 어느 릴레이션에서 정보를 찾아올까? 쭉 읽어보시면, 중간에 _order.id와 _user.id가 같은 것을 출력하라는 조건문이 들어 왔다는 것을 볼 수 있는데, 이를 자연 조인이라고 이야기 합니다. 그런데, 아래와 같은 상황을 생각해 봅시다. 쇼핑몰 사이트를 구축할 때 꽤 자주 보이는 문제 중에 하나가 될 수도 있을 듯 싶은데요. 어떻게 해야 할까요? 문제 길이가 짧지만, 상황을 간단하게 요약해 봅시다. user table에 있는 레코드들의 집합..
배열이랑 포인터의 관계를 들어가기 전에, 하나만 짚고 넘어가겠습니다. 배열과 포인터는 같은 개념일까요? 결론부터 말하면 아닙니다. 따라서, 배열 이름을 상수 포인터라고 한 것은, 올바른 표현이 아닙니다. 후자는 아래와 같이 선언된 것을 의미합니다. address 값을 저장하기 위한 별도의 변수가 5번째 줄에 선언이 되어 있습니다. 예제 1을 봅시다. 5개의 원소를 저장하고 있는 배열 arr을 선언했습니다. 그리고 어떠한 공간을 가리키는 int형 포인터 변수인 p를 선언했어요. 그리고 p가 가리키고 있는 데이터를 출력하는 간단한 프로그램입니다. 4번째 줄을 보시면, arr을 선언했습니다. 그러면 메모리 상에 다음과 같이 할당될 겁니다. 그런데, 배열이던, int형이던, double형이던, 메모리의 어디에 ..
포인터의 증감 연산을 간단하게 다루어 보도록 하겠습니다. 포인터 변수의 값 + 값 먼저, 이 경우부터 보도록 합시다. 아래 프로그램을 생각해 봅시다. int형 변수 a가 선언되었습니다. 그리고 p는 int형 포인터 변수입니다. p는 a의 주솟값을 가지고 있어요. 그러면, p, p+1, p+2는 각각 어떤 값이 나올까요? 4만큼 차이나는 것을 볼 수 있어요. p+1은, p로부터 4바이트, p+2는 p+1로부터 4바이트만큼 증가한 것을 볼 수 있는데요. 자료형의 크기만큼 더했다는 것을 볼 수 있어요. long long형이면 어떨까요? sizeof(long long)의 값도 같이 출력해 봅시다. 처음에 size = 8이 나왔습니다. 해당 환경에서, long long형은 8byte만큼 차지한다는 의미입니다. 이..
java에서 static 필드에 대해서 배웠습니다. 그러면, 함수 앞에도 static을 붙일 수 없을까요? 이를 정적 함수, 혹은 static 함수라고 하는데요. 예를 들어보겠습니다. 저는 myClass 클래스를 선언했습니다. 그리고, main 함수에서 myClass.foo()를 호출하고 있습니다. 그래도 될까요? 네. 일단 된다고 합니다. 일반 메서드와 다른 것은, 일반 메서드 (instance method) 는 객체.xxx(); 로 호출을 했습니다. 그런데, 이것은 class 이름.xxx();로 호출을 했다는 점이 다릅니다. 이게 왜 그렇게 될 수 있는지는 나중에 다시 이야기 해 드리도록 하겠습니다. 지금은 그냥, 아. 클래스 이름.함수명() 으로 호출할 수 있는 게 정적 함수구나. 정도만 짚고 넘어..
최근댓글