일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 버튼
- springboot
- Oracle
- Spring
- jsp
- 필터체인
- EL태그
- jsp 내부객체
- 면접
- 폼태그
- 마이바티스
- 깃허브 간단요약
- 깃허브
- jstl
- 오라클
- 셋업
- 제이쿼리
- 설정
- 알고리즘
- 자바
- SESSION
- 스프링
- MySQL
- 설치
- 이클립스
- html
- Eclipse
- java
- 자바스크립트
- jquery
- Today
- Total
은은하게 코드 뿌시기
기본 구문 본문
-- 오라클기반
SELECT 열1,열2,....열N FROM 테이블, 테이블2 WHERE 조건식 GROUP BY 그룹식 HAVING 그룹조건식 ORDER BY 정렬식 |
* SELECT : 데이터 조회
SELECT * FROM 테이블명;
SELECT 조회할열 FROM 테이블명;
select * from emp;
select empno, ename, deptno from emp;
*DISTINCT :열 중복제거
select distinct deptno from emp;
select distinct job, deptno from emp;
* as : 별칭쓰기
select avg(sal) as 평균연봉 from emp;
select Ename as 사원명 , (SAl*0.05) as 세금
from scott.emp;
*order by , 오름차순(asc), 내림차순(desc) : 정렬하기
select * from emp
order by sal desc , ename asc;
-- 부서번호 기준으로 내림차순으로 정렬하되 부서번호가 같다면 사원이름을 기준으로 오름차순으로 정렬
select EMPNO AS EMPLOYEE_NO,
ENAME AS EMPLOYEE_NAME,
JOB,
MGR AS MANAGER,
HIREDATE,
SAL AS SALARY,
COMM AS COMMISSION,
DEPTNO AS DEPARTMENT_NO
from emp
ORDER by DEPTNO desc, ENAME;
*where 절 : db의 if문, 조건절
-- 부서번호가 10인 사원의 사원명, 급여, 부서번호 을 조회
select ENAME, SAL, DEPTNO from emp
where DEPTNO = 10;
*AND/OR연산자 : 여러개 조건식을 사용
-- AND / OR 연산자 이용
-- 급여가 1200 초과, 3500 미만 인 사원 조회
select * from emp
where sal>1200 and sal<3500;
* 연산자 종류 : >,>=,<,<=
* NOT :논리부정 연산자
-- 부서번호 30이 아닌 사원의 사번, 이름 커미션을 조회
select empno, ename, comm, DEPTNO from emp
where not deptno = 30;
기타 같은 방식으로 처리되는 다른 방법들
select empno, ename, comm, DEPTNO from emp
where not deptno in (30);
select empno, ename, comm, DEPTNO from emp
where deptno != 30;
select empno, ename, comm, DEPTNO from emp
where deptno <> 30;
-- 오라클은 됨
-- select empno, ename, comm, DEPTNO from emp
-- where deptno ^= 30;
* in 연산자 : 특정열 데이터값만 조회하고자 할때 사용.
-- 커미션이 300, 500, 1400인 사원을 조회
select * from emp
where comm in (300,500,1500);
select * from emp
where comm = 300 or comm = 500 or comm = 1500;
* BETWEEN A AND B 연산자
select * from emp
where sal between 2000 and 3000;
-- 2000~3000 외의 값 응용
select * from emp
where sal not between 2000 and 3000;
* LIKE 연산자 : 일부문자열이 포함된 데이터 조회
-- 사원명이 s자로 시작 하는 사원의 사원 번호와 이름을 조회
select empno, ename from scott.emp
where ename LIKE 'S%'; -- S로 시작하는 이름 검색
-- 사원명이 s자로 끝나는 사원 조회
SELECT * FROM EMP
WHERE ENAME LIKE '%S';
7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | 20 | |
7876 | ADAMS | CLERK | 7788 | 1987-05-23 00:00:00 | 1100 | 20 | |
7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | 30 |
-- 사원명이 S가 포함되는 사원의 전체 조회
select * from scott.emp
where ename LIKE '%S%'; -- S가 포함 된 이름 검색
-- 추가수당이 존재하지 않고 , 상급자가 있고, 직책이 'MANAGER', 'CLERK' 인 사원중에서
-- 사원이름의 두번째글자가 'L'이아닌 사원의 정보
SELECT *
FROM EMP
WHERE COMM IS NULL
AND MGR IS NOT NULL
AND JOB IN ('MANAGER', 'CLERK')
AND ENAME NOT LIKE '_L%';
* GROUP BY절 : 결과값을 원하는 열로 묶어 출력.
-- group by 같은거끼리 묶음.
-- 부서별 평균 월 급여를 구하세용.
select deptno, avg(sal) from emp
group by deptno;
* HAVING절 : GROUP BT절에 조건을 줄떄 사용하는 절
-- having GROUP BY한 결과에 조건을 붙이고 싶을때, 즉 GROUP BY의 WHERE절
-- 부서별 평균 월 급여가 2000 이상
select DEPTNO , avg(sal)
from emp
group by deptno
having avg(sal) >= 2000;
* IS NULL 연산자 :
*null : 현재 무슨값인지 확정되지 않는 상태.
select * from emp
where comm is null;
select * from emp
where comm = null;
* 집합연산자 :
UNION | 합집합, 결과값은 중복제거됨. |
UNION ALL | 합집합, 중복결과값도 제거업싱 모두 출력 |
MINUS | 차집합, 먼저작성한 SELECT문과 결과값에서 다음 SELECT문의 결과값을 차집합 처리합니다. 먼저 작성한 ELECT문의 결과값 중 다음 SELECT문에 존재하지 않는 데이터만 출력됩니다. |
INTERSECT | 교집합,먼저작성한 SELEECT문과 다음 SELET문의 결과 값이 같은데이터만 출력합니다. |
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP
WHERE DEPTNO = 20
AND SAL > 2000
union
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP
WHERE DEPTNO = 30
AND SAL > 2000;
-- 집합연산자 사용하지 않은 방식
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP
WHERE DEPTNO IN (20,30)
AND SAL > 2000;
* 서브쿼리 : 필요한 데이터를 추가로 조회하기 위해 SQL문내부에서 사용하는 SELECT문
-- 존스보다 급여가 높은 사람 조회
select *
from emp
where sal > (select sal
from emp
where ENAME = 'jones');
* EXISTS 연산자 : 서브쿼리의 결과값이 하나 이상 존자해마녀 조건식이TRUE,존재하지않으면 FALSE
select *
from emp
where exists(select dname
from dept
where deptno = 10);
-- 알렌보다 추가수당 많이 받는 사람 조회
select *
from emp
where comm > (select comm
from emp
where ENAME = 'allen');
'Database -Mysql,Oracle' 카테고리의 다른 글
my sql db복사 /스키마 복사/ 테이블 복사/ db이름바꾸기 (0) | 2022.06.29 |
---|---|
MYSQL 문자열 컬럼일때 숫자 정렬 오류 TIP (0) | 2022.06.24 |
MY SQL / ECLIPSE 연결하기 연동 (0) | 2022.06.24 |
DB 기본 용어 간단 요약 (0) | 2022.06.22 |
mysql 외래키 설정하기 (0) | 2022.06.21 |