티스토리 뷰

Programming/DB(MYSQL)

2016.4.25

짜모 2016. 4. 25. 09:19
반응형

select * from employee;

모든 employee 조회


정렬:

select * from employee order by sal;

sal값을 기준으로 정렬(default 오름차순)


select * from employee order by sal desc;

내림차순으로 정렬


upper(ename) 대문자

lower(ename) 소문자

//intcap -오라클엔있음

검색:

우리 DBMS는 대소문자 구분안하도록 되어있음



sysdate() 현재 날짜를 구하는 함수


select sysdate() from dual;

dummy 테이블 생성


문자열의 길이를 알려주는 length함수


오라클에서는 length가 순수한 문자길이 lengthb가 바이트 길이



연결하기





substr(문자열,시작위치,가져올개수) 


시작위치가 음수이면 뒤에서부터!




N으로 끝나는 글자 찾기


select * from employee where substr(ename, -1) = 'N';



그룹함수 : 테이블의 전체 데이터(혹은 특정조건을 만족하는 데이터 집합)에서 통계적인 결과를 구하는 함수들

그룹함수는 하나이상의 행을 그룹으로 묶어 연산하며 하나의 결과를 구함


sum, avg, count, max, min

null값은 연산이 불가하기 때문에 그룹함수 연산에서 제외됨.






select count(job) from employee; 직업 수

select count(distinct job) from employee; 중복되는 직업을 하나로 계산한 직업 수



select max(sal), ename from employee; 

잘못된쿼리(오라클에서는 에러가 나야되는 구문)

(가장높은 월급 금액과 첫번째로 기록된 사람이름이 출력됨)


가장 급여가 큰 친구의 이름을 알고싶으면 서브쿼리를 이용해야함

select ename from employee where sal = (select max(sal) from employee);



데이터 그룹 사용하기

위에서는 그룹함수를 전체 테이블에 대해서 그룹연산을 했음

특정 컬럼을 기준으로 그룹별로 나누는 방법이 있음 (group by절)


select deptno, avg(sal) from employee group by deptno;

deptno를 기준으로 sal의 평균값을 출력


select deptno, sal from employee group by deptno; 

오라클에서는 에러가 나야되는 구문

(deptno가 10,20,30 일때 첫번째 사람이 출력됨)




그룹결과를 제한 having절


select deptno, sum(sal) from employee group by deptno;


select deptno, sum(sal) from employee where sal > 2500 group by deptno;

레코드를 그룹화 하기전에 조건에 따라 걸러내는 것

(deptno를 기준으로 sal이 2500넘는 사람들의 sal합을 기록)

select deptno, sum(sal) from employee group by deptno having sum(sal) > 10000;

그룹화 해서 그룹연산까지 한 후의 결과를 필터링 한 having절




직업이 manager가 아닌 친구들에 대해 직업별로 그루핑해서 직업과 그룹별 레코드수, 그룹별 sal총합을 구하고 

그중에서 sal 총합이 5000보다 작으면 없애고 sum(sal)기준으로 오름차순 정렬



각 직원의 부서이름과 부서위치를 같이 조회하고싶음 -> 두개의 테이블에서 데이터 조회하기(테이블 조인)

select * from 테이블1, 테이블2;





select * from employee, dept where employee.deptno = dept.deptno;

(= select * from employee e , dept d where e.deptno = d.deptno;)

(= select * from employee e join dept d on e.deptno = d. deptno;)

employee의 deptno와 dept의 deptno를 같게만들어 주는 작업




self join

















반응형

'Programming > DB(MYSQL)' 카테고리의 다른 글

2016.4.26  (0) 2016.04.26
2016.4.22  (0) 2016.04.22
2016.4.21  (0) 2016.04.21
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함