티스토리 뷰

 

 

 

▶▶   SELECT 구문

  • 데이터를 조회할 때 사용하는 문법.
  • SELECT절 다음에 FROM절이 옴.
  • SELECT절에는 출력을 원하는 컬럼의 목록, FROM절에는 해당 데이터가 저장된 테이블의 이름을 작성.
  • 줄바꿈은 필수는 아니지만 보통 코드의 가독성을 위해서 절단위로 줄바꿈 함.
  • 구문의 끝은 항상 ; 세미콜론으로 마무리함.

 

1.   SELECT    :  테이블의 구조에서 출력할 컬럼, 포현식의 목록을 작성하는 절.
2.   FROM       :  데이터를 조회할 테이블을 정하는 키워드.
                           어떤 테이블에서 어떤 컬럼을 조회할지 정함.

   키워드 + 요소 → 절
       ex)  SELECT + 컬럼의 목록  →  SELECT절
              FROM + 테이블명            FROM절

  절 + 절 → 구문
       ex)  SELECT절 + FROM절     SELECT구문


EX1   )

mysql> SELECT employee_id, last_name, salary
    -> FROM employees;
+-------------+-------------+----------+
| employee_id | last_name   | salary   |
+-------------+-------------+----------+
|         100 | King        | 24000.00 |
|         101 | Kochhar     | 17000.00 |
|         102 | De Haan     | 17000.00 |
...
|         205 | Higgins     | 12000.00 |
|         206 | Gietz       |  8300.00 |
+-------------+-------------+----------+
107 rows in set (0.00 sec)

   employees 테이블에서 employee_id, last_name, salary 컬럼값을 가져옴.

 

 

 

EX2   )

mysql> SELECT department_name, department_id,   // 줄바꿈 가능
    -> manager_id, location_id				   
    -> FROM departments;
+----------------------+---------------+------------+-------------+
| department_name      | department_id | manager_id | location_id |
+----------------------+---------------+------------+-------------+
| Administration       |            10 |        200 |        1700 |
| Marketing            |            20 |        201 |        1800 |
| Purchasing           |            30 |        114 |        1700 |
| Human Resources      |            40 |        203 |        2400 |
...
| Recruiting           |           260 |       NULL |        1700 |
| Payroll              |           270 |       NULL |        1700 |
+----------------------+---------------+------------+-------------+
27 rows in set (0.00 sec)

   테이블의 컬럼 순서와는 상관없이 SELECT절의 컬럼 순서에 맞춰 결과값이 출력됨.

 

 

 

 

 

 

 

 

 

▶   SELECT 절  +  *

–  SELECT절에  *(에스테리스크)기호가 단독으로 사용되면, FROM절 테이블의 모든 컬럼값들을 출력함.

–  숫자는 왼쪽정렬, 문자는 오른쪽정렬.


EX   )

mysql> SELECT * FROM departments;
+---------------+----------------------+------------+-------------+
| department_id | department_name      | manager_id | location_id |	// column값
+---------------+----------------------+------------+-------------+
|            10 | Administration       |        200 |        1700 |	// row & 행
|            20 | Marketing            |        201 |        1800 |	// 한 개의 데이터 = 레코드
...
|           260 | Recruiting           |       NULL |        1700 |
|           270 | Payroll              |       NULL |        1700 |
+---------------+----------------------+------------+-------------+
27 rows in set (0.00 sec)

   SELET절에서 내가 원하는것만 뽑아서 볼 수도 있고, * 사용해서 모두 볼 수도 있음.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

▶▶   표현식 (expression)

–  관계형 데이터베이스에서는 데이터의 정합성을 위해 연산에 사용되는 베이스 컬럼만 테이블에 저장하고,
    이를 활용하여 연산되는 값들은 표현식이나 기타 함수등을 활용하여,

    사용자에게 연산된 결과를 조회때마다 만들어서 돌려줌.
–  표현식은 기본적으로 산수의 사칙연산을 활용한 수식을 사용할 수 있게 해주는 문법.

–  사칙연산의 규칙으로 연산자별 실행하는 우선순위가 다르지만, 괄호로 묶어줌으로써 따로 우위를 정할 수 있음.


EX   )

