📌mysql 클라이언트 접속 명령어
>mysql -u root -p
📌 데이터베이스 목록 조회
>show databases;
📌 데이터베이스 선택
> use hr;
📌 테이블 조회
> show tables;
📌 테이블 구조 조회
> DESCRIBE employees;
📌 모든 컬럼 출력하기
> SELECT *
-> FROM departments;
📌 연산 우선 순위
() > *, / > +, -
📌 NULL
NULL값에 대한 연산의 결과는 표현식의 내용과 상관없이 NULL값이 된다.
📌 Column alias(컬럼 별명)
- alias에는 공백, 특수문자를 포함 할 수 없다.
- AS 키워드는 별도의 추가 기능은 없으며, 생략가능한 키워드이다.
- 대소문자 형태를 그대로 유지해서 결과로 출력한다.
- ""(큰따옴표)로 묶는 경우 공백이나 특수문자를 포함한 alias값을 사용할 수 있다.
📌 DISTINCT(중복값 제거)
- SELECT구문의 출력값에서 중복된 데이터를 제거하여 출력해주는 키워드
- DISTINCT 키워드는 사용 시 SELECT 키워드의 다음 자리에 위치한다.
연습문제 p110.
✔️employees 테이블로부터 employee_id, last_name, job_id, hire_date를 출력하되 컬럼 제목을 각각 Emp #, Employee, Job, Hire Date로 지정하여 출력하시오.
mysql> SELECT employee_id AS "Emp #", last_name Employee, job_id "Job", hire_date AS "Hire Date"
-> FROM employees;
✔️employees 테이블로부터 사원들이 담당하고 있는 업무 리스트를 출력하시오. (업무들의 종류만 나열 요청)
mysql> SELECT DISTINCT job_id
-> FROM employees;
WHERE절(행 조건)
- 조건식을 작성하는 절
- 행을 제한한다
📌 비교연산자
SELECT …
FROM …
WHERE 기준 연산자 조건값
📌부등식의 개념을 활용하는 연산자
= | 같은 값 비교 |
---|---|
!= | 같지 않은 값 비교 |
> | 크다. 초과 |
< | 작다. 미만 |
>= | 크거나 같다. 이상 |
<= | 작거나 같다. 이하 |
📌 문자열 데이터 비교
- 대소문자 상관없이 일치한 값을 인정
📌날짜데이터 비교
- DATE(날짜) - (년,월,일)
- TIME(시간) - (시,분,초)
- DATETIME(날짜시간) - (년,월,일,시,분,초)
📌BETWEEN A AND B
- A, B 사이 구간에 속하는 값을 비교하여 출력해주는 연산자
- A : 구간의 최소값
- B : 구간의 최대값
- 구간의 경계값도 결과에 포함된다.
📌IN 연산자
- IN 연산자는 다중행비교연산자로 여러 조건값을 비교하여 일치하는 값들을 가진 행을 출력해준다.
- 조건값들은 괄호() 기호로 묶어서 작성하며, 조건값의 수는 제한이 없음.
📌LIKE(패턴 비교연산자)
- _ : 임의의 한자리의 문자
- % : 임의의 0~n자리의 문자
✔️last_name의 값이 두번째자리가 'o'인 문자열을 출력.
-> FROM employees
-> WHERE last_name LIKE '_o%';
✔️'A'로 시작하는 last_name을 가진 행의 last_name 컬럼을 출력
-> FROM employees
-> WHERE last_name LIKE 'A%';
✔️'n'으로 끝나는 last_name의 값을 가진 행의 last_name 출력
-> FROM employees
-> WHERE last_name LIKE '%n';
✔️first_name에 'er'을 포함하고 있는 행의 first_name 컬럼을 출력
-> FROM employees
-> WHERE first_name LIKE '%er%';
📌IS NULL
- NULL값은 일반적인 비교연산으로는 비교가 불가능한 값이다.
- NULL값을 비교하기 위해서는 IS NULL과 같은 연산자를 활용해야 한다
📌ANDWHERE A조건 AND B조건
- AND를 끼고 있는 두 조건에 대해서 모두 조건을 만족하는 값을 가진 행을 출력한다.
- 두 조건 중 하나라도 만족하지 않는 경우 결과로 출력되지 않는다.
📌ORA조건 OR B조건
- A 또는 B 두 조건 중 하나 이상을 만족하는 경우 결과로 출력된다.
📌3 이상의 조건 조합하기
- AND나 OR에 대한 조합 횟수 제한은 없다.
- 다만, AND, OR간에 AND가 우선순위가 높아 OR과 함께 조합되는 경우 AND로 묶인 조건들이 먼저 연산이 실행된다.
- AND와 OR이 조합된 조건식들에서 연산 순서의 조정이 필요한 경우 ()괄호를 활용하여 우선순위를 바꿀 수 있다.
📌연산자 우선순위
() > AND > OR
연습문제 p
✔️employees 테이블로부터 2000년도에 입사한 모든 사원의 last\_name과 hire\_date를 출력하시오.
-> FROM employees
-> WHERE hire_date BETWEEN '2000-01-01' AND '2000-12-31';
-> FROM employees
-> WHERE hire_date >= '2000-01-01' AND hire_date <= '2000-12-31';
📌NOT 연산자
기존 연산자 조건에 대한 참/거짓의 결과를 반대로 만들어주는 연산자이다.
ORDER BY절
- 사용자가 정한 정렬 기준과 정렬 방식으로 정렬된 결과를 만들 수 있는 옵션절.
- 쿼리의 가장 마지막 순서에 보통 작성된다.
ORDER BY 정렬기준 [정렬방식]
- 정렬 기준으로는 컬럼, 표현식, 함수 등 여러가지를 사용할 수 있으며, SELECT절에서의 사용 여부와는 상관없이 정할 수 있다.
정렬방식
- 정렬 방식은 생략가능. 생략하는 경우 오름차순 기본 적용
order by절에 위치표기법 사용
- 컬럼 위치표기로 정렬 기준 설정
- 정렬 방식은 생략되었으므로 오름차순이 적용 됨.
mysql> SELECT last_name, job_id, department_id, hire_date -> FROM employees -> ORDER By 3; +-------------+------------+---------------+------------+ | last_name | job_id | department_id | hire_date | +-------------+------------+---------------+------------+ | Grant | SA_REP | NULL | 1999-05-24 | | Whalen | AD_ASST | 10 | 1987-09-17 | | Hartstein | MK_MAN | 20 | 1996-02-17 | ... 107 rows in set (0.00 sec)
부서id로 오름차순 정렬하되, 동일한 부서에 근무하는 직원들의 경우 급여의 내림차순으로 추가 정렬을 실행한다.
mysql> SELECT last_name, department_id, salary
-> FROM employees
-> ORDER BY department_id, salary DESC;
+-------------+---------------+----------+
| last_name | department_id | salary |
+-------------+---------------+----------+
| Grant | NULL | 7000.00 |
| Whalen | 10 | 4400.00 |
| Hartstein | 20 | 13000.00 |
| Fay | 20 | 6000.00 |
| Raphaely | 30 | 11000.00 |
| Khoo | 30 | 3100.00 |
| Baida | 30 | 2900.00 |
| Tobias | 30 | 2800.00 |
| Himuro | 30 | 2600.00 |
| Colmenares | 30 | 2500.00 |
➡️부서id는 오름차순, 연봉은 같은 부서에서만 내림차순
연습문제 p113
✔️employees 테이블로부터 커미션을 받지 않는 모든 사원(where)의 last_name, salary, commission_pct를 출력하되 salary를 기준으로 내림차순(order by) 정렬하시오.
mysql> SELECT last_name, salary, commission_pct
-> FROM employees
-> WHERE commission_pct IS NULL
-> ORDER BY salary DESC;
+-------------+----------+----------------+
| last_name | salary | commission_pct |
+-------------+----------+----------------+
| King | 24000.00 | NULL |
| Kochhar | 17000.00 | NULL |
| De Haan | 17000.00 | NULL |
| Hartstein | 13000.00 | NULL |
...
72 rows in set (0.00 sec)
'DB > MySQL' 카테고리의 다른 글
[Mysql] FOREIGN KEY 옵션에 대해 알아보자 (0) | 2023.12.13 |
---|---|
[Mysql] 예제로 공부하는 트랙잭션 공부 (0) | 2023.10.04 |
DML(Data Manipulation Language / 데이터조작어) (0) | 2023.09.19 |
[Mysql] 서브쿼리 예제문제 (1) | 2023.09.18 |
[Mysql] 인라인뷰, 조건의 쌍비교 방식 (2) | 2023.09.16 |