TIL 23.08.29

ν™©μ€ν•˜Β·2023λ…„ 8μ›” 28일
0

TIL

λͺ©λ‘ 보기
67/146

πŸ“ŒToday I Learned

였라클

ex08_aggregation_function

2. sum

  • ν•΄λ‹Ή 컬럼의 합을 κ΅¬ν•œλ‹€.
  • number sum(컬럼λͺ…)
  • ν•΄λ‹Ή 컬럼 > μˆ«μžν˜•
SELECT sum(height), sum(weight) FROM tblcomedian;

3. avg()

  • ν•΄λ‹Ή 컬럼의 평균값을 κ΅¬ν•œλ‹€.
  • number avg(컬럼λͺ…)
  • μˆ«μžν˜•λ§Œ 적용 κ°€λŠ₯
SELECT avg(basicpay) FROM tblinsa;

4. max()

  • object max(컬럼λͺ…)
  • μ΅œλŒ“κ°’ λ°˜ν™˜

5. min()

  • object min(컬럼λͺ…)
  • μ΅œμ†Ÿκ°’ λ°˜ν™˜

  • μˆ«μžν˜•, λ¬Έμžν˜•, λ‚ μ§œν˜• λͺ¨λ‘ 적용 κ°€λŠ₯
SELECT max(sudang), min(sudang) FROM tblinsa; 		-- μˆ«μžν˜•
SELECT max(name), min(name) FROM tblinsa; 			-- λ¬Έμžν˜•
SELECT max(ibsadate), min(ibsadate) FROM tblinsa; 	-- λ‚ μ§œν˜•

집계 ν•¨μˆ˜ μ‚¬μš© 주의점!!

  1. 컬럼 λ¦¬μŠ€νŠΈμ—μ„œλŠ” μ§‘κ³„ν•¨μˆ˜μ™€ 일반 μ»¬λŸΌμ„ λ™μ‹œμ— μ‚¬μš©ν•  수 μ—†λ‹€.
  2. whereμ ˆμ—λŠ” 집계 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.
  • 집계 ν•¨μˆ˜(집합), 컬럼(개인)
  • where절 > 개개인(λ ˆμ½”λ“œ)의 데이터λ₯Ό μ ‘κ·Όν•΄μ„œ 쑰건 검색 > 집합값 호좜 λΆˆκ°€λŠ₯

ex09_numerical_function

숫자 ν•¨μˆ˜(= μˆ˜ν•™ ν•¨μˆ˜)

  • Math.xxxx()

round()

  • 반올림 ν•¨μˆ˜
  • number round(컬럼λͺ…): μ •μˆ˜ λ°˜ν™˜
  • number round(컬럼λͺ…, μ†Œμˆ˜ μ΄ν•˜ 자릿수): μ‹€μˆ˜ λ°˜ν™˜

floor(), trunc()

  • μ ˆμ‚­ ν•¨μˆ˜
  • 무쑰건 λ‚΄λ¦Ό ν•¨μˆ˜
  • number floor(컬럼λͺ…): 무쑰건 μ •μˆ˜ λ°˜ν™˜
  • number trunc(컬럼λͺ…): μ •μˆ˜ λ°˜ν™˜
  • number trunc(컬럼λͺ…, μ†Œμˆ˜ μ΄ν•˜ 자릿수): μ‹€μˆ˜ λ°˜ν™˜

ceil()

  • 무쑰건 올림 ν•¨μˆ˜
  • 천μž₯
  • number ceil(컬럼λͺ…)

round(), floor(), ceil() -> 많이 μ“΄λ‹€.

mod()

  • λ‚˜λ¨Έμ§€ ν•¨μˆ˜
  • number mod(ν”Όμ œμˆ˜, 제수)
SELECT round(avg(basicpay)) FROM tblinsa;

SELECT
	3.5678,
	floor(3.5678),
	trunc(3.5678),
	trunc(3.5678, 1)
FROM
	dual;

SELECT
	3.14,
	CEIL(3.14)
FROM
	dual;

SELECT
	10 / 3,
	mod(10, 3) AS λ‚˜λ¨Έμ§€, -- μ •μˆ˜ % μ •μˆ˜
	floor(10/3) AS λͺ« -- μ •μˆ˜ / μ •μˆ˜	
