MySQL - 테이블 조회(SELECT)
SQL의 특징
✔ 대소문자를 구분하지 않는다.
✔ MySQL의 주석 : 한 줄 주석( -- ) | 블록 주석( /* */ )
✔ 열 이름에 별칭(Alias)를 지정할 수 있다.
✔ 식별자(데이터베이스 개체의 이름)를 만들 때의 규칙
📍 a-z, A-Z, 0-9, $, _를 사용할 수 있다.
📍 최대 64자로 제한된다.
📍 예약어를 사용할 수 없다.
📍 공백을 사용하려면 백 틱( ` `)으로 묶어서 사용한다.
SELECT
SELECT에서 가장 기본적으로 사용되는 형태는 아래의 문장이다.
SELECT * FROM (테이블명);
→ 여기에서 *(별표)는 모든 행을 뜻한다.
→ FROM은 지정한 테이블에서 찾는다는 의미이다.
→ (테이블명)의 이름을 가진 테이블을 확인하는 명령어
/* employees 테이블을 조회하시오 */
SELECT * FROM employees
SELECT (속성 1, 속성 2, ...) FROM (테이블명) WHERE (조건식);
→ (조건식)에 의해 해당하는 행을 선택하고 (속성 1, 속성 2, ...)에 의해 열을 선택한다.
/* 사원의 이름과 이메일을 조회하시오 */
SELECT firstName, email FROM employees;
/* officeCode가 1인 직원들의 이름, 이메일, officeCode를 조회하시오 */
SELECT firstName, email, officeCode FROM employees WHERE officeCode = 1;
/* officeCode가 1이 아닌 직원들의 이름, 이메일, officeCode를 조회하시오 */
SELECT firstName, email, officeCode FROM employees WHERE officeCode <> 1;
→ <> : SQL에서 기본적으로 사용하는 '같지 않다'라는 문법
SELECT * FROM (테이블명) WHERE (조건 1) AND (조건 2);
→ (테이블명)의 테이블에서 (조건 1)과 (조건 2)를 모두 만족하는 행의 모든 열을 선택한다.
/* reportsTo 값이 1100이상. officeCode가 1이 아닌 직원들의 이름, 이메일, 직무, reportsTo, officeCode 조회 */
SELECT firstName, email, jopTitle, reportsTo, officeCode
FROM employees
WHERE reportsTo <= 1000 AND officeCode <> 1;
✔ LIKE
: 문자열 내에서 내가 원하는 문자열을 찾는 함수
📍 특정 문자로 시작 : WHERE phone LIKE '555%'; → 555로 시작되면
📍 특정 문자로 끝 : WHERE phone LIKE '%555'; → 555로 끝나면
📍 특정 문자를 포함 : WHERE phone LIKE '%555%'; → 555가 포함되면
SELECT * FROM (테이블명) WHERE (속성 1) LIKE 'A%';
→ (테이블명)의 테이블에서 (속성 1) 중 'A'로 시작하는 값을 가진 행의 모든 열을 선택한다.
/* contactFirstName이 F로 시작하는 고객 정보를 조회 */
SELECT * FROM customers WHERE contactFirstName LIKE 'F%';
SELECT * FROM (테이블명) WHERE (속성 1) LIKE '%A';
→ (테이블명)의 테이블에서 (속성 1) 중 'A'로 끝나는 값을 가진 행의 모든 열을 선택한다.
/* 연락처에 555가 포함되어 있는 고객 정보를 조회 */
SELECT * FROM customers WHERE phone LIKE '%555%';
SELECT * FROM (테이블명) ORDER BY (속성 1) (순서);
→ (테이블명)의 테이블에서 (속성 1)의 (순서)에 따라 모든 열을 출력한다.
⭐ (순서)에는 ASC(오름차순) or DESC(내림차순)을 입력한다. → default 값은 ASC(오름차순)이다.
/* 사원의 정보를 이름 순으로 내림차 정렬하여 조회 */
SELECT * FROM employees ORDER BY firstName DESC;
✔ ALIAS
: 속성에 별명을 주어 접근을 별명 형태로 할 수 있도록 하는 역할(예약어 AS)
⭐ WHERE 절에는 별명을 사용할 수 없는 이유는? WHERE 절이 가장 먼저 실행되기 때문이다.
SELECT (속성 1) AS '별명 1', (속성 2) AS '별명 2' FROM (테이블명);
→ (테이블명)의 테이블에서 (속성 1)은 별명 1이란 이름으로, (속성 2)는 별명 2이라는 이름으로 두 개의 열을 출력한다.
/* 주문 상세 테이블을 사용하여 주문번호, 제품코드, 수량, 단가, 금액(수량*단가)을 조회 */
SELECT orderNumber AS '주문번호', productCode AS '제품코드', quantityOrdered AS '수량', priceEach AS '단가',
(quantityOrdered * price) AS '금액' FROM orderdetails;