중복 제거 구문 

distinct :행들을 전체조회 후 중복여부 판단 후 제거한다.

SELECT DISTINCT ID,NAME
	FROM usertb;

 

 

rownum : 조회된 데이터에 번호를 지정하는 역할을 한다.

                  이 때 정렬값은 rownum에 반영되지 않으므로 서브쿼리를 함께 사용해야한다.

SELECT nn.*,ROWNUM
	FROM (SELECT b.* FROM boardtb b ORDER BY BIDX DESC)nn 
    --역순으로 정렬된 데이터 먼저 만듦
	WHERE rownum <= 5; 
    --위에서 조회된 기준으로 데이터를 자름

 

 

테이블 복제 (백업 테이블을 만들때 많이 사용된다.)

ctas(create table ---- as select)

create table boardtbback as(select * from boardtb);
--이름을 boarddtback으로 변경해서 복제
create table boardtbback2 as(select * from title,content,wdate from boardtb);
--원하는 칼럼만 지정해서 복제가능

 

group by : 데이터들의 그룹을 지을 때 사용 (집계함수와 같이 사용됨)

select addr,count(*) from usertbl group by addr --한 컬럼만 조회가능

addr로 그룹을 짓고 그룹을 행들의 갯수를 센다.

 

 

집계함수(): 조회하고자 하는 칼럼명을 괄호안에 작성

  1. count() : 행의 갯수를 카운트하는 함수
  2. avg() : 평균값을 계산하는 함수
  3. min() : 최소값을 계산하는 함수
  4. max() : 최대값을 계산하는 함수
  5. sum() : 칼럼끼리 연산하는 함수
  6. count(distinct) : 중복데이터는 1으로 센다.

 

 

--buytbl에서 운동화를 산 행의 갯수
select count(*) from buytbl where prodname = '운동화';

--usertbl의 출생년도 평균값을 구함.
select avg(birthYear) from usertbl;

--usertbl의 평균키를 구함.
select avg(height) from usertbl;

--usertbl의 최대키를 구함
select max(height) from usertbl;

--usertbl의 최소키를 구함
select min(height) from usertbl;

--usertbl에서 최대키를 가진 데이터의 userid (조건절의 서브쿼리를 사용한다.)
select userid
	from usertbl
    where height(select max(height) from usertbl);
    
--usertbl에서 최소키를 가진 데이터의 userid
select userid
	from usertbl
    where height(select min(height) from usertbl);
    
 --평균 키보다 큰키를 가지는 user의 userid와 username을 조회하세요
 select userid, username, height, (select avg(height) from usertbl)as avgh
 	from usertbl
    where height > (select avg(height) from usertbl);

평균키보다 큰키를 가지는 데이터 조회

마지막 select문에서  '(select avg(height) from usertbl)as avgh' 는 평균키 값의 칼럼명을 'avgh'로 변경한 것이다.

 

 

having : group by의 조건절 (집계함수가 조건이 되는 경우 having 사용)

--총 구매 금액이 200보다 큰 데이터 조회
select userid, sum(price * amount) --가격과 수량을 곱한 값
	from buytbl
    group by userid
    having sum(price * amount) > 200;--가격과 수량을 곱한 값이 200보다 큰 경우
--usertbl에서 지역별 평균 출생년도가 1980이상인 지역을 구하시오.
select addr, avg(birthYear)
	from usertbl
    group by addr
    having avg(birthYear) > 1980;

 

 

형변환 함수

  1. cast() : 전체 데이터형 변환
  2. to_char() : 문자열 형식으로 변환
  3. to_date() : 날짜 형식으로 변환
  4. to_number() : 숫자형식으로 변환

 

to_char() : 데이터를 원하는 문자 포맷으로 변경할 때 사용

select to_char(sysdate,'yyyy-mm-dd HH:mm:ss')from dual;
--첫번째 값 : 변환하고자하는 숫자값 , 두번째 값 : 변환하고자하는 포맷

to_date() : 문자열 날짜 포맷을 해당 날짜값으로 변경

select to_date ('2022-11-11','yyyy-mm-dd') from dual;

 

to_number() : 문자열 숫자를 실제 숫자로 변경

select to_number('00012340') from dual;

 

cast() : 해당 함수 안에서 변환할 데이터 타입을 명시하는 방법, 모든 데이터타입 사용가능

select cast('2022-11-11', as date) from dual;
--첫번째 값:변환하고자 하는 데이터 , 두번째 값:변환하고자 하는 타입

 

length() : 문자열의 길이를 구하는 함수

select length('안녕하세요') from dual;

 

concat() : 문자열을 이어붙이는 함수(두개의 문자열만 합칠 수 있다.)

select userid, concat(mobile1,mobile2) as mobile from usertbl;

 

여러개의 문자열 이어붙이기

--(010)11111111
SELECT userid, CONCAT(CONCAT(CONCAT('(',mobile1, mobile2),')'),mobile2)AS mobile FROM usertbl;

-- || :여러개의 문자열 이어붙이기
SELECT userid, '('||mobile1||')'|| mobile2 AS mobile FROM usertbl;

 

 

문자열 치환

--replace() : 문자열 치환 - 찾은 문자열을 다른 문자열로 바꿔줌
SELECT REPLACE('java hello java','ja','S') FROM dual; 
--(기준이 되는 문자열 , 찾고자하는 문자열, 치환하고자하는 문자열) (길이는 무관하다)

--translate() : 문자를 기준으로 치환
SELECT translate('java hello java','ja','S') FROM dual; --자릿수대로 치환

'DB' 카테고리의 다른 글

Select3  (0) 2022.11.14
Select2  (2) 2022.11.12
[Oracle]dml . update(데이터 수정) , delete(데이터 삭제) , select(데이터 조회)  (0) 2022.11.09
[Oracle] ddl, dml, dcl 종류  (0) 2022.11.07
oracle 계정생성  (0) 2022.11.05

+ Recent posts