FROM
	dual;

SELECT
	abs(10),
	abs(-10),
	power(2, 2),
	power(2, 3),
	power(2, 4),
	sqrt(4),
	sqrt(9),
	sqrt(16)
FROM
	dual;

ex10_string_function

λ¬Έμžμ—΄ ν•¨μˆ˜

λŒ€μ†Œλ¬Έμž λ³€ν™˜

  • upper(), lower(), initcap()
  • varchar2 upper(컬럼)
  • varchar2 lower(컬럼)
  • varchar2 initcap(컬럼) -- 첫 문자λ₯Ό λŒ€λ¬Έμžλ‘œ, λ‚˜λ¨Έμ§€λŠ” μ†Œλ¬Έμžλ‘œ
SELECT
	first_name
FROM
	employees
WHERE
	lower(first_name) LIKE '%an%';

λ¬Έμžμ—΄ μΆ”μΆœ ν•¨μˆ˜

  • substr() > substring()
  • varchar2 substr(컬럼, μ‹œμž‘μœ„μΉ˜, κ°€μ Έμ˜¬ 문자 개수)
  • varchar2 substr(컬럼, μ‹œμž‘μœ„μΉ˜)
-- tblinsa > κΉ€, 이, λ°•, 졜, μ • > 각각 λͺ‡λͺ…?
SELECT
	count(*)
FROM
	tblinsa
WHERE
	substr(name, 1, 1) = 'κΉ€';
    
SELECT
	count(CASE
		WHEN substr(name, 1, 1) = 'κΉ€' THEN 1
	END) AS κΉ€,
	count(CASE
		WHEN substr(name, 1, 1) = '이' THEN 1
	END) AS 이,
	count(CASE
		WHEN substr(name, 1, 1) = 'λ°•' THEN 1
	END) AS λ°•,
	count(CASE
		WHEN substr(name, 1, 1) = '졜' THEN 1
	END) AS 졜,
	count(CASE
		WHEN substr(name, 1, 1) = 'μ •' THEN 1
	END) AS μ •, 
	count(CASE 
		WHEN substr(name, 1, 1) NOT IN ('κΉ€', '이', 'λ°•', '졜', 'μ •') THEN 1 
	END) AS λ‚˜λ¨Έμ§€
FROM
	tblinsa;

λ¬Έμžμ—΄ 길이

  • length()
  • number length(컬럼)

  • 컬럼 리슀트, 쑰건절, 정렬에 μ‚¬μš©λ  수 μžˆλ‹€.

λ¬Έμžμ—΄ 검색(indexOf)

  • instr()
  • κ²€μƒ‰μ–΄μ˜ μœ„μΉ˜ λ°˜ν™˜
  • number instr(컬럼, 검색어)
  • number instr(컬럼, 검색어, μ‹œμž‘μœ„μΉ˜)
  • number instr(컬럼, 검색어, μ‹œμž‘μœ„μΉ˜, -1) // lastIndexOf
  • λͺ»μ°ΎμœΌλ©΄ 0을 λ°˜ν™˜

νŒ¨λ”©

  • lpad(), rpad()
  • left padding, right padding
  • varchar2 lpad(컬럼, 개수, 문자)
  • varchar2 rpad(컬럼, 개수, 문자)

곡백 제거

  • trim(), ltrim(), rtrim()
  • varchar2 trim(컬럼)
  • varchar2 ltrim(컬럼)
  • varchar2 rtrim(컬럼)

λ¬Έμžμ—΄ μΉ˜ν™˜

  • replace()
  • varchar2 replace(컬럼, 찾을 λ¬Έμžμ—΄, λ°”κΏ€ λ¬Έμžμ—΄)

  • regexp_replace()

λ¬Έμžμ—΄ μΉ˜ν™˜

  • decode()
  • replace()와 μœ μ‚¬
  • varchar2 decode(컬럼, 찾을 λ¬Έμžμ—΄, λ°”κΏ€ λ¬Έμžμ—΄, [찾을 λ¬Έμžμ—΄, λ°”κΏ€ λ¬Έμžμ—΄] x N)

ex11_casting_function

