DB
2023.02.08
연을
2023. 2. 9. 09:22
728x90
update |
update 테이블명 set 컬럼명1=새값1, ..., 컬럼명n=새값n where 조건식(연산자,표현식); |
<코드>
update student set math_score=90, kor_score=80, eng_score=85 where sname='김민준';
update student set math_score=80, kor_score=85, eng_score=75 where sname='이서연';
update student set math_score=91, kor_score=88, eng_score=98 where sname='이서준';
update student set math_score=75, kor_score=65, eng_score=66 where sname='유서윤';
update student set math_score=70, kor_score=87, eng_score=76 where sname='윤도윤';
update student set math_score=71, kor_score=81, eng_score=83 where sname='김지우';
update student set math_score=73, kor_score=84, eng_score=75 where sname='박예준';
update student set math_score=68, kor_score=86, eng_score=95 where sname='박민서';
update student set math_score=75, kor_score=74, eng_score=82 where sname='정지후';
update student set math_score=85, kor_score=76, eng_score=54 where sname='최수아';
<결과>
========================================================
의사컬럼(pseudo-column) | ||
.nextval | currval | rownum |
호출할때마다 하나씩 증가해서 보여준다. | nextval을 마지막으로 호출한 값을 보여준다. 바뀌지 않음 | 게시물 paging |
switch | case |
switch(조건/표현식){ case 값1: .... break; case 값2: ... break; default: .... } |
case when 조건1/표현식1 then 값1 when 조건2/표현식2 then 값2 else 값n end |
<코드>
select sname, math_score,
case when math_score>=90 then 'A'
when math_score>=80 then 'B'
when math_score>=70 then 'C'
when math_score>=60 then 'D'
when math_score<60 then 'F'
end as grade from student;
<결과>
======================================================
select * | select *(모든 칼럼) or 컬럼명1, ..., 컬럼명n |
from 테이블 명 | from 테이블명 as 별명 |
where 조건문 | 전체 테이블을 볼땐 where이 없을 수 있다. |
<코드>
select employee_id,emp_name,salary from worker where manager_id=100;
<결과>
<코드>
매니저가 사장인 직원이 매니저인 직원의 명단 by using in
select emp_name from worker where manager_id in(201,101,102,114,120,121,122,123,124,145,146,147,148,149);
select emp_name from worker where manager_id in(select employee_id from employees where manager_id=100);
둘다 같은 코드지만 밑에 코드를 더 사용한다.
<결과>
<코드>
월급이 5000불이하인 직원의 사번/이름/월급
select employee_id,emp_name,salary from worker where salary<=5000;
<결과>
<코드>
배송부 직원의 사번,이름,월급 : 둘다 결과가 같은 코드이다.
select employee_id,emp_name,salary from worker where department_id=50;
select employee_id,emp_name,salary from worker
where department_id in(select department_id from departments where department_name='배송부');
<결과>
<코드>
date는 문자열처럼 ' '를 사용한다.
select *from worker where hire_date='98/01/30';
<결과>
<코드>
2000년1월에 입사한 직원의 명단
select emp_name,hire_date from worker where hire_date like '00/01/%';
<결과>
===================================================
내장함수(Build-in)
숫자함수 | ||
ceil | 매개변수 n과 같거나 가장 큰 정수 반환 | |
floor | 매개변수 n과 작거나 가장 큰 정수 반환 | |
round | 소수점 기준(i+1)번 째에서 반올림한 결과 | |
trunc | 반올림을 하지 않고 소수점 기준으로 잘라낸 결과 | |
power | 제곱한 결과 | |
sqrt | 제곱근 반환 | |
remainder | a를 b로 나눈 나머지 값 반환 :a-b*round(a/b) | |
mod | a를 b로 나눈 나머지 값 반환 : a-b*floor(a/b) |
<코드>
select ceil(3.14),floor(3.14) from dual;
select round(3.54),trunc(3.99) from dual;
select power(5,3) from dual;
select sqrt(16) from dual;
select sqrt(144) from dual;
select remainder(19,4),mod(19,4) from dual;
<결과>
select ceil(3.14),floor(3.14) from dual; | ![]() |
select round(3.54),trunc(3.99) from dual; | ![]() |
select power(5,3) from dual; | ![]() |
select sqrt(16) from dual; | ![]() |
select remainder(19,4),mod(19,4) from dual; | ![]() |
=====================================================
문자함수 | ||
substr | 시작인덱스 부터 문자열 시작 | substr(문자열/컬럼명, 시작인텍스(1~), 길이) |
replace | 문자열 전체에 있는 공백을 모두 제거 | replace(문자열/컬럼명, 찾을 문자열, 대치할 문자열) |
instr | 문자열에서 찾을 문자열 반환 | 인덱스번호(1~)=instr(문자열/컬럼명,찾을문자열) 못찾으면 0반환 |
instr(str, target, start, nth) | str에서 start부터 시작해서 찾아진 nth번째의 target문자열의 인덱스 | |
length | 문자열 길이 | lenght(str) |
c/c++/java : index = 0~
pascal : index = 1~
-5 | -4 | -3 | -2 | -1 | c/c++/java |
0 | 1 | 2 | 3 | 4 | |
h | e | l | l | o | 문자 |
1 | 2 | 3 | 4 | 5 | pascal |
-5 | -4 | -3 | -2 | -1 |
<substr 코드>
select substr('hello world',2) from dual;
<결과>
<replace 코드>
select replace('hello world',' ','-')from dual;
<결과>
<instr 코드>
select instr(emp_name,'n'),emp_name from employees;
select emp_name from employees where instr(emp_name,'son')>0;
select instr('hello world','l',4,2)from dual;
<결과>
select instr(emp_name,'n'),emp_name from employees; | select emp_name from employees where instr(emp_name,'son')>0; |
![]() |
![]() |
select instr('hello world','l',4,2)from dual; |
![]() |
<length 코드>
select length('hello world')from dual;
select length(emp_name),emp_name from employees;
<결과>
select length('hello world')from dual; | select length(emp_name),emp_name from employees; |
![]() |
![]() |
<코드>
성만 추출하기
select emp_name, substr(emp_name, (instr(emp_name,' '))) from employees;
<결과>
<코드>
이름, 성 따로 추출하기
select emp_name, '['||substr(emp_name,instr(emp_name,' ')+1)||']',
'['||rtrim(substr(emp_name,1,instr(emp_name,' ')))||']' from employees;
<결과>
==================================================
ltirm | 왼쪽 끝에서 제거 | ltrim(문자열/컬럼명,자를문자열) | left trim |
rtrim | 오른쪽 끝에서 제거 | ritim(문자열/컬럼명,자를문자열) | right trim |
lpad | 왼쪽에 해당 문자열 채우기 | lpad(문자열/컬럼명,최대길이,채울문자열) | left padding |
rpad | 오른쪽에 해당 문자열 채우기 | rpad(문자열/컬럼명,최대길이,채울문자열) | right padding |
<코드>
select ltrim('hello world','he')from dual;
select lpad('hello world',15,'x')from dual;
select rpad('hello world',15,'x')from dual;
select '['||ltrim(rtrim(' hello world ',' '))||']' from dual;
<결과>
select ltrim('hello world','he')from dual; | select lpad('hello world',15,'x')from dual; |
![]() |
![]() |
select rpad('hello world',15,'x')from dual; | select '['||ltrim(rtrim(' hello world ',' '))||']' from dual; |
![]() |
![]() |
================================================
날짜함수 |
sysdate |
변환함수 |
to_char |
to_number |
728x90