SQL 연산 순서
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- 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('구분자', '문자열', '문자열', '문자열'...)
- 문자열을 특정 구분자로 합칠 때 유용하게 사용할 수 있다.
논리연산자
- NOT : ~ 가 아니다.
- AND : A 그리고 B (둘 다 만족 할 때)
- 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;
'IT_STUDY > SQLD' 카테고리의 다른 글
[ SQLD ] NULL, 정렬, 숫자함수, 문자함수, 날짜함수 (0) | 2024.03.01 |
---|---|
[ SQLD ] ESCAPE / ROWNUM / TOP() (1) | 2024.02.10 |
[ SQLD ] 데이터 모델과 성능 (2) (0) | 2024.02.05 |
[ SQLD ] 데이터 모델과 성능 (1) (1) | 2024.02.05 |
[ SQLD ] 데이터 모델링의 이해 (0) | 2024.02.05 |