ν˜•λ³€ν™˜ ν•¨μˆ˜

  • (int)num

  1. to_char(숫자) : 숫자 > 문자
  2. to_char(λ‚ μ§œ) : λ‚ μ§œ > 문자 μ€‘μš”
  3. to_number(문자) : 문자 > 숫자
  4. to_date(문자) : 문자 > λ‚ μ§œ 쀑

#### 1. to_char(숫자 [, ν˜•μ‹λ¬Έμžμ—΄]) : 숫자 > 문자

ν˜•μ‹ λ¬Έμžμ—΄ κ΅¬μ„±μš”μ†Œ
a. 9: 숫자 1개λ₯Ό 문자 1개둜 λ°”κΎΈλŠ” μ—­ν• . 빈 자리λ₯Ό 슀페이슀둜 μΉ˜ν™˜. > %5d
b. 0: 숫자 1개λ₯Ό 문자 1개둜 λ°”κΎΈλŠ” μ—­ν• . 빈 자리λ₯Ό 0으둜 μΉ˜ν™˜. > %05d
c. $: 톡화 기호 ν‘œν˜„
d. L: 톡화 기호 ν‘œν˜„(Locale)
e. .: μ†Œμˆ«μ 
f. ,: μ²œλ‹¨μœ„ ν‘œκΈ°


2. to_char(λ‚ μ§œ)

  • λ‚ μ§œ > 문자
  • char to_char(컬럼, ν˜•μ‹λ¬Έμžμ—΄)

ν˜•μ‹λ¬Έμžμ—΄ κ΅¬μ„±μš”μ†Œ
a. yyyy
b. yy
c. month
d. mon
e. mm
f. day
g. dy
h. ddd
i. dd
j. d
k. hh
l. hh24
m. mi
n. ss
o. am(pm)

--μ•”κΈ°!!
SELECT
	sysdate,
	to_char(sysdate, 'yyyy-mm-dd'),
	to_char(sysdate, 'hh24:mi:ss'),
	to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
	to_char(sysdate, 'day am hh:mi:ss') --ν™”μš”μΌ μ˜€ν›„ 02:48:13
FROM dual;

3. number to_number(문자)

SELECT '123' * 2, to_number('123') * 2 FROM dual;

4. date to_date(문자, ν˜•μ‹λ¬Έμžμ—΄)

SELECT
	'2023-08-29', -- μžλ£Œν˜•? 문자 vs λ‚ μ§œ
	to_date('2023-08-29'),
	to_date('2023-08-29', 'yyyy-mm-dd'),
	to_date('20230829'),
	to_date('20230829', 'yyyymmdd'),
	to_date('2023/08/29'),
	to_date('2023/08/29', 'yyyy/mm/dd'),
	--to_date('2023λ…„08μ›”29일', 'yyyyλ…„mmμ›”dd일'),
	to_date('2023-08-29 15:28:39', 'yyyy-mm-dd hh24:mi:ss') -- λ°˜λ“œμ‹œ 뒀에 ν˜•μ‹λ¬Έμžλ₯Ό λΆ™μ—¬μ£Όμ–΄μ•Ό ν•œλ‹€.
FROM
	dual;

ex12_datetime_function

λ‚ μ§œ μ‹œκ°„ ν•¨μˆ˜

sysdate

  • ν˜„μž¬ μ‹œμŠ€ν…œμ˜ μ‹œκ°μ„ λ°˜ν™˜
  • Calendar.getInstance()
  • date sysdate

λ‚ μ§œ μ—°μ‚°

  1. μ‹œκ° - μ‹œκ° = μ‹œκ°„
  2. μ‹œκ° + μ‹œκ°„ = μ‹œκ°„
  3. μ‹œκ° - μ‹œκ°„ = μ‹œκ°

μ‹œκ° - μ‹œκ° = μ‹œκ°„(일) > μ‹œ > λΆ„ > 초 ν™˜μ‚° κ°€λŠ₯

					 > 일 > μ›” > λ…„ ν™˜μ‚° λΆˆκ°€λŠ₯
					 

μ‹œκ° + μ‹œκ°„(일) = μ‹œκ° > 일, μ‹œ, λΆ„, 초 κ°€λŠ₯

					 > μ›”, λ…„ λΆˆκ°€λŠ₯

