티스토리 뷰

 

 

 

 

 

▶▶   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)

   현재 함수를 배우지 않았으므로, 날짜를 문자열로 바꾸어 비교함.
   기준 날짜보다 작은 값, 이전 날짜 값으로 출력됨.

 

 

 

 

 

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함