데이터 베이스 함수
1. select문(Query문)
- 데이타를 조회하기 위한 질의문
- 형식] select [distinct] *|컬럼명 [as alias] or 간단한 연산 or 함수 호출
- from 테이블명 [alias],..
- [where 조건]
- [group by 컬럼명, .. [having 조건]]
- [order by 컬럼명 [asc|desc]], ...]
- 질의문 형식에 따른 조건 유무select 형식 mySql 오라클, DB2, ms-sql
[where 조건] x x [group by 컬럼명, .. [having 조건]] o x [order by 컬럼명 [asc desc]], ...] o - database 순서(중요)
from -> where -> group by -> select -> order by
2. select 함수
- 모든 정보 조회
select *
- 인상된 가격 조회from goods;
select gno, brand, price, pricr*1.1 as incPrice
from goods;
- 조건 연산자and or
같음 =, 다름 != <> , >, >=, <, ≤
and or
- 조건 정보 조회
select * from goods
where id ≠ ‘pjh’;
- null의 유무
where cno is null;
where cno is not null;
- distinct 중복값 제거
select distinct con from goods;
- between 범위 검사(단, 작은 값에서 큰 값으로만 조회 가능)
select *
from goods
where price between 5000 and 15000;
- in 열거형 데이터 조회
where 컬럼명 in (값1, 값2);
- like 제공한 조건이 포함된 데이터 조회
_ : 한문자를 대체 % : 문자 길이 상관 없음
where maker like ‘%LG%’
- case ~ when ~ then when에 지정된 조건이 참이면 then이 수행됨
case
when 조건 then 수행할 값, 연산식
when ...
else 주어진 조건이 모두 아닌 경우 수행될 값,
연산식 end
-- 가격이 10000원 미만이면 15%을 가격을 인상하고 10000원 이상은 10% 가격을 인상하시오
select gno, brand, price as "인상 전 가격",
case
when price < 10000 then price *1.15
when price >= 10000 then price *1.1
end as "인상 후 가격"
from goods;
-- 직원 정보를 조회 (직원의 사원번호, 이름, 급여, 커미션 금액을 조회)
-- 단)커미션 금액은 commition을 받는 직원은 0.05증가 안받는 직원은 0.05로 계산한다.
SELECT employee_id, name, salary,
CASE
WHEN commission IS NOT NULL THEN commission + 0.05
ELSE 0.05
END AS calculated_commission -- 계산된 커미션 금액
FROM
employees; -- 테이블 이름 (직원 정보를 담고 있는 테이블로 변경)
- order by : 정렬
기본적으로 오름 차순으로 정렬 한다.
asc : 오름 차순 desc : 내림 차순
형식 : order by 컬럼명 [asc|desc]
3. 내장 함수
- floor()버림 ceiling( ) 올림 round(숫자, 자리수) 반올림
- 테이블 함수 결과만 조회
- Dumy 테이블 (1행 1열)
- 함수의 수행 결과를 조회할 경우에는 select 문을 통해서만 조회 ==> 그래서 함수 결과만 조회할 경우 dual 테이블을 이용해서 조회
- select floor(3.1) , ceil(3.1), round(3.1), round(3.5) from dual;
- 문자열 추출
right( column or 문자열, 추출할 개수) : 오른쪽부터 지정한 개수까지의 문자열을 추출
substring(column or 문자, 시작위치, 개수) or substr(column or 문자, 시작위치, 개수) : 왼쪽의 시작 위치 부터 지정한 개수만큼 추출 시작 위치는 1부터
- 기타
reverse(): 문자열을 거꾸로 표시
lower(): 문자열을 소문자로 변환
upper(): 문자열을 대문자로 변환
length(): 문자열 길이
- 공백 삭제
rtrim(column or 문자) : 오른쪽의 공백 삭제
ltrim(column or 문자) : 왼쪽의 공백 삭제
trim(column or 문자) : 좌우의 공백 삭제
4. 논리 관련 함수
- case when ~ then : ANSI(표준) Query
if(논리식, 참일때, 거짓일 때)
논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다.
select gno, brand, price
,case
when price <10000 then price *1.15
when price >=10000 then price *1.1
end as INC_price
from goods
order by INC_price asc;
- oracle인 경우
decode( 논리식, 참일때,거짓일때)
decode( 논리식, 참일때 ,
논리식, 참일때 ,
논리식, 참일때
.. ,거짓일때)
- null, 대체 정보, 컬럼명
-- 상품번호, 상품명, 분류번호 조회 단, 분류번호가 null인 경우 미분류로 표시
select gno, brand
, if(cno is null, '미분류', cno) as cno
from goods;
ifnull(문자 or column, 대체 정보) null인 경우 대체 정보로 조회됨. oracle인 경우 nv1(), nv12()
5. 날짜 관련 함수
- 날짜 계산
-- 어제 select date_sub(now(), interval 1 day) from dual; -- 한달전 select date_sub(now(), interval 1 month) from dual; -- 내일 select date_add(now(), interval 1 day) from dual;
DATE_ADD(날짜, INTERVAL 기준값) ADDDATE(날짜, INTERVAL 기준값) 날짜에서 기준값 만큼 더한다. DATE_SUB(날짜, INTERVAL 기준값) SUBDATE(날짜, INTERVAL 기준값) 날짜에서 기준값 만큼 뺸다.
기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
- dayofweek 날짜의 주별 일자 출력(일요일(1), 월요일(2),,,토요일(7))
dayofyear 날짜의 년도별 일자 출력
날짜의 년, 월, 일, 시, 분, 초를 반환 YEAR, MONTH, DAYOFMONTH, HOUR, MINUTE, SECOND
elect year(sysdate()), month(sysdate())
,dayofmonth(sysdate())
,hour(sysdate()), minute(sysdate()), second(sysdate())
from dual;
-- 지난 해 정보도 조회된다.
select *
from orders
where month(odate) = month(date_sun(now(), interval 1 month));
- concat: 날짜를 문자열로 반환하여 비교하는 형식
select *
from orders
where concat(year(odate), month(odate))
= concat(year(odate), month(date_sub(now(), interval 1 month)));
- date_format(column, format)
%y : 년 두자리
%Y : 년 네자리
%m : 월 두자리
%d : 일 두자리
%H : 24시간을 베이스로한 시간
%h : 12시간을 베이스로한 시간
%i : 분
%s : 초
select date_format(sysdate(), '%y년 %m월 %d일 - %p %h시 %i분 %s초') as today
from dual;
-- date_format을 이용해서 이번달에 판매된 상품을 조회
select *
from orders
where date_format(now(),'%y%M') = date_format(odate, '%y%m');'LG 유레카 2기_프론트엔드' 카테고리의 다른 글
| [ GITHUB ] Repository 설정 및 PR 실습 예제 (0) | 2025.03.12 |
|---|---|
| [ GITHUB ] 비전공자도 이해할 수 있는 GitHub 핵심 과정 8가지 (1) | 2025.03.11 |
| [ DB ] mybatis, Dao (1) | 2025.03.10 |
| [ DB ] DML문 (0) | 2025.03.04 |
| [ DB ] join 함수 (0) | 2025.02.28 |