[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