이번 시간에는 결과를 합집합 하는 sql의 union 연산자에 대해 알아보겠습니다. select 1 As temp를 하면 어떤 값이 나올까요? 1이 나옵니다. 네. 저는 단지 1이라는 값을 선택할 뿐입니다. 그러면, select 2 As temp는 무엇을 의미하나요? 2라는 값을 선택합니다. 이 둘을 union 하면 무엇이 될까요? 아래 쿼리를 작성해 보겠습니다. union 앞 뒤로 괄호로 묶여져 있다는 것을 주목해 보겠습니다. A union B로 묶였다고 했을 때, A는 1을 선택하는 것이였고, B는 2를 선택하는 것이였습니다. 1이라는 결과와 2라는 결과를 union 하면 1과 2가 나올 겁니다. 결과값을 보겠습니다. 1과 2가 나오는군요. 그러면 이런 식으로 작성해도 될까요? union 앞에는 1을..
sql 검색 결과
오늘은 read commit와 repeatable read 격리에 대해서 간단하게 알아보겠습니다. 세션 1에서 다음 쿼리들을 수행할 겁니다. Query1, Query2, Query3을 수행합니다. 다음에 세션 2에서 쿼리 4만 수행합니다. 중요한 것은 Query1과 Query2 사이에 Query4를 수행합니다. 처음에 테이블 t에 들어있는 데이터는 다음과 같습니다. Session 1이 query1까지 수행하고, Session 2가 update를 수행하고 커밋을 했을 때, 다시 t에 있는 내용들을 출력해 보겠습니다. 어? 똑같군요. 이제 세션 1의 t1을 commit를 한 다음에 다시 t에 있는 데이터들을 모두 출력해 보겠습니다. 그제서야 a가 1인 레코드의 b의 값이 10으로 업데이트가 됩니다. 즉, 우..
요새 롯데 자이언츠의 상승세가 무섭습니다. 이번 년도에 가을야구 갈 거 같습니다. 초반부터 야구 이야기를 해서 죄송합니다. group by에서 2개 이상의 속성으로 그룹화를 하고 싶을 때 어떻게 해야 좋을까요? 오늘 그것을 배워보고 응용 문제를 하나 풀어보겠습니다. 쿼리부터 알아보겠습니다. group by 절에 속성(1)부터 속성(n)까지 좌르륵 넣어줍니다. 이는 나누는 기준이 속성(1),...,속성(n)임을 의미합니다. 예를 들어서, 나누는 기준이 년, 분기였다면, 2015년 1분기, 2015년 2분기, 2015년 3분기, 2015년 4분기, ... 등으로 그룹화가 된다는 것입니다. 그리고, 노란색에 나타난 attribute는 select 절에 똑같이 나타나야 합니다. 이것만 보시면 이해가 안 되실 듯..
이 글은 commit과 rollback에 대해서 깊게 들어가지 않습니다. 큰 그림만 그리는 글이니, 심도 있는 글을 원하신다면 다른 (좋은) 글을 보시는 것을 권장합니다. Transaction이란, 작업 단위를 의미합니다. 그러면, 작업을 했을 때, 성공적으로 수행이 된 경우가 있고, 실패가 된 경우가 있을 겁니다. 이 때 어떻게 처리해야 할까요? 이전에 제가 Thread에서 stop을 호출하는 게 왜 위험할까요? 라는 질문을 한 적이 있었습니다. 그에 대한 답은 절반만 수행된 상태가 나타나기 때문입니다. 원소가 삭제는 되었는데, 크기가 바뀌지 않은 경우가 그 예입니다. 이것을 데이터베이스의 '작업'에도 적용을 시켜 보겠습니다. school 데이터 베이스의 takes 릴레이션에서 ID가 1000이고, 수..
db 교과서를 보니, 이런 문제가 나왔습니다. 왜 null 값이 도입되었을까? 사실 필요가 없어서, 도입되지는 않았을 겁니다. 몇 가지 상황에 대한 예를 들어보겠습니다. 농수산물에 대한 데이터 베이스가 있다고 생각해 보겠습니다. 테이블 하나만 고려해 보겠습니다. 각각 카데고리, 생산품의 고유 id, 생산자의 id를 의미합니다. 물론, 이것이 정보의 다는 아닙니다. 각 카데고리 id별로 어떠한 품목인지 저장하고 있는 테이블이 있을 겁니다. 그리고, product_id별로, 해당 상품의 이름을 저장하는 테이블도 있을 겁니다. 그리고, 생산자의 id와 생산자에 대한 정보를 저장하는 테이블 또한 있을 겁니다. 여기에서는 그냥 간단하게 이것 하나만 고려해 보도록 하겠습니다. 농수산물 p를 생산했지만, 누가 생산했..
최근댓글