mysql에서 JOIN 연산은 총 4~5편 정도에 걸쳐서 쓸 예정입니다. 사실, 웹 사이트에서 많이 쓸 법한 쿼리라서 그렇다고는 말을 못 하겠어요. 이전에, 카티션 곱에 대해서 이야기를 한 적이 있을 거에요. [관련글] [코딩/Sql] - mysql from : 어느 릴레이션에서 정보를 찾아올까? 쭉 읽어보시면, 중간에 _order.id와 _user.id가 같은 것을 출력하라는 조건문이 들어 왔다는 것을 볼 수 있는데, 이를 자연 조인이라고 이야기 합니다. 그런데, 아래와 같은 상황을 생각해 봅시다. 쇼핑몰 사이트를 구축할 때 꽤 자주 보이는 문제 중에 하나가 될 수도 있을 듯 싶은데요. 어떻게 해야 할까요? 문제 길이가 짧지만, 상황을 간단하게 요약해 봅시다. user table에 있는 레코드들의 집합..
mysql 검색 결과
저번 SQL 함수 시간에 length 함수를 배웠습니다. 무엇이였는지 기억하시나요? string이 몇 바이트를 차지하는지를 돌려주는 함수였습니다. C언어의 strlen과 같이 말입니다. 그러면, character set이 UTF8이였는데, "조가희"라는 것이 있다면, 어떤 결과가 나올까요? 3이 나오는 게 아니라, 9가 나옵니다. UTF8은, 한글 1글자 당 3byte만큼 차지하기 때문입니다. C언어의 strlen과 속성이 같다고 볼 수 있는데요. 이것도 역시, byte 단위로 리턴을 합니다. 실제로 있는 글자의 수가 리턴이 되지 않음을 알 수 있어요. 만약에, "조가희멍멍" 이라는 string을 받았을 때, 글자 수가 리턴이 되었다면 5가 return 되었을 겁니다. 하지만, 5가 아닌 다른 수를 출력..
안녕하세요. 백준 chogahui05입니다. 'A'를 ascii로 표현한다면 1byte로 표현이 됩니다. 그런데, '가'와 같은 것들은 ascii로 표현하지 못합니다. java에서 문자 인코딩 시간에 이야기를 조금 했었습니다. utf-8 인코딩 형식에서는 3byte로 표현이 된다고. utf-16은? 2byte였어요. 실제로, mysql에서 length는 문자열의 byte 크기를 리턴해 주는데요. 예제를 보면서 이해해 보도록 하겠습니다. 먼저 table 2개를 생성하겠습니다. 각각 utf8_table과 utf16_table입니다. utf8mb4는 아래 글에서 충분히 설명을 드렸습니다. [관련글] utf8mb4는 대체 무엇일까요? 이모티콘을 넣을 수 있었던 것이 utf8mb4, 그렇지 않았던 것이 utf8이..
안녕하세요. chogahui05입니다. 문자열을 다루는 함수 중에, left, right, mid 함수가 있습니다. 어디서 많이 들어본 함수 같은데. 사실 엑셀에도 떡하니 있는 함수들입니다. 텍스트를 자른다. 아니면 추출하는 것들로 매우 잘 알려져 있습니다. 물론, LIKE '%~'나, LIKE '~%'의 대용으로도 써먹을 수 있기도 합니다. 먼저 기억해 두셔야 할 것이 있습니다. MYSQL에서, 문자열의 인덱스는 0부터가 아닌, 1부터 시작한다는 것입니다. 헷갈릴 수 있으니, 이것 먼저 기억해 두시는 게 좋겠습니다. 먼저 LEFT입니다. 문자열과, 가장 왼쪽에 있는 것 부터 몇 개나 꺼내올 건지를 받습니다. 말 그대로 왼쪽에서부터 3개를 꺼내오기 때문에, 결과는 'abc'가 리턴이 됩니다. 예를 들어 ..
게시판 헤더 테이블과, 실제 콘텐츠를 담고 있는 테이블 2개가 있다고 생각해 봅시다. 하나는, 글 id랑, 제목, 작성자, 조회수, 작성 날짜를 담고 있습니다. 다른 하나는 글 id와 실제 post 내용을 담고 있습니다. 그러면 게시글을 추가하는 이벤트가 발생했을 때, 헤더 테이블에 추가한 다음에, 콘텐츠를 담고 있는 테이블에 추가를 해야 할 겁니다. 이 때 콘텐츠에 들어가는 글 id랑, 헤더에 들어가는 글 id가 같기 때문에, contents를 가지고 있는 테이블에 추가하기 전에, 추가된 글 번호를 가져와야 합니다. 어떻게 해야 할까요? board_header DDL문입니다. id가 NOT NULL이면서, AUTO_INCREMENT입니다. 그리고 primary key입니다. 그러면, 인덱스가 걸렸다는 ..
최근댓글