[mariaDB] - select 를 사용하여 데이터 조회하기
2024. 9. 1. 16:27ㆍ현대 오토에버 SW 스쿨 - 클라우드/데이터베이스
SMALL
- SELECT 는 DML 중에서도 동시 작업이 가능한 DQL 에 속하는 명령어입니다.
- 데이터를 조회할 때 사용합니다.
💡 SELECT 기본형식
7. SELECT 열 단위 추출
1. FROM 테이블 이름 나열 (2개 이상의 테이블이 나열되면 조인 조건이 추가될 수 있음)
2. WHERE 만들어진 테이블에 조건을 적용해서 행 단위 추출
3. GROUP BY WHERE 절의 결과를 가지고 그룹화
4. HAVING 그룹화 한 이후에 조건을 적용해서 행 단위 추출
5. ORDER BY 데이터 정렬
6. LIMIT 추출하고자 하는 데이터의 행 설정
- select 구문의 일반적인 형식은 위와 같고 앞의 번호는 각 명령어가 실행되는 순서입니다.
- select 를 가장 상단에 작성하지만 실질적으로 마지막 순서로 실행되는 명령어임을 주의해야합니다.
-- 실습
-- tStaff 테이블에서 name, depart, grade 필드를 조회
select name, depart, grade
from tStaff;
- select 절에서 작성한 열이름을 별명처럼 바꿀 수 있습니다.
- 실제로 테이블에 저장된 열이름을 관련자 외에는 의미를 파악하기 힘든 경우
-> 별명을 사용하여 의미 파악을 수월하게 하기 위해 사용하는 경우가 많습니다. - 또한 데이터를 조회하는데 join 또는 계산식을 진행하면서 중복되는 column 이나 보기 힘든 경우 사용합니다.
- 주의할점은 select 절은 마지막 순서로 진행되기 때문
select 절에서 설정한 별명을 아래의 from, wherer 절에 사용하는 경우 적용되지 않습니다. - 형식 :: 테이블의 컬럼명 옆에 공백 + 새로운 이름 || as + 새로운 이름 형식으로 사용가능합니다.
select name as 직원이름
from tStaff;
select name 직원이름
from tStaff;
-- 특수기호가 들어가는 경우 "" 작성 필수
select name "직원이름(영어이름)"
from tStaff;
-- distinct 는 중복을 제거함
select distinct sal
from emp ;
- DISTINCT :: row 단위의 데이터를 추출하는 select 절에서 중복된 데이터를 제거하기 위한 명령어입니다.
- SELECT DISTINCT 를 작성하면 중복되는 row 는 한번만 출력됩니다.
order by
- 출력한 데이터를 순서대로 정렬하여 보기 위한 명령어입니다.
- column 이름을 작성하면 해당 column 을 기준으로 데이터를 정렬하여 보여줍니다.
- 여러개의 column 을 작성 :: 순서대로 1번째 column 값이 같으면 2번째 column 기준 정렬을 진행합니다.
- 일반적으로 오름차순 정렬을 진행합니다.
- 내림차순을 원하는 경우 'order by column명 desc;' 로 작성하면됩니다.
where 조건
- 원하는 row 데이터를 얻기 위해 조건을 설정하는 절로 행을 지정합니다.
- 일반적으로 비교연산자, 논리연산자 등을 사용하며 MySQL, mariaDB 는 대소문자 구분을 하지 않기 때문에 문자열 검색을 할 때 대소문자 상관없이 조건에 일치한 row 는 모두 추출됩니다.
비교연산자 :: =, !=, <>, ^=, <=, >=
논리연산자 :: and, or, not
💡 NULL 비교 연산자 - IS NULL, IS NOT NULL
- a = 10 : 10은 메모리에 저장, a 는 메모리 위치코드를 나타내는 것
- NULL 은 데이터가 없음
- NULL 제약 변경 → 테이블 구조 변경
- NULL 은 깃발처럼 null 인지 아닌지를 확인하는 정보를 저장하기에 == 이 아닌 IS NULL, IS NOT NULL 을 이용해서 비교해야함.
- null 비교하는걸 먼저 작성하여야 에러가 발생하지 않음
와일드 카드
- % : 글자 수 상관없이 아무거나 - 없어도 가능
- _ : 반드시 1글자
- [ 글자나열 ] : 글자 중 하나
- [^글자] : 글자들은 제외하고
-- '천'이 들어가는 도시 정보 추출
SELECT *
FROM tCity
WHERE name LIKE '%천%';
-- % 기호를 사용할 때
WHERE sale LIKE ‘%30#%’ ESCAPE ‘#’;
between - and
- 두 값의 범위 안에 있는 데이터를 추출하는 경우 사용하는 것
:: 성능 측면에서 AND 논리 연산자를 사용하여 값을 찾는 것보다 BETWEEN AND 를 사용하는 것이 순서대로 데이터를 찾는 과정이기에 훨씬 빠릅니다. - 두 값을 작성할 때에는 앞에 작성되는 값이 뒤에 작성되는 값보다 작아야 에러가 발생하지 않습니다.
LIMIT
- 조건에 일치하는 데이터의 개수를 제한하는 예약어
- 일반적으로 정렬을 이용한 뒤 원하는 수만큼의 데이터를 가져오는 방식으로 사용합니다.
- 랭킹, 게시판등을 보여주는데 사용하는 경우가 많습니다.
- ex) 유튜브를 사용할 때 스크롤을 내리면 아래의 영상 정보는 잠시 기다린 후 나타남
-> 이때 사용되는 것이 LIMIT 으로 볼 수 있습니다.
OFFSET FETCH
- oreder by 옵션으로 행의 수를 제한하는 명령어로 LIMIT 와 목적은 유사합니다.
-- between and
select *
from emp
where sal between 100 and 200;
-- limit
select *
from emp
order by sal
limit 0, 5;
-- offset fetch
select *
from emp
oreder by sal offset 0 rows fetch next 4 rows only;
-- limit & offset
SELECT *
FROM tCity
ORDER BY area DESC LIMIT 3
OFFSET 2 ;
Function
- 입력 데이터를 이용해서 연산을 수행한 후 출력 값을 만들어 내는 함수들이 있습니다.
- 매우 다양한 함수가 있어 일반적으로 필요한 때 찾아가며 사용하는 경우가 많습니다.
TRIM 함수
- 공백을 제거하는 함수로 사용자가 입력한 데이터를 받아서 사용하는 경우
-> 공백은 불필요한 정보이지만 데이터를 조회 및 수정하는데 영향을 미치기에 이를 사전에 제거하고 수행하는 것이 좋습니다.
반응형
LIST
'현대 오토에버 SW 스쿨 - 클라우드 > 데이터베이스' 카테고리의 다른 글
[redis] - redis/utm 설치 및 사용법 알아보기 (0) | 2024.09.02 |
---|---|
[RDBMS] - mariaDB Docker 에 설치 후 실행 및 사용 (4) | 2024.09.01 |
[MongoDB] - mongoDB 설치 및 사용 (1) | 2024.08.30 |