mysql> SELECT last_name, salary, 12*salary+100
    -> FROM employees;
+-------------+----------+---------------+
| last_name   | salary   | 12*salary+100 |
+-------------+----------+---------------+
| King        | 24000.00 |     288100.00 |
| Kochhar     | 17000.00 |     204100.00 |
| De Haan     | 17000.00 |     204100.00 |
...
| Higgins     | 12000.00 |     144100.00 |
| Gietz       |  8300.00 |      99700.00 |
+-------------+----------+---------------+
107 rows in set (0.00 sec)

→   컬럼명은 기본적으로 문자로 통일함.
→    "12*salary+100" 결과값을 연산해서 만들어줌. (표현식 문법)
→    베이스에 "저장"되어있는걸 꺼내오는게 아니고, 사용자의 요청에 대한 베이스만 꺼내 "그때그때 만들어" 결과값 반환.
       필요에 의해 만들때마다 저장해버리면 나중에 관리 힘듬.



 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

▶▶   null값이란?

–  사용할 수 없는 값, 알려지지 않은 값, 할당받지 못한 값, 모르는 값, 아직 정의되지 않은 값 등...

–  null은 0(zero)나 공백과는 다른 특수한 값, 모든 데이터타입에 사용 가능함.
–  컬럼의 값을 입력하지 않는 경우에 입력되는 논리적인 데이터값.
–  숫자 0, 문자열 ' '과는 전혀 다른 의미의 데이터로 구분해서 봐둘 것.
–  연산하고는 정확성이 떨어져서 안 쓰는게 좋음.
    표현식의 내용과는 상관없이 컬럼들 중 NULL값을 가지고 있는 행이 있는 경우, 해당 행은 결과가 NULL로 출력됨.


EX   )

mysql> SELECT last_name, job_id, salary, commission_pct
    -> FROM employees;
+-------------+------------+----------+----------------+
| last_name   | job_id     | salary   | commission_pct |
+-------------+------------+----------+----------------+
| King        | AD_PRES    | 24000.00 |           NULL |	// 수수료를 받지 않아 채울 값이 없음
| Kochhar     | AD_VP      | 17000.00 |           NULL |
...
| Ozer        | SA_REP     | 11500.00 |           0.25 |	// 수수료값 0.4 = 40%
| Bloom       | SA_REP     | 10000.00 |           0.20 |
| Fox         | SA_REP     |  9600.00 |           0.20 |
...
| Gietz       | AC_ACCOUNT |  8300.00 |           NULL |
+-------------+------------+----------+----------------+
107 rows in set (0.00 sec)




 

 

 

 

 

 

 




 

 

 

 

 

 

 

 

▶▶   Column Alias

–  쿼리 결과를 출력 할 때 컬럼에 임시 별명으로 이름을 바꿔 출력해주는 문법.
–  column alias는 해당 구문이 동작하는 동안에만 유지되는 "임시 별명".

 

 

 

 

 

 

 

 

 

 

▶   사용 방법

1.   컬럼명 AS alias          –  사실상 AS는 특별기능이 없어 생략가능하지만, 비교적 쉬운 구분을 위해 사용.
2.   컬럼명 alias
3.   컬럼명 "Alias"             –  대소문자 구분, 공백, 특수문자 포함 가능, " "(큰따옴표)기호로 묶어서 작성.


EX1   )   컬럼명 AS alias  &  컬럼명 alias 사용

mysql> SELECT last_name AS name, commission_pct comm
    -> FROM employees;
+-------------+------+
| name        | comm |
+-------------+------+
| King        | NULL |
| Kochhar     | NULL |
...
| Higgins     | NULL |
| Gietz       | NULL |
+-------------+------+
107 rows in set (0.00 sec)

 

 

 

EX2 ) 컬럼명 AS "Alias" 사용

mysql> SELECT last_name AS "Name", salary*12 "Annual Salary"
    -> FROM employees;
+-------------+---------------+
| Name        | Annual Salary |
+-------------+---------------+
| King        |     288000.00 |
| Kochhar     |     204000.00 |
...
| Higgins     |     144000.00 |
| Gietz       |      99600.00 |
+-------------+---------------+
107 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
글 보관함