티스토리 뷰
▶▶ 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)
→ 공백이나 기타 문자를 포함하는 경우, 문자열들을 " "(큰따옴표) 기호로 묶어서 작성.
작은따옴표도 허용하나 다른 데이터프로그램에선 허용하지 않으니 ""(큰따옴표)로 습관 들이기.
'DB > MySQL' 카테고리의 다른 글
논리 연산자 (AND / OR / NOT) (0) | 2023.02.01 |
---|---|
비교 연산자(between A and B / IN / LIKE / IS NULL) (0) | 2023.02.01 |
WHERE(조건문)절 / 비교 연산자(관계) (0) | 2023.02.01 |
중복된 값을 제거하는 DISTINCT 키워드 (0) | 2023.02.01 |
SQL이란? / mySQL 사용 순서 (0) | 2023.01.25 |
- Total
- Today
- Yesterday
- 출력문
- 숫자형
- 로컬저장소
- Git
- 데이터타입
- Java
- null
- 단일행함수
- DB
- Method
- 매개변수
- JSTL
- 오버라이딩
- 인자
- javascript
- 업캐스팅
- model2
- github
- mysql
- 다형성
- 주석문
- gitbash
- 제어문
- 내장객체
- Object
- jsp
- Dao
- 문자형
- 원격저장소
- 논리형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |