본문 바로가기

분류 전체보기502

[Oracle] SQL 명령어들 - DML (insert, update, delete) 💡 - DML (Data Manipulation Language) : INSERT(입력) , UPDATE(변경) , DELETE(삭제) , MERGE(병합) - DDL (Data Definition Language) : CREATE (생성) , ALTER (수정) , TRUNCATE (잘라내기) ,DROP (삭제) - DCL (Data Control Language) : GRANT (권한 주기) , REVOKE (권한 뺏기) - TCL (Transaction Control Language): COMMIT (확정) , ROLLBACK (취소) - SELECT : 어떤 분류에서는 DQL (Data Query Language) 라고도 한다. DML : Data Manipulation Language. 데이터 .. 2023. 4. 14.
[Oracle] Sub Query sub query : select 구문 내부에 존재하는 select 구문 💡 Sub Query 작성 시 주의 사항 Sub Query부분은 Where 절에 연산자 오른쪽에 위치해야 하며 반드시 괄호로 묶어야 한다. 특별한 경우 (Top-n 분석 등)를 제외하고는 Sub Query 절에 Order by 절이 올 수 없다. 단일 행 Sub Query 와 다중 행 Sub Query 에 따라 연산자를 잘 선택해야 합니다. 메인쿼리의 from 절에 있는 테이블의 칼럼명은 서브쿼리 내에서 사용 될 수 있으나 서브쿼리의 from 절에 있는 테이블의 칼럼명은 메인쿼리에서 사용할 수 없다. 💡 sub query 위치 1. where 조건문 2. having 조건문 3. 컬럼부분 : 스칼라 서브쿼리 4. from 구문 : .. 2023. 4. 14.
[Oracle] 비등가 조인(non equi join), 아우터 조인(outer join) 3. 비등가 조인 .(non equi join) : 조인 컬럼의 조건이 = 이 아닌 조인 예시 : 고객테이블과 상품테이블을 이용하여, 고객의 포인트로 받을 수 있는 상품을 조회하기. 고객의 이름, 포인트, 상품명을 조회하기. -- 오라클 방식 select g1.gname, g1.point, g2.gname from gogak g1,gift g2 where g1.point between g2.g_start and g2.g_end; -- ansi 방식 select g1.gname, g1.point, g2.gname from gogak g1 join gift g2 on g1.point between g2.g_start and g2.g_end; 문제 : 1. 학생의 이름, 점수, 학점 조회하기. -- 오라클 방.. 2023. 4. 14.
[Oracle] 카티션곱(cross join), 등가 조인(equi jion) 1. cross join (카티션 곱) : 두개의 테이블의 모든 레코드의 곱의 개수로 레코드 조회 됨. : 조회 되는 레코드 개수가 두 테이블의 레코드의 곱 이 므로 사용 시 주의함. : 테이블 명을 별명으로 지정할 수 있다. 사용 시 주의. : 절대 사용하지 말자. but 테스트 데이터를 강제로 만들 때에는 자주 사용함. -- 오라클 방식 select e.ename , d.dname 2 from emp e, dept d ; -- ansi 방식. select e.ename , d.dname 2 from emp e cross join dept d ; 2023. 4. 14.
[Oracle] SQL 복수행 함수(그룹함수) - rownum, rowid 오라클 예약어 오라클 예약어 - rownum : 레코드 조회 순서. 1 부터 읽을 수 있다.(where 절에 의하여 정해진 순차적인 번호) order by 구문 이전에 미리 설정됨. order by 구문으로 값 변경 되지 않음. 그룹 함수에서 사용 불가. - rowid : 레코드를 구분 할 수 있는 고유의 id.(모든 row에 유일한 번호다.) rowid가 다른 경우는 다른 레코드임. 예시 : 학생의 정보를 5건만 조회하기. select *from student where rownum 5 - rownum 특징 : 1번을 읽어야 2,3,4...를 읽을 수 있음. 문제 : 1. 학생의 이름,학년,레코드 순서를 조회하기. 학생의 이름순으로 정렬. select name,grade,rownum from student order.. 2023. 4. 14.
[Oracle] SQL 복수행 함수(그룹함수) - having, group by Having : 그룹 함수의 조건문 그룹 함수에서는 where 구문을 사용 할 수 없음. 이때 대신 사용하는 구분이 having 구문이다. 오류 ORA-00934 : 그룹 함수는 허가되지 않습니다. 예시 : 학년별 학생 중 가장 큰 학생의 키와 가장 작은 학생의 키, 평균키를 조회하기. 평균키가 170이상인 학년만 조회하기. select grade, max(height),min(height),avg(height) from student group by grade having avg(height)>= 170 order by 1; 문제 : 1. 학생테이블에서 전화번호의 지역번호 기준으로 학생 수 출력하기. 학생 수가 3명 이상인 지역 조회하기. select substr(tel,1,instr(tel,')')-.. 2023. 4. 14.
[Oracle] SQL 복수행 함수(그룹함수) - max(), min(), stddev(), variance() 4) max(), min() : 최대값, 최소값 예시 : 학생 중 가장 키가 큰 학생의 키와, 가장 작은 학생의 키, 평균 키 조회하기. select max(height),min(height),avg(height) from student; 속도와 성능 부분에서 문제가 될 수 있으므로 인덱스를 활용하는 방법을 사용 할 것을 적극 권장함 5) stddev() : 표준편차 함수 6) variance() : 분산함수 예시 : 학생의 키편차,체중편차,키분산,체중분산을 조회하기. select stddev(height) 키편차, stddev(weight) 체중편차, variance(height) 키분산, variance(weight) 체중분산 from student; 2023. 4. 14.
[Oracle] SQL 복수행 함수(그룹함수) - count 함수, sum함수, avg함수 1) count() : 입력되는 데이터의 총 건수를 반환. count(*) : null 값을 포함한 결과 count(comm) : null 값을 제외한 결과 예시 : 교수 테이블에서 교수전체의 인원수와 교수중 보너스 받는 교수의 인원수 조회하기. count(bonus) : bonus 컬럼의 값이 null이 아닌 레코드 갯수 select count(*) 전체인원수, count(bonus) "보너스를 받는 인원수", count(*)-count(bonus) "보너스 없는 인원수" from professor; select * from professor where bonus is null; 문제 : 1. 학생의 전체인원수와 지도교수가 배정된 인원수, 지도교수가 없는 인원수 조회하기. select count(*) .. 2023. 4. 14.