본문 바로가기

자바스프링웹공부(2024)/마이에스큐엘

2024.07.31. MySQL SELECT(조회) - 1

반응형

* 논리 연산자 우선순위 

- AND 가 OR보다 우선순위가 높다.

- 우선순위를 지정하고 싶으면 괄호를 사용한다.

ex. AND 가 OR보다 우선순위가 높은 예.

select *
from products
where company = 'LG' OR company ='삼성' and price <= 300;

-- < 결과 >
-- 30 세탁기    300   2020-03-10   LG
-- 40 TV        280   2021-09-30   LG
-- 50 전자렌지  100   2019-06-20   삼성
-- 60 건조기    350   2021-07-09   LG



ex. 괄호로 지정한 예.

select *
from products
where (company = 'LG' OR company ='삼성') and price <= 300;

-- < 결과 >
-- 30 세탁기   300 2020-03-10 LG
-- 40 TV       280 2021-09-30 LG
-- 50 전자렌지 100 2019-06-20 삼성


- order by에서 같은 값이 있으면 저장된 순서대로 출력.
- 테이블구조 조회하기

  : [문법] desc[ribe] 테이블명;

 

 

* null 이란 ?? 

- 모르는 값, 알수없는 값, 아직 정의되지 않은 값, 알려지지 않은 값 등
 <->  '0'은 (숫자)와 '공백'은 (문자)
- 모든 데이터 타입에 사용 가능.

- 산술식에 null 값이 포함되어 있는 경우 결과는 무조건 null이다. 

  ex. 100 +,-,*,/  null = null (모르는 값(=null)을 사칙연산하면 모르는게 당연함)
  ex. 12 * 24000 + null / 7 = null 
- 정렬에서 null 값이 있으면 
  : asc - null 값이  맨위에 출력됨.
  : desc - null 값이  맨아래 출력됨.
   => null 값을 제일 작은 값으로 인식한다.
- Q. null이 아닌 것만 출력해달라. (tip. null은 특수한 값이므로 비교연산자(=, <>)는 안된다. 
[문법] select * from products where make_date    is not null;

* colunm alias 
- [문법3] 컬럼명 [as] "별명" -> 특수문자, 공백 포함 시 (한글 포함) 

select employee_id as "사번", last_name as "이름" , salary "급여",  commission_pct "수당 비율"
from employees;

-- <결과>
사번 이름  급여  수당 비율
170  Fox   9600   0.10
169  Bloom 10000  0.15
168  Ozer  11500  0.20
167  Banda 6200   0.10


* distinct 키워드 : 중복값을 제거하고 출력시켜주는 문법.

- [문법] distinct 컬럼명.

select distinct department_id from employees;

-- <결과>
department_id
  null   -> 신입사원은 아직 부서 배정이 안되었으므로 null 출력
  10
  20
  30


* 기타 문법 
- alias는 큰따옴표 사용.
- mysql은 작은따옴표, 큰따옴표 구분이 없다.  where 절의 '문자', '날짜'는 작은 따옴표를 쓰는 것이 ANSI 표준법.
  ex.  날짜 : 'YYYY-MM-DD'
- mysql은 실제대소문자 값에 대한 대소문자 구분을 하지 않는다. 하지만 mysql만 그렇다.


* 비교연산자 종류 
- 단일행 비교연산자 : : =, >, >=, <, <=, <>, !=
- 추가 비교연산자 : between A AND B , in , like , is null

 

- [비교연산자1] between A AND B
- A이상 B이하의 값을 비교해 주는 연산자로 범위 검색 시 사용됨.

select *
from employees
where salary between 10000 and 20000;
-- where salary >= 10000 and salary <= 20000;  --> 결과는 beetween과 같지만 컬럼을 두번방문해야 함..


- 문자 범위검색 예문

select employee_id, last_name, hire_date, department_id
from employees
where last_name between 'B' and 'K';
-- where last_name between 'Bell' and 'Kochhar'; -- 이름으로도 가능함. 

-- <결과>
employee_id, last_name, hire_date, department_id
	102 	De Haan 	1993-01-13 		90
	103 	Hunold 		1990-01-03 		60
	104 	Ernst 		1991-05-21 		60
	108 	Greenberg 	1994-08-17 		100
반응형