select문 말고 오랫만에, DDL문을 해 봅시다. 데이터를 삭제하는 명령어는 delete from 하고, drop table이 있는데요. 이 둘이 어떤 차이점이 있는지 간단하게 알아보도록 하겠습니다. 먼저, t2 테이블에 있는 내용을 봅시다. 그러면, a, b, c, d라는 레코드가 있음을 알 수 있어요. 여기에서, delete from AA where BB 명령어는 AA 테이블에 있으면서, BB 조건을 만족하는 레코드를 모두 삭제하라는 의미입니다. 그러면, AA가 t2이고 BB가 str = 'a'인 경우에는 어떨까요? 이 때에는 t2 테이블에서, str 필드가 'a'인 것을 모두 삭제하라는 의미입니다. str 필드가 'a'인 record가 삭제될 겁니다. 그러면 남은 것은 'b', 'c', 'd'일..
코딩 검색 결과
오늘은 간단하게 문자열 리터럴만 올리도록 하겠습니다. "chogahui", "xi" 이런 것들을 우리는 리터럴이라고 합니다. 그러면, 이것들은 어디에 어떻게 저장이 되길래, 이들을 바꾸려고 하면 RTE가 뜰까요? 예제 프로그램 1을 봅시다. 4번째 줄에 보면 "chogahui" 라는 리터럴이 있습니다. 이것을 p가 가리키고 있어요. 그리고 p[0]에 'x'를 넣습니다. 6번째 줄에 p를 출력하는데요. "xhogahui"라는 내용이 출력될 거 같아요. 그런데, Seg fault가 뜹니다. 어떻게 된 걸까요? 이 상황을 다시 그려봅시다. p가 "chogahui"를 가리키고 있어요. 그러면 p[0]은 "chogahui"의 1번째 요소인 'c'일 겁니다. 이것을 'x'로 바꾸는 연산은, 메모리의 어느 영역에 '..
포인터에 const가 붙으면 상당히 헷갈립니다. 이것들은 대체 무엇을 의미하는 것일까요? 먼저 아래와 같이 선언된 것을 봅시다. 이것은 p가 const char형을 가리키는 포인터임을 의미합니다. strcpy나, strcat 등의 인자가 이런 식으로 선언이 많이 되어 있음을 볼 수 있을 거에요. 예를 들면 이런 식입니다. 이는 original data인, 원본 문자열이 변경되면 안 되기 때문이에요. 12번째 줄은, *(ori+1)을 변경하려고 시도하는데요. ori가 const char형을 가리키는 포인터입니다. 이는 변경 불가능한 Read Only data입니다. *(ori+1) 또한, Read Only이고, 이를 변경하려고 하기 때문에, 오류가 발생합니다. const char *pat은, pat이 가리..
아주 옛날에 group by에 대해서 했었습니다. 이것이랑 짝을 맞추는 절이 having 절인데요. 사실 이것이랑 where 절이랑 헷갈리기가 꽤 쉬운 듯 싶습니다. group by는, 어떠한 필드의 값을 기준으로 그룹화를 시키는 것이라고 했습니다. [관련글] [코딩/Sql] - mysql group by 절 : 그룹별로 나눠서 집계한다. 꽤 오래전에 썼던 글이군요. 혹여나, group by 절을 모르신다면 보고 오셔도 좋을 듯 싶습니다. having를 알기 위해서는, 비슷하게 생겨먹은 where 하고, having의 해석 순서를 알 필요가 있습니다. 사실, 더 중요한 건 해석 능력입니다. 국어 영역인 셈입니다. 먼저 테이블의 필드가 이라고 해 봅시다. 이 때, 우리는 가격이 25원 이상인 물건이 2개 ..
오늘은 Java의 객체, 클래스에 대해서 알아보도록 하겠습니다. 돌아 돌아 여기까지 오기는 했는데. OOP의 컨셉을 5 ~ 7편에 걸쳐서 잡도록 하겠습니다. 클래스는 설계도, 객체는 설계도 대로 만들어진 실체로 생각하시면 편한데요. 예제 프로그램을 보면서 이해해 보도록 하겠습니다. 조금 쉬운 예제가 뭐가 있을까요? 자판기를 예로 들어 봅시다. 실제로 자판기는, 물건이 여러 개가 있고, 물건이 없는 경우도 처리를 해야 합니다만. 여기에서는 간단하게, 물건은 셀 수 없을 정도로 너무 많이 있고, 1가지 물건만 판다고 해 봅시다. 그러면 우리는 자판기가 해야 할 일을 2가지로 요약할 수 있을 겁니다. get_item과 put_money 이렇게 2개로요. 그러면 자판기의 상태는 어떻게 표현하면 좋을까요? 일단,..
최근댓글