select절과 from절은 필수!SELECTFROMWHEREGROUP BYHAVINGORDER BYSELECT : 표시할 열을 식별FROM: 이러한 열을 포함한 테이블을 식별select 컬럼명(콤마(,)로 구분) from 테이블이름 ;\* : all대소문자 구분 X
FROM절 다음에 위치반환되는 행을 제한함selectfromwhere 조건 -> from절의 테이블에서 조건을 작성하여 제한적으로 출력예시문자열 및 날짜 값은 작은따옴표로 묶음문자 값은 대소문자를 구분하고 날짜 값은 형식을 구분기본 날짜 표시 형식: DD-MON-RR검
단일 행 함수 데이터 항목을 조작함 인수를 사용하고 하나의 값을 리턴 리턴되는 각 행에서 실행됨 행당 하나의 결과를 리턴 데이터 유형 수정 가능 중첩 가능 열이나 표현식을 인수로 사용할 수 있음 function namc | (arg1, arg2, ...) | 1.
Oracle 서버에서NUMBER나 DATE는 VARCHAR2 또는 CHAR로 자동으로 변환가능CHAR -> DATE : TO_DATECHAR -> NUMBER : TO_NUMBERDATE -> CHAR : TO_CHARNUMBER -> CHAR : TO_CHARTO_C
5 SELECT : 검색 대상 컬럼(표현식)1 FROM : 검색 대상 집합2 WHERE : 행 제한을 위한 조건식3 GROUP BY : 그룹 생성4 HAVING : 그룹 제한을 위한 조건식6 ORDER BY : 정렬FROM\-> WHERE\-> GROUP BY\-> H
NATURAL JOINUSING절ON절INNER JOINOUTER JOINLEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOINCROSS JOIN두 테이블에서 이름이 같은 모든 열 기반두 테이블에서 대응되는 모든 열의 값이 동일한 행 선택동
서브쿼리는 메인쿼리보다 먼저 실행됨괄호로 묶기single-row subquery --> 단일 행 연산자 사용multiple-row subquery --> 다중 행 연산자 사용💡 서브쿼리 작성 시, single-row인지 multiple-row인지 구분하는 것이 중요!
UNION / UNION ALL: 합집합INTERSECT: 교집합MINUS: 차집합 (순서 중요)SELECT list의 표현식 갯수가 일치해야 함데이터 유형이 일치해야 함ORDER BY절은 명령문 맨 끝에 한번만 올 수 있음중복 행은 UNION ALL 외에는 자동 제거
INSERT(삽입): 테이블에 새 행 추가UPDATE(갱신): 테이블의 기존 행 수정DELETE(삭제): 테이블에서 기존 행 제거트랜잭션 --> 논리적 작업 단위를 형성하는 DML문 모음INSERT INTO table | (column |, column...|) |VA
문자로 시작해야 함ex) emp1은 가능, 1emp는 불가능길이는 1-30자 사이A-Z, a-z (대소문자 구분 x), 특수문자는 \`\_, $, - 같은 테이블 안에서 이름 중복 xOracle 서버 예약어 사용 x짧은 문자: VARCHAR2(), CHAR()긴 문자:
기본테이블유저가 액세스할 수 있는 뷰(view: 데이터를 빠르게 읽고 확인할 수 있는 객체)자신이 소유한 모든 객체를 볼 수 있음유저의 스키마에 있는 모든 객체 이름 및 유형 리스트와 함께 다음 정보를 얻을 수 있음생성된 날짜마지막 수정 날짜상태(valid 또는 inv
다른 유저가 소유한 테이블은 유저의 스키마에 없음소유자의 이름을 접두어로 사용해야 함ex) SELECT \* FROM userA.employees;고유 번호를 자동으로 생성 가능공유할 수 있는 객체Primary key값을 생성하는데 사용 가능응용 프로그램 코드를 대체함
이름을 가지고 있는 select 문장뷰는 실제 데이터를 저장하지 X뷰 생성 시 작성한 구문을 객체에 저장 후 불러옴sub-query = view의 영역데이터 액세스 제한복합 query를 단순화데이터 독립성 제공동일한 데이터의 다른 뷰 제공이 subquery에 복합 SE
무결성: 정확성과 일관성을 유지 및 보증하는 것ALTER TABLE문을 사용하여 다음을 수행제약조건 추가 또는 삭제. 제약조건의 구조는 수정하지 않음제약조건 활성화 또는 비활성화MODIFY절을 사용하여 NOT NULL 제약조건 추가📌 primary key를 참조하고
CREATE SESSIONCREATE TABLECREATE SEQUENCECREATE VIEWCREATE PROCEDUREemployees 테이블에 query 권한 부여특정 열을 갱신할 수 있는 권한을 유저와 역할에 부여유저에게 권한을 전달할 수 있는 자격 부여시스템의
무조건 INSERT ALL조건부 INSERT ALL조건부 INSERT FIRST피벗팅 INSERTinsert all을 사용하면 into절을 하나 이상 쓸 수 있음첫번째 조건에 만족하는 순간, sal_history에 다 들어가고그 행은 mgr_history에는 입력대상으
SYSDATE: 서버가 위치하고 있는 곳의 날짜와 시간을 보여줌만약 내가 있는 위치가 서버의 위치와 다르다면, CURRENT_DATE, CURRENT_TIMESTAMP 및 LOCALTIMESTAMP를 이용CURRENT_DATE유저 세션의 현재 날짜 반환DATE 데이터
세미콜론(;): SQL문을 종료하겠다(문장으로 치면 마침표 역할)
dept 테이블 컬럼deptno: 부서번호dname: 부서명loc: 부서위치별표(\*): asterisk 라고 함. 모든 컬럼을 다 선택하겠다는 뜻
컬럼 별칭을 써서 출력되는 컬럼명을 다르게 출력가능as --> 생략가능만약 컬럼명을 대소문자를 구분해서 출력하려면 더블쿼테이션 마크("") 활용
distinct: 중복 행을 제거하는 키워드
order by 컬럼명 정렬옵션asc가 기본값1\. asc : 오름차순. 낮은값부터 높은값순으로 출력2\. desc : 내림차순. 높은값부터 낮은값순으로 출력order by절에 컬럼명 대신 숫자를 사용할 수 있는데이때, 숫자는 select절의 컬럼 순서실행순서
where 절에는 ‘검색조건’ 을 주고 특정 행들만 선택할 수 있음코딩순서: select —> from —> where 순실행순서: from —> where —> select 순실행순서: from - where - select - order by
💡 문자와 날짜 --> 싱글 쿼테이션 마크(' ') 써주기💡 데이터가 대문자로 저장되어 있으면 대문자로 검색해야하고소문자로 저장되어 있으면 소문자로 검색💡 날짜를 코딩할 때 년/월/일 순서로 잘 작성해줘야 됨
💡 월급 + 커미션을 했을 때 null이 나온 사원들은 커미션이 null 이기 때문null: 데이터가 없는 상태 또는 알 수 없는 값nvl: null 값 대신 다른 값을 출력해라. null value 약어💡nulls first: null 값을 첫번째로 나오게null
예제 답 문제1. emp21 테이블에서 나이가 28살 이상인 학생들의 이름과 나이를 출력하는데 나이가 높은 학생부터 출력하시오. 문제2. 직업이 SALESMAN 이 아닌 사원들의 이름과 월급과 직업을 출력하시오
(1000, 3000 포함)
💡like 와 % 는 서로 짝꿍%: wild card. 이 자리에 무엇이 와도 상관없다. 철자의 갯수가 몇개가 되든 상관없다는 뜻💡 언더바(\_): 이 자리에 무엇이 와도 관계없지만, 자릿수는 한자리여야 됨💡 like 와 같이 사용할 수 있는 키워드 2개1\. 와
sqlplus ced demo.sql\`@demoselect \* from emp;💡 null 은 알 수 없는 값이기 때문에 이퀄(=) 로는 비교할 수 Xnull 값을 비교할때는 is null 로 검색💡 사장은 관리자가 없기 때문에 mgr(관리자 번호)가 없음kin
💡 여러 개의 값을 비교할 때 --> in 사용
산술연산자: + - \* /비교연산자: >, <, >=, <=, =, !=, <>, ^=(!=, <>, ^= 모두 같지 않다는 뜻)논리연산자: and, or, notbetween ..andlikeinis null💡 and는 조건이 전부 true여
값을 입력하면 어떤 처리를 해서 결과를 출력해주는 코드의 모음더 상세하게 데이터 검색을 해내기 위해서단일 행 함수: 하나의 값을 입력해서 하나의 값으로 리턴문자함수: upper, lower, initcap, substr, instr, length, lpad, rpad,
문자열에서 특정 철자부분을 잘라내는 함수💡 dual: 결과값만 보기 위한 가상의 테이블💡 substr(문자열, 잘라낼 첫번째 자리번호, 잘라낼 갯수)예상결과:양O명이O현남O혁...남궁O민
특정 컬럼의 데이터의 철자의 갯수를 세는 함수💡 nulls last: 정렬할 때 null 값을 맨 뒤로 빼겠다nulls first: 정렬할 때 null 값을 맨 앞으로 빼겠다ㄴ order by 절에서만 사용💡 fetch first 숫자 rows only order
컬럼의 데이터에서 특정 철자의 자리번호를 출력하는 함수
특정 철자나 숫자를 다른 철자나 숫자로 변경하는 함수💡 regexp_replaceregular expression의 약어주민등록번호와 같은 개인정보를 암호화 할때 regexp_replace를 활용
💡 월급을 전체를 10자리로 잡고 출력하고나머지 공간에 별표(\*)를 채워넣겠다💡 lpad —> left(왼쪽에) pad(채워넣다)rpad —> right(오른쪽에) pad(채워넣다)💡 출력되는 결과를 변경하지 못하게 막을 때 사용하는데금융권과 제조업에서 많이 사
💡 trim: 양쪽의 문자를 잘라낼때 사용rtrim: 오른쪽의 문자를 잘라낼때 사용ltrim: 왼쪽의 문자를 잘라낼때 사용💡 rtrim( 컬럼명, '잘라낼 철자나 단어')ltrim( 컬럼명, '잘라낼 철자나 단어')💡 이메일 오른쪽에 점(.), 알파벳 c, 알파벳
ex. 5000.123일의 자리: -1십의 자리: -2백의 자리: -3천의 자리: -4소수점 첫째자리: 1소수점 둘째자리: 2소수점 셋째자리: 3
반올림하는게 아니라 그냥 버리는 함수💡 소수점 첫번째 자리는 그대로 두고 그 뒤로 나머지는 버리겠다
예제 답 문제1. 우리반 테이블에서 이름, 나이, 나이를 2로 나눈 나머지값을 출력하시오 문제2. 우리반 테이블에서 이름과 나이를 출력하는데 나이가 홀수인 학생들의 이름과 나이를 출력하시오
날짜와 날짜 사이의 개월 수를 출력하는 함수💡 날짜 연산 3가지날짜 - 날짜 = 숫자날짜 + 숫자 = 날짜날짜 - 숫자 = 날짜💡 months_between(최신날짜, 예전날짜)
더 간편한 날짜 더하는 함수 사용법interval '숫자' yearinterval '숫자' monthinterval '숫자' dayinterval '숫자' hourinterval '숫자' minuteinterval '숫자' second
💡 next_day(특정날짜, '요일'): 특정날짜 뒤에 돌아오는 요일의 날짜 출력
오늘부터 요번달 말일까지는 총 29 일이 남았습니다.
문자형숫자형날짜형to_char : 숫자나 날짜를 문자형으로 형변환하는 함수to_number : 문자를 숫자로 형변환하는 함수to_date : 문자를 날짜로 형변환하는 함수💡 문법: to_char( 날짜, '포멧') \--> 날짜를 문자로 형변환하면서 해당 '포멧' 으
어느 나라에 가든 81년 11월 17일에 입사한 사원의 데이터를 출력하려면다음과 같이 작성해야함
실행됨💡 숫자와 문자 비교 시, 숫자가 우선순위가 높아서문자 -> 숫자로 변환함sal -> 숫자30% -> 문자%를 숫자로 바꿀 수 없기 때문에sal을 문자로 변환 💡 암시적 형변환이 발생하게 되면 SQL의 성능이 느려지게 됨여기서 where sal = '3000'
ㄴ MARTIN에 NVL(COMM,0) 1400임nvl: null value💡 nvl(숫자형 컬럼, 숫자형 데이터)nvl(문자형 컬럼, 문자형 데이터)💡 comm --> 숫자형'no comm' --> 문자형문자를 숫자로 바꿔줄 수는 없으니comm을 to_char(c
부서번호 10번 --> 300 출력부서번호 20번 --> 400 출력나머지 부서번호 --> 0 출력💡 decode --> if문 느낌de -> 디카페인 할 때 decode가 없다는 뜻
이름, 월급, 보너스를 출력하는데 보너스가 월급이 2500 이상이면 900을 출력하고 그렇지 않으면 0 을 출력하시오 💡 decode --> 등호 비교만 가능부등호 비교를 하려면 --> case 문을 이용💡나이가 30살 이상이면 A, 나이가 28살 이상이면 B, 2
💡 group by를 사용해야 그룹핑이 되어서 결과 출력 가능LG U+면 LG 로 나오게하고 나머지 텔레콤은 그냥 텔레콤으로 나오게해라💡 실행순서: from - where - group by - select💡select 검색할 컬럼명from 테이블명whe
예제 답 문제1. 부서번호, 부서번호별 최소월급을 출력하는데 부서번호별 최소월급이 높은것부터 출력하시오 문제2. 위의 결과를 다시 출력하는데 부서번호 20번은 제외하고 출력하시오 문제3. emp21 테이블에서 최소나이를 출력하시오 문제4. emp21 테이블에서 최소나이인 학생의 이름과 나이를 출력하시오 문제5. 입사한 년도(4자리), 입사한 년...
💡 where절에 그룹함수로 검색조건을 줄 수 Xhaving절 사용해야함💡 select문의 6가지 절5 select 검색할 컬럼명1 from 테이블명2 where 검색조건3 group by 그룹핑할 컬럼명4 having 그룹함수를
💡 그룹함수는 null값을 무시하기 때문에아래 결과는 4가 출력됨
💡 rank() over (order by ...)over(): ()안에 있는 것을 확장해서 출력하라💡 dense_rank() over (order by ...): 공동 순위가 있을 때 그 다음 순위를 다음 숫자로 출력ex. 1 - 2 - 2 - 3dense 안쓰면
💡 주로 over를 사용하고위와 같이 괄호안에 어떤 값이 들어갔으면 그때 within group을 사용💡 언제 over를 쓰고 언제 within group을 사용하는가?문법1: dense_rank() over ( order by sal desc )문법2
💡 ntile: 등급을 나누는 함수0~25% : 1 ( 0 < 데이터 <= 25)25 ~50% : 2 ( 25 < 데이터 <= 50)50~75% : 3 ( 50 < 데이터 <= 75)75~100% : 4 ( 75 < 데이터
예제 답
💡 listagg: 가로로 출력하는 함수listagg 함수에는 group by 필수KT 000(25), 000(24), 000(23) ...LG 000(25), 000(24), 000(23) ...SKT 000(25), 000(24), 000(23) ...
📌 LAG: 바로 전 행 출력LEAD: 바로 다음 행 출력ㄴ (asc 안써도 됨)
column을 row로 출력하기💡컬럼별칭 사용시 숫자를 사용하려면반드시 \*\* 더블 쿼테이션 마크(" ") \*\*를 사용해야함오라클 전체를 통틀어서 더블 쿼테이션 마크(" ")를 쓰는 경우는이 경우 밖에 없고, 나머지는 전부 \*\* 싱글 쿼테이션 마크(' ')
💡 여기서 from절에는 emp만 쓰면 안되고필요한 데이터만 선별해서 써야함
지금 상태로는 SQL 을 작성하기 어렵습니다.💡 view 는 쿼리문의 결과를 보여주는 데이터베이스 객체테이블처럼 데이터를 보유하고 있지는 않음
over: 확장해서 출력하라 💡unbounded preceding : 제일 첫번째행unbounded following : 제일 마지막번째 행current row : 현재행💡 rows: 행을 기준으로 누적치를 구하는 것range: 범위를 기준으로 누
ratio_to_report 💡 위의 데이터로 데이터 시각화를 하면 원형 그래프로 시각화하면 됨
null값을 '전체토탈'로 바꿔줌💡deptno --> 숫자'전체토탈:' --> 문자 이기 때문에to_char(deptno)로 바꿔줘야됨💡 rollup(deptno, job) 의 집계결과는?1\. deptno, job 별 토탈월급2\. deptno 별 토탈월급3\.
📌cube() --> 토탈 결과가 맨 위에 나옴rollup() --> 토탈 결과가 맨 밑에 나옴전체 토탈월급직업별 토탈월급부서번호별 토탈월급부서번호별 직업별 토탈월급💡 컬럼의 갯수: n2의 n승cube() 안의 컬럼 갯수가 2개면 2의 2승 = 4개 나옴
()안에 아무것도 안쓰면 전체를 뜻함사원번호, 이름, 월급을 출력하는데 다음과 같이 맨 아래쪽에 전체 토탈월급을 출력하시오
💡rownum 함수는 출력되는 결과에 번호를 붙여줌
💡 rownum이 유용한 경우: 위와 같이 전체 데이터를 다 가져오지 않고 일부 데이터만 보려할 때 유용rownum = 1여기서 1 이외의 숫자는 쓸 수 X💡 rownum 은 1만 비교할 수 있고 2번부터는 안됨서브쿼리 써줘야됨서브쿼리에 있는 rownum에는 별칭
예제 답 문제1. 직업과 직업별 인원수를 출력하시오 문제2. 직업과 직업별 인원수를 출력하는데 직업별 인원수가 높은 순서데로 출력하고 그중에 맨위에 2개만 출력하시오 복습문제. emp21 테이블에서 성씨가 이씨인 학생들의 이름과 나이를 출력하는데 나이가 높은
where e.deptno = d.deptno;: 조인 조건 (조인 연결고리)여기서 select절에 e.deptno가 아닌 deptno를 쓰면 에러발생emp 테이블과 dept 테이블 둘 다 deptno가 있기 때문에 어느 테이블의 deptno를 가지고 올지 정의해줘야
: 조인하려는 테이블 사이의 조인조건이 equal 조건이 아닌 경우💡 위와 같이 조인 조건이 equal이 아닐 때는 non equi join 사용
dept 테이블에 있는 deptno가 40번인 컬럼이emp 테이블에는 없음emp 테이블에 deptno가 40번인 컬럼이 없기 때문에deptno가 40번인 loc가 BOSTON인 컬럼이 출력되지 않음답:💡 OUTER JOIN 싸인(+)은 데이터가 모자라게 나오는 쪽에
자기 자신과 조인하는 조인 문법
ㄴ 둘 성능은 비슷함
⚠️ using절에서 using (e.deptno) 이런식으로 쓰면 에러발생ㄴ (현업에선 잘 사용 X. 시험에 잘 나옴)deptno 앞에 테이블 별칭을 사용시 에러발생deptno 양쪽에 괄호로 감싸줌
💡 natural join은연결된 컬럼을 알아서 찾아서 조인해줌(잘 사용 X)💡 select절에서 deptno는 앞에 별칭 쓸 수 X조인조건으로 사용되는(key가 되는 중복된) deptno 컬럼은컬럼명 앞에 접두어로 테이블 별칭 또는 테이블명을 쓸 수 X
💡 반드시 알아야하는 조인 문법 2가지 > #### 1. 오라클 조인 문법 equi join non equi join outer join self join 2. 1999 ANSI(American National Standard Instit
💡 반드시 알아야하는 조인 문법 2가지 > #### 1. 오라클 조인 문법 equi join non equi join outer join self join 2. 1999 ANSI(American National Standard Insti
union all: 합집합union: 합집합 + 중복 제거intersect: 교집합minus: 차집합💡 두 select의 컬럼명 맞춰줘야됨union all: 합집합 연산자. 2개의 SQL의 결과를 위아래로 같이 출력해주는 집합 연산자명령 프롬프트 창에서 sys 유져로
💡 union과 union all의 다른 점은 중복행을 제거한다는 것union all은 그냥 위아래의 결과를 하나로 합치는 연산자이고union은 합치고 나서 서로 중복된 행이 있으면 제거union all (중복)union (중복제거)정렬 --> db 성능 안좋아짐답답
https://drive.google.com/file/d/1-AN3V1RrIPtNgSSBDn6EVANnbfJc5MQI/view?usp=share_linkhttps://drive.google.com/file/d/1-5yJs7WXopmnDpBKtIVSkK
관련 ocp 문제.A. INTERSECT → 두 테이블에 모두 존재하는 행만 출력 → ❌ B. UNION ALL → 두 테이블의 모든 행을 중복 포함하여 결합 → ❌ C. UNION → 두 테이블의 모든 행을 중복 없이 결합 → ❌ D. SUBTRACT →
💡 main query = outer querysubquery = inner query여기서 and ename != 'SCOTT'는 메인쿼리서브쿼리는 괄호( ) 안
💡 서브쿼리에서 메인쿼리로 리턴되는 데이터가 여러개이므로이퀄(=) 로는 비교 할 수 X. in 을 사용해야함단일행 서브쿼리 : 서브쿼리에서 메인쿼리로 1개의 행의 값이 리턴되는 경우 연산자: =, !=, <>, ^=, >, <, >=, <=다중
문제1. KING 의 사원번호를 출력하시오💡 위의 3명의 사원들의 관리자는 KING 입니다.not in은 !=all과 같음empno != 7839 and empno != 7566 and empno != null답💡 not in 사용시 주의사항! mgr 에 null
존재하는 테이블 검색ㄴ emp테이블에는 deptno가 40번인 사원이 없음💡 위와 같이 쿼리문이 있으면 메인쿼리부터 작동이 되어서dept 테이블의 부서번호 10번부터 emp 테이블에 deptno에 존재하는지를 찾아봅니다. 위에서 찾다가 존재하면 더이상 아래로 내려가면
select 보고싶은 컬럼명from 테이블명where 검색조건group by 그룹핑할 컬럼명having 그룹함수로 검색 조건을 줄때 사용하는 절order by 정렬할 컬럼select --- 서브쿼리 사용가능from --- 서브쿼리 사
select ---> 서브쿼리 가능 ( scalar subquery)from ---> 서브쿼리 가능 ( in line view )where ---> 서브쿼리 가능 ( subquery)group by ---> 서브쿼리 불가능having ---> 서브쿼리 가능
select ---> 서브쿼리 가능 ( scalar subquery)from ---> 서브쿼리 가능 ( in line view )where ---> 서브쿼리 가능 ( subquery)group by ---> 서브쿼리 불가능having ---> 서브쿼리 가능
사원번호: 7936사원이름: JANE월급 : 5000직업 : SALESMAN커미션: 800입사일: 2024-12-12💡 입력할 때 생각하고 있어야할 내용1\. 문자는 양쪽에 싱글 쿼테이션 마크(' ')를 둘러줌2\. 날짜는 to_date 함수를 이용해서 작성dep
set --> 설정하겠다💡 update 문장 작성시 주의사항조심히 update 해야함. 잘못해서 where절 없이 update를 하면전부다 같은 값으로 변경됨
💡 15분이 기본값💡 대용량 테이블을 delete로 지우면 db 성능이 느려짐ㄴ @demo 돌려서 복구하기💡 truncate는 rollback도 안되고 flashback도 안되기 때문에 조심히 수행해야함
💡 데이터를 입력, 수정, 삭제후에 rollback 을 하면 작업했던 거 모두 취소됨데이터를 입력, 수정, 삭제후에 commit 을 하면 작업했던 모든 내용이 저장됨명시적 commit : SQL 사용자가 직접 commit을 수행한 것암시적 commit : 1) cre
insert, update, delete 작업을 하나의 명령어로 한번에 수행하는 DML(Data Manipulation Language)문insert, update, delete, merge, select@demoㄴ 역정규화
💡 오라클의 락(lock)은 기본적으로 UPDATE 를 하게 되면 행단위(row level)로 걸림테이블 레벨로 락을 걸지 X
💡 for update wait 60: 60초동안 락(lock)을 걸겠다(다른 세션이 혹시 update를 하게 되면 60초만 기다리면 풀리게 하겠다)💡 dba가 락(lock)문제가 db에 자주 발생해서 락으로 인해 성능상에 문제가 자주 생긴다면 다음과 같은 조치를
OLPT DB ————————————> DW DBempemp_new호스트 이름포트번호서비스 이름sqlnet.ora 파일의 위치:C:\\app\\itwill\\product\\21c\\homes\\OraDB21Home1\\network\\admin
update — subquery 가능set — subquery 가능where — subquery 가능오라클MySQL오라클과 다르게 자동커밋됨set SQL_SAFE_UPDATES=0;Edit - Preferences... - SQL Execution💡 my
문제1. 사원 테이블의 직업이 ANALYST 인 사원들을 지우시오 문제2. SCOTT 보다 더 많은 월급을 받는 사원들을 지우시오
문제1. dept 테이블에 sumsal 컬럼을 추가하시오 문제2. 부서번호, 부서번호별 토탈월급을 출력하시오 문제3. dept 테이블의 sumsal 컬럼의 데이터를 부서번호별 토탈월급으로 값을 갱신하시오 오늘의 마지막 문제. dept 테이블에 sumsal 뿐만 아니라 maxsal, minsal, cnt 컬럼을 추가하고 해당 부서번호의 최대월급과 ...
start with ...connect by prior ...여기서 empno와 mgr의 순서가 바뀌면 X💡 실행순서: from - start with - connect by - select💡 실행순서: from - start with - connect by - w
💡 where절을 쓰면 실행순서가 from - start with - connect by - where - select 라서 결과가 BLAKE만 빠짐\--> connect by절에 and를 써서 조건을 써줘야 됨not in 사용오라클 sql로는 안되고 다음과 같이 m
다음과 같이 단순히 order by절만 쓰면 자기 팀원이 누군지 모르게 됨서열이 깨짐가지치기(pruning) 하는 방법계층형 질의문과 짝꿍 함수인 sys_connect_by_path 함수 (공무원 연금 공단)계층형 질의문에서 order by 절 사용법
💡 sys_connect_by_path 함수를 이용하면전체 사원들에서 본인 서열의 위치가 정확히 어떻게 되는지 출력가능가지치기(pruning) 하는 방법계층형 질의문과 짝꿍 함수인 sys_connect_by_path 함수 (공무원 연금 공단)계층형 질의문에서 orde
✔️ 테이블명과 컬럼명은 반드시 문자로 시작해야함1111 scott 3000 2025/03/022222 smith 2000 2025/04/01💡 테이블명과 컬럼명 만들 때 예약어 쓸 수 X반드시 문자로 시작해야함30자를 넘어가면 X💡 테이블 생성 후에는 반드시 sq
💡 임시 테이블은 데이터를 영구히 저장하는게 아니라잠깐 임시로 저장할 테이블을 생성할 때 유용한 테이블영구히 데이터를 저장할 수 있는 테이블 : heap table임시로 데이터를 저장할 수 있는 테이블 : temporary tablecommit 할 때까지만 데이터를
(뷰는 테이블처럼 데이터를 저장하고 있지 X. 그냥 조회만 할 수 있는 것 (ocp 시험))💡 뷰를 수정할 때 alter view 명령어는 없음. create or replace view로 뷰를 수정함 (ocp 시험)ㄴ emp 테이블도 같이 update 됨📌 gro
문제1. 위 예제 문제2. emp 와 dept_avg 뷰를 조인해서 이름과 부서번호, 월급, 자기가 속한 부서번호의 평균월급을 출력하시오 문제3. 위의 결과를 다시 출력하는데 자기의 월급이 자기가 속한 부서번호의 평균월급보다 더 큰 사원들만 출력하시오 문제4.
table: db에 데이터를 저장하는 행과 열로 이루어진 기본 저장소view: 테이블을 바라보는 db 오브젝트 (데이터 저장 x)index: 쿼리의 검색속도를 향상시키는 db 오브젝트sequence: 번호를 생성하는 db 오브젝트synonym: 동의어rowid: 해당
tableviewindexsequence: 쿠팡의 주문번호처럼 중복되지 않는 유니크한 값을 생성하는 객체synonym100을 초과하니 에러발생: 시퀀스 SEQ1.NEXTVAL exceeds MAXVALUE은 사례로 될 수 없습니다sequece의 maxvalue 수정💡
flashback query : 특정 시점의 데이터의 상태를 조회하는 기능flashback table : 테이블 데이터를 특정 시점으로 복구flashback drop : 삭제된 테이블을 복구flashback version query : 특정 기간동안 데이터 변경내역 조
실습1. emp 테이블을 전부 delete 하고 commit 하시오 실습2. emp 테이블을 현재 시간에서 5분전으로 되돌리시오 문제1. dept 테이블을 모두 delete 하고 commit 하고나서 dept 테이블을 5분전으로 되돌리시오
💡 emp table을 drop 하면 관련 index나 제약들이 모두 drop 됨
flashback query : 특정 시점의 데이터의 상태를 조회하는 기능flashback table : 테이블 데이터를 특정 시점으로 복구flashback drop : 삭제된 테이블을 복구flashback version query : 특정 기간동안 데이터 변경내역 조
특정 테이블에 대해서 그동안 변경해왔던 이력정보를 가지고 다시 과거로 되돌리기 위한 DML 문장을 보여주는 쿼리문아주 상세하게 데이터를 복구할 수 있게 됨예: 과거에 delete 를 했다면 ------> insert 문장을 보여줌sqlplus sys/oracle_4
💡 제약(contraint)이란? 데이터의 품질을 높이기 위해서 데이터베이스에 입력, 수정되는 데이터의 제한을 강제로 두는 기능 좋은 품질의 데이터가 테이블에 저장이 되어야 좋은 데이터 분석을 할 수 있음 데이터 분석시 데이터 분석가들이 어려워하는 부분 중 하나가 결측치를 처리하는 부분 아예 처음부터 결측치가 입력 안되도록 테이블 설계를 하는게 가장...
중복된 데이터를 입력 못하게 막는 제약ex. 웹에서 회원가입 할 때 id가 중복되지 않도록 대부분 막고 있음column leveltable level컬럼이 매우 많은 경우 table level이 편함loc에 중복된 데이터가 없기 때문에unique 제약이 잘 걸릴 수 있
결측치(null) 데이터를 입력하지 못하게 막는 제약이 not null 제약입니다.💡 not null 외에 다른 제약들은 전부 table level 로 제약 생성이 가능한데 not null 제약만 안됨alter table 테이블명 modify 컬럼명 constrain
사용자가 허락한 데이터만 입력 또는 수정할 수 있게 하는 제약alter table 테이블명 add constraint 제약조건명 check(컬럼명 조건);
부모-자식(foreign key) 관계 생성\-- 에러발생\-- ORA-02273: 고유/기본 키가 외부 키에 의해 참조되었습니다alter table dept drop constraint dept_deptno_pk;\-- cascade 사용해서 삭제alter table
with절 하나로 쿼리가 두배 빨라짐복잡한 쿼리가 간단해지는 기술중급 개발자들이 실무에서 자주 사용하는 SQL 꿀팁가독형 향상 : 복잡한 서브쿼리를 분리하여 쉽게 이해할 수 있는 형태로 작성가능성능 최적화 : 동일한 서브쿼리가 반복될때 딱 한번만 실행하고 계속 재사용됨
위의 SQL이 실행이 안되는 이유1\. 문법 오류 : from 절 서브쿼리문의 결과인 두 테이블간의 조인 조건이 없음2\. 상관관계 오류 : job_sumsal 의 결과를 두번째 서브쿼리의 having 절에서 참조하려 했지만 두 서브쿼리가 독립적으로 실행되어 job_s
Query : select 문의 6가지절, 조인, 서브쿼리 DML문(Data Manipulation Language): insert, update, delete, merge, select TCL문(Transaction Control Language) : commi