상세 컨텐츠

본문 제목

[ SQLD ] SQL 연산 / Alias / CONCAT / IN / LIKE / NOT

IT_STUDY/SQLD

by hyeminyy 2024. 2. 7. 03:42

본문

728x90

SQL 연산 순서

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY
select 컬럼명 --> 전체 열 중 원하는 열만 선택 (열 제어)
from 테이블명
where 조건식; --> 전체 행 중 원하는 행만 선택 (행 제어)

 

DML (데이터 조작어 : Data Manipulation Language)

 -  Select(조회) : 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것이다.

 - Insert(삽입), Update(수정), Delete(삭제) : 데이터베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어

 

DDL (데이터 정의어 : Data Definition Language)

 - Create(생성), Alter(변경), Drop(삭제), Modify(유형) : 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 데이터 구조와 관련된 명령어

 

TCL (트랜잭션 제어어 : Transaction Control Language)

 - Rollback, Commit : 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위 별로 제어하는 명령어

 

DCL (데이터 제어어 : Data Control Language)

 - Grant, Revoke : 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어

 

 

Distinct (중복제거)

 - 어떤 컬럼값들의 중복을 제거한 결과를 출력한다.

 - select distinct 원하는 컬럼 from 테이블명 ; 의 형식으로 사용

select distinct column1, column2 ..
from column_table;

 

예시 )

예시를 돕기 위한 임시 테이블 입니다.

people 테이블에 들어있는 컬럼은 총 4개입니다.

예시를 들기 위해 나이를 출력해봤습니다.

여기서 21,22,22,23 이 나타나는데 22가 중복입니다. 중복을 제거하기 위해서는 distinct를 사용해서 검색해보겠습니다.

distinct를 사용하면 중복의 22가 하나로 나타나게 됩니다.

 

Alias (별칭)

 - Select 절에서 사용가능하며, Where절에서는 사용할 수 없다.

select 별칭1.컬럼1, 별칭1.컬럼2, 별칭1.컬럼3
from 테이블1 as 별칭1

 

 - 장점

  • 컬럼의 소유주가 누구인지 명확하게 인식할 수 있다.
  • 중복된 컬럼명을 갖는 테이블을 JOIN하여도 오류가 발생하지 않는다.
  • 컬럼은 그대로이고 테이블이 변경된 경우(ex. 2023년 매출 테이블 -> 2024년 매출 테이블로 변경) 테이블 명만 변경하고 별칭은 그대로 사용해서 번거로움을 줄일 수 있다.

- 단점

  • 복잡한 SQL문에 대해 각각의 alias까지 숙지해야 하는 번거로움이 있다. (별칭을 잘 지어줘야 한다.)
  • 별칭이 바뀌면 각각의 컬럼에 대해 붙은 별칭을 바꿔줘야 한다.

- *참고

  • Alias는 보통 AS라는 명령을 통해 별칭을 지정하지만, 띄어쓰기만으로도 별칭을 지정할 수 있다. (AS생략 가능)
select 별칭1.컬럼1, 별칭1.컬럼2, 별칭1.컬럼3
from 테이블1 별칭1

 

concat (문자열 합치기)

 - concat 함수는 여러 문자열을 하나로 합쳐주는 역할을 한다.

 - 파라미터를 두 개 이상 사용할 수 있어서 문장을 만들어 출력을 할 수도 있다.

 - 쿼리 출력에 중요한 역할을 하고 있다.

select concat(str1, str2 ..);

 

select
 concat('안녕하세요', '!', 'hyeminyy입니다.')
from 
dual;

=> 안녕하세요 ! hyeminyy입니다.

 

, (콤마) 대신 + (플러스) 사용해도 가능하다.

 

concat_ws 함수 (구분자로 합치기)

select concat_ws (', ', 'SQLD', '2024') as str1
=> SQLD, 2024

 

 - concat_ws('구분자', '문자열', '문자열', '문자열'...)

 - 문자열을 특정 구분자로 합칠 때 유용하게 사용할 수 있다.

 

논리연산자

  1. NOT : ~ 가 아니다.
  2. AND : A 그리고 B (둘 다 만족 할 때)
  3. OR : A 또는 B (둘 중 하나만 만족해도 가능) 

SQL 연산자

BETWEEN ~ AND : 범위, 기간

 - 주로 범위/기간을 제한하여 조건을 걸 때 사용한다.

 - BETWEEN A AND B : A 이상 B 이하와 같다.

 - ex) 사원번호(empno)가 100에서 150에 있는 직원들의 정보 조회

select * from emp where empno between 100 and 150;

 

LIKE : 유사문자열 검색

 - 말 그대로 '비슷한 것 찾아줘' 정도

 - WHERE 절에서 사용한다.

 - LIKE 연산자

 1. % : 길이를 알 수 없는 문자 (0글자, 1글자, 또는 여러 글자도 가능)

 2. _ : 문자 한 개

 - 'A%' : A로 시작하는 모든 문자열

 - 이름이 A로 시작하는 모든 사원

select ename from emp where ename like 'A%';

 

 - '%A' : A로 끝나는 모든 문자열

 - ex) 이름이 N으로 끝나는 모든 사원

select ename from emp where ename like '%N';

 

 - '%A%' : A를 포함하는 모든 문자열 

- ex) 이름에 N이 들어가는 모든 사원

select ename from emp where ename like '%N%';

 

 - '__A%' : 3번째 글자가 A인 모든 문자열

 - ex) 이름 세번째 글자가 A인 모든 사원 

select ename from emp where ename like '__A%';

 

 - '__O__' : 총 5글자. 그 중 3번째 글자가 Odls answkduf

 - ex) 이름이 총 5글자이고, 3번째 글자가 O인 사원

select ename from emp where like '__O__';

 

IN : 포함된 데이터를 가지고 올 때

 - OR이 여러 개일 때 사용한다. (OR을 매번 적기 귀찮을 때, IN으로 한 번에 해결)

select * from emp
where deptno = 10 or deptno = 20 or deptno = 30;
select * from emp
where deptno in (10, 20, 30);

 

NOT (부정 연산자)

 - NOT IN(), NOT BETWEEN ~ AND의 형태로 많이 쓰인다.

 

- NOT IN ex)

select * from emp where sal not in (1500,3000,1600);

 

- NOT BETWEEN ~ AND ex)

select * from emp where empno not between 100 and 150;

 

 

728x90

관련글 더보기