months_between()

  • number months_between(date, date)
  • μ‹œκ° - μ‹œκ° = μ‹œκ°„(μ›”)

add_months()

  • date add_months(date, μ‹œκ°„)
  • μ‹œκ° + μ‹œκ°„(μ›”) = μ‹œκ°

μ‹œκ° - μ‹œκ°
1. 일, μ‹œ, λΆ„, 초 > μ—°μ‚°μž(-)
2. μ›”, λ…„ > month_between()

μ‹œκ° + - μ‹œκ°„
1. 일, μ‹œ, λΆ„, 초 > μ—°μ‚°μž(+, -)
2. μ›”, λ…„ > add_months()

SELECT
	sysdate,
	last_day(sysdate) -- ν•΄λ‹Ή λ‚ μ§œ ν¬ν•¨λœ λ§ˆμ§€λ§‰ λ‚ μ§œ λ°˜ν™˜(ν•΄λ‹Ή 월이 λ©°μΉ κΉŒμ§€?)
FROM
	dual;

ex13_DDL

ex01 ~ ex12: DML κΈ°λ³Έ

DDL

  • 데이터 μ •μ˜μ–΄
  • λ°μ΄ν„°λ² μ΄μŠ€ 객체λ₯Ό 생성/μˆ˜μ •/μ‚­μ œν•œλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€ 객체 > ν…Œμ΄λΈ”, λ·°, 인덱슀, ν”„λ‘œμ‹œμ €, 트리거, μ œμ•½μ‚¬ν•­, μ‹œλ…Έλ‹™ λ“±...
  • CREATE, ALTER, DROP

ν…Œμ΄λΈ” μƒμ„±ν•˜κΈ° > μŠ€ν‚€λ§ˆ μ •μ˜ν•˜κΈ° > 컬럼 μ •μ˜ν•˜κΈ° > 컬럼의 이름, μžλ£Œν˜•, μ œμ•½μ„ μ •μ˜

create table ν…Œμ΄λΈ”λͺ…
(
컬럼 μ •μ˜,
컬럼 μ •μ˜,
컬럼 μ •μ˜,
컬럼 μ •μ˜,
컬럼λͺ… μžλ£Œν˜•(길이),
컬럼λͺ… μžλ£Œν˜•(길이) null μ œμ•½μ‚¬ν•­
);

μ œμ•½ 사항, Constraint

  • ν•΄λ‹Ή μ»¬λŸΌμ— λ“€μ–΄κ°ˆ 데이터(κ°’)에 λŒ€ν•œ 쑰건
    1. 쑰건을 λ§Œμ‘±ν•˜λ©΄ > λŒ€μž…
    2. 쑰건을 λΆˆλ§Œμ‘±ν•˜λ©΄ > μ—λŸ¬ λ°œμƒ
  • μœ νš¨μ„± 검사 도ꡬ
  • 데이터 무결성을 보μž₯ν•˜κΈ° μœ„ν•œ 도ꡬ(***)

1. not null

  • ν•΄λ‹Ή 컬럼이 λ°˜λ“œμ‹œ 값을 κ°€μ Έμ•Ό ν•œλ‹€.
  • ν•΄λ‹Ή μ»¬λŸΌμ— 값이 μ—†μœΌλ©΄ μ—λŸ¬ λ°œμƒ
  • ν•„μˆ˜κ°’

μ œμ•½ 사항을 λ§Œλ“œλŠ” 방법

  1. 컬럼 μˆ˜μ€€μ—μ„œ λ§Œλ“œλŠ” 방법
  • μœ„μ—μ„œ μˆ˜μ—…ν•œ 방법
  • μ»¬λŸΌμ„ μ„ μ–Έν•  λ•Œ μ œμ•½ 사항도 같이 μ„ μ–Έν•˜λŠ” 방법

  1. ν…Œμ΄λΈ” μˆ˜μ€€μ—μ„œ λ§Œλ“œλŠ” 방법
  2. μ™ΈλΆ€μ—μ„œ λ§Œλ“œλŠ” 방법
profile
μ°¨κ·Όμ°¨κ·Ό ν•˜λ‚˜μ”©

0개의 λŒ“κΈ€