티스토리 뷰
▶▶ WHERE(조건문)절
– SELECT 구문에서 사용되는 옵션절.
– 행에 대한 조건식을 작성할 수 있음.
* SELECT절과 WHERE절은 기능상 구분되어 있음
- SELECT절과 WHERE절은 아예 단독으로 사용됨
- 내가 추출하고자하는 데이터에 따라 같은 컬럼일수도 다른 컬럼일수도 있음
EX )
mysql> SELECT last_name, salary, hire_date
-> FROM employees
-> WHERE employee_id = 100;
+-----------+----------+------------+
| last_name | salary | hire_date |
+-----------+----------+------------+
| King | 24000.00 | 1987-06-17 |
+-----------+----------+------------+
1 row in set (0.00 sec)
▶▶ 비교 연산자
– 행을 제한하는 문법.
– 부등식의 개념을 활용, 컬럼의 값과 조건값을 비교하여, 조건을 만족하는 행들을 출력하는 조건식의 작성 방법.
– 기본적으로 비교연산자로 조건식을 작성하는 경우, 조건 컬럼과 조건값의 데이터타입이 일치되도록 작성.
데이터베이스에 따라서 자동 형변환으로 다른 데이터타입간의 비교를 지원하기도 함.
근데 위험도가 높으니까 그냥 같은 데이터타입끼리만 비교하기.
– WHERE + 조건컬럼 + 비교연산자 + 조건값
ex ) WHERE department_id = 90;
= != >= <=
<>
^=
(캐럿+이퀄)
같다 같지않다 크거나 같다 작거나 같다
EX1 ) 비교연산자 사용
mysql> SELECT employee_id, last_name, job_id, department_id // 어떤 컬럼 출력할건지
-> FROM employees // 어떤 테이블인지
-> WHERE department_id = 90; // 어떤 조건을 거는지
+-------------+-----------+---------+---------------+
| employee_id | last_name | job_id | department_id |
+-------------+-----------+---------+---------------+
| 100 | King | AD_PRES | 90 |
| 101 | Kochhar | AD_VP | 90 |
| 102 | De Haan | AD_VP | 90 |
+-------------+-----------+---------+---------------+
3 rows in set (0.00 sec)
→ '='는 비교연산자, 등호(같은 값)
EX2 ) 같은 데이터타입끼리 비교
mysql> SELECT last_name, job_id, department_id
-> FROM employees
-> WHERE last_name = 'Whalen'; // 같은 데이터타입끼리 비교
+-----------+---------+---------------+
| last_name | job_id | department_id |
+-----------+---------+---------------+
| Whalen | AD_ASST | 10 |
+-----------+---------+---------------+
1 row in set (0.00 sec)
→ 'Whalen' = 문자리터럴
→ 데이터타입이 같은 것끼리만 '정확한' 비교 가능 (문자-문자, 숫자-숫자)
last_name data type = varchar, 문자데이터라서 'whalen'과 비교가능.
→ mySQL에서는 문자열의 대소문자 구분을 하지 않음.
(다른 DBMS에서는 구분할 수 있으므로 되도록이면 문자열 대소문자 구분해서 사용)
EX3 ) 날짜 데이터타입
mysql> SELECT last_name, hire_date
-> FROM employees
-> WHERE hire_date = '1996-02-17';
+-----------+------------+
| last_name | hire_date |
+-----------+------------+
| Hartstein | 1996-02-17 |
+-----------+------------+
1 row in set (0.00 sec)
→ mysql입장에서는 hire_data뒤에 알맞은 데이터타입이 와야 하는데 문자데이터가 옴.
근데 보니까 mysql이 해석하기로는 년-월-일 날짜 데이터같음, 그래서 바꿔줌.
→ 날짜데이터의 형식은 국가 설정, DBMS, 접속 도구의 설정에 따라서 달라질 수 있음.
→ 데이터베이스가 알고 있는 날짜 양식의 문자열 데이터로 날짜데이터와 비교를 하는 경우,
데이터베이스에서 임의로 해당 문자열 값을 날짜데이터로 변환하여 결과 비교를 수행해서 출력해줌.
EX4 ) salary의 값이 3000이하인 사원을 출력
mysql> SELECT last_name, salary
-> FROM employees
-> WHERE salary <= 3000;
+-------------+---------+
| last_name | salary |
+-------------+---------+
| Baida | 2900.00 |
| Tobias | 2800.00 |
| Himuro | 2600.00 |
| Colmenares | 2500.00 |
...
| Jones | 2800.00 |
| Feeney | 3000.00 |
| OConnell | 2600.00 |
| Grant | 2600.00 |
+-------------+---------+
26 rows in set (0.01 sec)
▶ 문자열의 대소관계 (영어 사전순)
– 문자열 데이터의 대소관계는 사전순의 규칙을 따름.
– 사전순에서 앞쪽의 문자일수록 작은 값, 뒤쪽의 문자일수록 큰 값이 됨
EX1 )
mysql> SELECT last_name
-> FROM employees
-> WHERE last_name <= 'Baida';
+-----------+
| last_name |
+-----------+
| Austin |
| Baida |
| Atkinson |
| Ande |
| Abel |
| Baer |
+-----------+
6 rows in set (0.00 sec)
→ 영어사전순으로 봤을 때, 'Baida' 글자순보다 작거나 같은 문자열을 출력함.
EX2 )
mysql> SELECT last_name
-> FROM employees
-> WHERE last_name >= 'K';
+-------------+
| last_name |
+-------------+
| King |
| Kochhar |
| Pataballa |
...
| Whalen |
| Mavris |
+-------------+
58 rows in set (0.00 sec)
→ 이름이 'K'인 사람은 없으므로, 같은 값 보다는 'K'보다 큰 값이 출력됨.
▶ 날짜의 대소관계 (이전 < 기준 < 이후)
– 날짜의 대소관계는 이전의 날짜일수록 작고, 이후의 날짜일수록 큰 값을 가짐.
EX )
mysql> SELECT last_name, hire_date
-> FROM employees
-> WHERE hire_date <= '1990-01-03';
+-----------+------------+
| last_name | hire_date |
+-----------+------------+
| King | 1987-06-17 |
| Kochhar | 1989-09-21 |
| Hunold | 1990-01-03 |
| Whalen | 1987-09-17 |
+-----------+------------+
4 rows in set (0.00 sec)
→ 현재 함수를 배우지 않았으므로, 날짜를 문자열로 바꾸어 비교함.
→ 기준 날짜보다 작은 값, 이전 날짜 값으로 출력됨.
'DB > MySQL' 카테고리의 다른 글
논리 연산자 (AND / OR / NOT) (0) | 2023.02.01 |
---|---|
비교 연산자(between A and B / IN / LIKE / IS NULL) (0) | 2023.02.01 |
중복된 값을 제거하는 DISTINCT 키워드 (0) | 2023.02.01 |
SELECT 구문 / 표현식 / null값이란? / Column Alias (0) | 2023.01.31 |
SQL이란? / mySQL 사용 순서 (0) | 2023.01.25 |
- Total
- Today
- Yesterday
- 출력문
- github
- Java
- DB
- 원격저장소
- 로컬저장소
- 숫자형
- 단일행함수
- 내장객체
- jsp
- 매개변수
- Git
- 인자
- 주석문
- 데이터타입
- mysql
- null
- Dao
- javascript
- 문자형
- gitbash
- 오버라이딩
- Object
- 제어문
- 업캐스팅
- 논리형
- Method
- JSTL
- 다형성
- model2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |