SQL의 자연 조인에 대해 알아봅시다. natural join은 기본적으로 동등 조인입니다. 그런데, 흔히 알고 있는 join A using B, 혹은 ON 조건절을 거는 것과 다른 점은, 조인 조건이 없다는 것입니다. 테이블 2개가 있을 때, 2개에 공통적으로 나타나는 속성들이 있을 거에요. 이 속성들에 대해서 같은 쌍만을 고려합니다. 예제를 들어보도록 하겠습니다. 어제 보았던 sakila를 보도록 합시다. rental과 customer를 natural join 한다고 해 봅시다. 먼저 table에 있는 속성들을 모두 봅시다. 고객 id, 인벤토리 id, 최근 업데이트 날짜, ... 이렇게 들어 있네요. 그리고 고객 테이블을 보면, customer_id가 있고, last_update가 눈에 보입니다. ..
코딩 검색 결과
mysql의 datediff에 대해서 알아봅시다. 물론, 다른 SQL에서는 1번째 인자로 day의 차이를 구할 것인지, year의 차이를 구할 것인지, 등등을 받습니다. 그러면 몇 일 차이나는지, 몇 달이 차이나는지 등을 구할 수 있을 거에요. 그런데 mySQL에서는 그렇지 않습니다. 2개의 인자만 있는데요. date 2개를 받아서 그 차이를 리턴해 줍니다. DATEDIFF(t1,t2); t1과 t2의 차이를 리턴해 줍니다. t1이 더 이전의 날짜라면, 0, 또는 음수 값이 리턴됩니다. 예제를 몇 개 보고, 실제 sakila 데이터 베이스에서 어떻게 적용할 수 있는지 보도록 하겠습니다. 먼저 아래 쿼리를 작성해 보겠습니다. 2010/8/25와 2011/8/25의 차이를 알고 싶어요. 그런데, 2011년은..
동적 할당을 할 때, 자주 쓰는 함수 중 하나는 malloc입니다. 오늘은 이 함수에 대해서 간단하게 알아보고, 1차원, 2차원 배열을 어떻게 동적 할당하는지 배워보도록 하겠습니다. 할당할 size를 인자로 받고, void형 포인터를 리턴하는데요. malloc가 리턴한 결과값에 적절하게 형변환을 해야 한다는 것을 의미해요. 이것만 보시면, 무슨 이야기인지 잘 모르실 듯 싶어서, 1차원 배열을 dynamic allocate 하는 걸 예로 들어보도록 하겠습니다. 먼저 아래 프로그램을 보겠습니다. 되게 어려운 것 같지만, 사실 5번째 줄이 핵심입니다. 저는 sizeof(int)에 5를 곱한 것 만큼 공간을 할당했는데요. 이는 5개짜리 int형 자료를 저장할 수 있는 space를 할당했다는 의미입니다. 그러면 ..
DATETIME, TIME의 차이를 계산할 수 있는 방법이 없을까요? mysql에는 timediff 함수가 있습니다. 이것은 2개의 datetime/time의 차이를 time 자료형으로 리턴해 주는 함수입니다. 당연하게도, 2개의 자료형은 같아야 합니다. timediff(T1,T2); T1과 T2의 차이를 돌려줍니다. 만약에 T1보다 T2가 더 나중에 있는 시간이라면 -hh:mm:ss를 돌려줍니다. 먼저 아래 쿼리를 봅시다. 이것은 time형 2개를 받았습니다. T1이 2시 3분 4초, T2가 2시 3분 2초입니다. T1이 T2보다 나중에 있는 시간이므로, 결과 값에 -가 붙지 않습니다. T1이 T2보다 얼만큼 나중에 있나요? 2초만큼 나중에 있습니다. 따라서, 00:00:02가 출력이 됩니다. 출력에 ..
이번 시간에는 명령행 인자인, argc와 argv를 해 보도록 하겠습니다. 사실, 이것이 무엇인지 생소할 수도 있습니다. 아래 ls 명령어를 봅시다. Linux에서 ls는 디렉토리에 있는 파일들에 대한 정보를 출력해 주는 명령어인데요. ls 명령어를 썼는데, 여기서 -a라는 옵션을 추가로 주었어요. 즉, 실행 파일을 실행할 때 옵션을 추가로 받을 수 있다는 의미입니다. 오늘은 이것들을 가지고 간단하게 놀아보도록 하겠습니다. 먼저, 다음과 같이 실행을 했다고 생각해 봅시다. 초록색으로 칠한 것은 실행 파일 명입니다. work를 실행을 한 것입니다. 그리고 보라색으로 칠한 것은 옵션을 의미하는데요. 보라색의 갯수는 5개임을 알 수 있습니다. argc는, 이 보라색의 갯수 + 1과 같습니다. 실행 파일명, 명..
최근댓글