본문 바로가기

MySQL4

[MySQL] 서브 쿼리(하위 질의) 서브 쿼리는 하위 질의라고도 하며 다른 명령문 내의 SELECT 명령문이다.SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);이 예에서 SELECT * FROM t1 ...은 외부 쿼리(또는 외부 문)이고 (SELECT column1 FROM t2)는 서브 쿼리라고 한다. 서브 쿼리는 상당히 깊이 중첩될 수 있으며 항상 괄호 안에 적어야 한다.서브 쿼리의 이점은 다음과 같다.명령문의 각 부분을 격리해서 구조화된 쿼리를 가능하게 한다.복잡한 join이나 union을 대체할 수 있다.많은 사람이 서브 쿼리를 복잡한 join이나 union보다 쉽게 읽을 수 있다.서브 쿼리가 어떤 행이든 반환하면 EXISTS는 TRUE, NOT EXISTS는 FALSE가 된.. 2018. 8. 22.
[MySQL] 테이블 결합하기(JOIN) 여러 개의 테이블을 특정 키로 결합하는 것을 테이블 참조, 조인식이라고 한다.SELECT t1.name, t2.salary FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name;MySQL에서는 JOIN, INNER JOIN, CROSS JOIN은 동일하다. 표준 SQL에서는 ON 구문에서는 INNER JOIN을 사용하고 다른 경우는 CROSS JOIN을 사용한다.ON을 사용해서 결합 조건을 표현할 수 있고 결합에 사용하는 키 이름이 같은 경우 USING 사용해서 표현할 수 있다.SELECT t1.name, t2.salary FROM employee t1 JOIN info t2 USING (name);내부 조인(JOIN, INNER JOIN)은 결.. 2018. 8. 1.
[MySQL] 추출 결과 합치기(UNION) UNION 구문을 사용하면 SELECT로 추출한 결과를 합칠 수 있다.SELECT ... UNION [ALL | DISTINCT] SELECT ...추출한 결과의 자료형은 일치해야 하지만 다를 경우 MySQL이 전체 SELECT 구문에서 추출한 값을 고려해서 결정한다.기본적으로 최종 결과에서 중복된 레코드는 제거됩니다. 필요하진 않지만 DISTINCT 키워드로 명시적으로 중복 제거를 표시할 수 있다.데이터가 많을 경우 중복 제거는 속도에 영향이 있기 때문에 ALL 키워드를 사용해서 중복을 제거하지 않을 수 있다. 2018. 8. 1.
[MySQL] 논리 연산자 우선 순위 MySQL의 WHERE 절에서 논리 연산자인 AND나 OR를 사용하는 경우 AND 연산자 우선 순위가 높기 때문에 무조건 AND가 먼저 처리된다.만약 OR를 먼저 처리하고 싶다면 괄호()를 이용해서 아래와 같이 감싸줘야 한다.SELECT * FROM table1 WHERE (col1=1 OR col2=1) AND col3=1;참고로 MySQL 연산자 우선순위는 아래와 같다.INTERVAL BINARY, COLLATE ! - (unary minus), ~ (unary bit inversion) ^ *, /, DIV, %, MOD -, + & | = (comparison), , >=, >, 2018. 8. 1.