본문 바로가기

DB/MySQL52

EXISTS 와 IN의 차이 일반적으로 IN 연산자는 특정 TABLE(VIEW) DATA의 ROW값에 따른 다른 TABLE의 데이터를 추출해내고자 할 때 자주 사용되는데, 가끔 IN 연산자를 ROW가 있는지 체크하는 용도로 사용하기도 한다. 그러나, ROW가 존재하는지에 대해서는 EXISTS라는 근사한 연산자를 따로 제공하고 있다. 하지만 EXISTS와 IN은 다른 점이 존재하므로 이에 대해 유의해야 한다. EXISTS는 단지 ROW가 존재하는지만 체크하고 더 이상 수행 되지 않으나, IN은 실제 존재하는 데이터들의 모든 값까지 확인한다. 따라서, EXISTS 연산자가 더 좋은 성능을 보이므로 가능하면 EXISTS를 사용하는 것이 바람직해 보인다. 또 다른 한가지는, JOIN되는 COLUMN에 NULL을 갖는 ROW가 존재한다면 N.. 2012. 3. 13.
서브 쿼리 무엇을 SQL 쿼리라고 하는가? 사전전 의미로 쿼리는 질의인데, DB에 "어떤 어떤 것 주세요~" 라고 요청하는 SQL 절을 쿼리라고 한다. 무엇을 서브 쿼리 라고 하는가? 쿼리 안에 있는 쿼리를 서브 쿼리 라고 한다. 내가 본 시야가 아닌 다른 사람이 본 시야도 같이 참조 하면 더욱 확실해 질 것이다.(이런 여러 시야로 대상을 바라보면, 3D 처럼 구조화 된다. 관련 링크 http://kukuta.tistory.com/128 http://sql.1keydata.com/kr/sql-subquery.php 언제 서브 쿼리가 필요한가? DB에 접근하는 속도를 높이기 위해서, 테이블을 다른 테이블과 관계를 맺어 만든다. 왜냐하면 한 테이블에 많은 정보가 들어 있으면, 속도가 느려지기 때문이다. 이 말은 중복 .. 2012. 3. 13.
SELECT 명령문의 조합 MySQL은 SELECT 명령문과 조합할 수 있는 집합 연산자를 제공한다. UNION UNION ALL UNION의 조합 모든 중복된 행이 최종결과에서 자동적으로 제거된다. 예제) mysql> select stu_no > from attend > union > select sut_no > from fee; UNION을 사용하기 위한 규칙 관련된 모든 선택 블록의 SELECT 절은 열의 수를 동일하게 가져야 한다. 최종 결과를 만들어내는 수식은 서로 비교할 수 있는 자료형이어야 한다. ORDER BY 절은 마지막 선택 블록에서만 지정할 수 있다. 순서화는 모든 중간결과가 결합된 후에 전체 최종 결과에서 수행된다. SELECT 절은 DISTINCT를 가질 수 없다. UNION의 ALL의 조합 중복된 행을 삭.. 2012. 3. 12.
ORDER BY 절 단일 열 정렬 기본 값은 오름차순으로 정렬 > order by stu_no; 내림 차순으로 정렬 > order by stu_no desc; 하나 이상의 행 정렬 어떤 학생의 학번이 FEE 테이블에 한 번 이상 나타날지라도 동일한 학번을 가지는 행이 어덯게 정렬될 것인지 예측 할 수 없다. 따라서 ORDER BY 절에 두 번째 열 명세를 추가함으로써 이러한 문제 해결가능 > order by stu_no asc, fee_pay desc; 수식과 함수의 정렬 수식을 정렬할 수 있는 기능 예제) 교수 테이블에서 임용일자가 1997년 이전인 교수코드와, 교수이름, 임용일자를 교수임용일자 순으로 정렬하라. mysql > select prof_code, prof_name, create_date "임용일자: > fro.. 2012. 3. 12.