- 3장 - 쿼리 입문2024년 09월 10일
- 31514
- 작성자
- 2024.09.10.:54
처음 MySQL 서버에 로그인하면 다음과 같이 연결 ID(11)를 알 수 있다.
연결 ID는 쿼리가 잘못되어 오류가 발생할 경우 유용하게 사용할 수 있다.
Your MySQL connection id is 11
쿼리가 DBMS로 전송될 때마다 다음 과정을 거친다.
- 이 구문을 실행할 권한이 있는가?
- 원하는 데이터에 엑세스할 수 있는 권한이 있는가?
- 구문의 문법이 정확한가?
위 과정을 모두 거치면 쿼리 옵티마이저로 전달되고, 실행 계획을 선택한다.
SELECT 절에 다음과 같은 항목을 추가할 수 있다.
select language_id, 'COMMON' language_usage, -- 숫자 또는 문자열과 같은 리터럴(literal) language_id * 3.1415927 lang_pi_value, -- 표현식 upper(name) language_name -- 내장 함수 호출 from language;
그리고 사용자 정의 함수(UDF)를 호출할 수 있다.
DISTINCT를 사용하면 내부적으로 테이블의 데이터를 정렬하여 중복을 확인한다.
데이터의 용량이 클 때는 시간이 오래 걸릴 수 있으므로, 먼저 데이터를 이해하는 것이 중요하다.
from 절은 쿼리에 사용되는 테이블을 명시할 뿐만 아니라, 테이블을 서로 연결하는 수단도 함께 정의한다.
파생 테이블 - 서브 쿼리
select concat(cust.last_name, ', ', cust.first_name) full_name from (select first_name, last_name, email from customer where first_name = 'JESSIE' ) cust;
위 코드에서 서브쿼리의 별칭 cust는 쿼리 기간 동안 메모리에 보관되고 삭제된다.
임시 테이블 - 메모리에 저장된 휘발성 데이터
create temporary table actors_j (actor_id smallint(5), first_name varchar(45), last_name varchar(45) );
위 임시 테이블은 보통 트랜잭션이 끝날 때 또는 데이터베이스 세션이 닫힐 때 사라진다.
가상 테이블 - 뷰
create view cust_vw as select customer_id, first_name, last_name, active from customer;
뷰는 데이터 딕셔너리에 저장된 쿼리문이다.
그래서 다음과 같은 코드를 실행하면 쿼리문이 두 번 실행되는 것과 같다.
select customer_id from cust_vw;
where절에서 and 연산자를 사용하면 모든 조건이 true를 충족해야 결과에 포함된다.
그러나 or 연산자를 사용할 때는 조건 중 하나만 true여도 결과에 포함된다.
'Book > Learning SQL' 카테고리의 다른 글
9장 - 서브쿼리 (2) 2024.09.20 8장 - 그룹화와 집계 (0) 2024.09.19 6장 - 집합 연산자 (0) 2024.09.12 4장 - 필터링 (0) 2024.09.11 5장 - 다중 테이블 쿼리 (2) 2024.09.11 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)