본문 바로가기

Study

(259)
sql중급 / 데이터분석 복습 문제586. 상호명에 치킨을 포함하고 있는 상호명과 건수를 출력하시오 select 상호명, count(*) from market where 상호명 like '%치킨%' group by 상호명 order by 2 desc; 문제587. 상호명의 끝자리가 점으로 끝나고 상호명에 치킨이 포함된 상호명을 출력하시오(ㄱㄴㄷ순으로) select 상호명, count(*) from market where 상호명 like '%치킨%' and 상호명 like '%점%' group by 상호명 order by 1 asc; 문제588. 상호명 끝글자가 점으로 끝나는 상호명이 출력될 때 다음과 같이 데이터를 정제하시오. 굽네치킨은천점 > 굽네치킨 select substr(상호명,1,instr(상호명,'킨')) from mark..
sql중급 / primary key, unique, not null, check, foreign key 104 데이터의 품질 높이기 1(PRIMARY KEY) ㅇ제약(constraint)이 필요한 이유 "데이터의 품질을 높이기 위해서" 데이터 분석할 때 데이터 정제 작업에 거의 80%이상을 사용함. 데이터 정제 작업이 코딩을 못하면 노가다여서 인내를 가지고 작업해야하는데 이 작업이 코딩을 잘하면 쉽고 재밌게 할 수 있음. 근본적으로 데이터를 처음에 입력받을때부터 잘 정제해두면 나중에 정제 작업의 시간을 줄일 수가 있음. ex) 우리반 테이블 입력 시 telecom 데이터를 입력할 때 skt,sk,SKT 등 다양하게 입력되었음 > 이 경우 sql이 복잡해지고, 복잡합 sql이라도 정제할 줄 모르면 잘못된 데이터 분석을 하게 됨. 따라서 처음부터 제약(constraint)을 이용해 sk로만 입력되게 할 수 있..
sql중급/ flachback version query, transaction query 102 실수로 지운 데이터 복구하기 4(FLASHBACK VERSION QUERY) 특정 테이블의 데이터가 그동안 어떻게 변해 왔는지 이력정보를 확인할 때 사용하는 기능(insert, update, delete, merge문에 대한 변경이력정보) -- KING의 직업을 ANALYST로 변경하시오 update emp set job = 'ANALYST' where ename = 'KING'; commit; -- KING의 월급을 0으로 변경하시오 update emp set sal = 0 where ename = 'KING'; commit; -- KING의 데이터를 지우시오 delete from emp where ename = 'KING'; commit; -- 그동안 emp테이블의 데이터가 어떻게 변경이 되어..
sql 중급 / flashback query,table, drop 099 실수로 지운 데이터 복구하기 1(FLASHBACK QUERY) (참고로 mysql은 플래시백 기능 없음) 과거의 데이터를 오라클은 확인할 수 있는데 그 기능이 바로 flashback query -- 데이터를 삭제하시오 delete from emp; commit; rollaback; select * from emp; 위와 같은 상황이 벌어졌다면 flashback query로 과거의 데이터를 확인하고 복구하면 됨. ㅇ복구방법 1. 현재시간 확인(반드시 오라클 프로그램의 시간을 확인할 것) select systimestamp from dual; 21/11/26 15:12:43.075000000 +09:00 2. 현재시간에서 10분전 emp테이블의 상태를 확인 select * from emp as of ..
sql중급 / sequene 098 절대로 중복되지 않는 번호 만들기(SEQUENE) 특정 테이블에 번호를 반드시 중복되지 않게 순서대로 입력하는 경우에 시퀀스를 사용하면 안전하게 입력할 수 있음. insert into emp(empno, ename, sal) values(1,'scott',3000); : : 이런식으로 사람이 일일이 수작업으로 입력할 경우 실수할 수 있음. ex.)오타발생, 일일이 데이터를 조회해서 이전 번호를 찾아야 함(다음번호 부여를 위해서) --(시퀀스 사용)사원번호에 번호를 입력할 때 데이터가 중복되지 않고 순서대로 입력되게 하시오 insert into emp(empno, ename, sal) values(seq1.nextval, 'allen',3000); ㅇ시퀀스 만드는 법 create sequence s..
sql중급 / DDL문 (index) ㅁ인덱스 복습 1. 인덱스의 구조 : 인덱스를 생성하려는 컬럼의 데이터 + rowid(행의 물리적 주소) 컬럼의 데이터가 asc하게 정렬되어있음 2. 빅데이터를 검색할 때 검색속도를 향상시키기 위해서는 인덱스를 생성하고 인덱스를 통해서 데이터를 검색하는게 필수 문제526. 아래의 sql의 검색속도를 향상 시키시오(인덱스 생성) select ename, hiredate from emp where hiredate = to_date('1981/11/17','RRRR/MM/DD'); create index emp_hiredate on emp(hiredate); -- 인덱스 생성 후 다시 검색하면 성능 빨라짐 select ename, hiredate from emp where hiredate = to_date('..
sql중급 / DDL문(global temporary table, view,index) +) 대량의 컬럼 데이터타입 변경방법 (notepad++ 이용) 마우스 커서로 alt키 누르고 드래그하면 여러 행을 한번에 작성 및 선택할 수 있음 -- sql developer로 하는 방법 select 'alter table crime_loc_type modify ' || column_name || 'number(38);' from user_tab_columns where table_name='CRIME_LOC_TYPE' order by column_id; -- 을 작성하여 출력물을 복사하여 다시 쿼리실행하면 됨 +) 특정테이블의 컬럼명만 뽑아내는 방법 select column_name from user_tab_columns where table_name='CRIME_LOC_TYPE' order by ..
문제7. SQL / 데이터 정제(문장부호 제거) [코드를 쓴 상황] 텍스트를 어절별로 나누어 키워드를 분석하시오 [코드 작성] 1. speech테이블의 텍스트(speech_text)를 regexp_substr 함수를 이용하여 어절로 나눈다. 이때 텍스트를 소문자로 바꿔준다(어절별로 나눈 뒤에 바꿔줘도 상관없음) select regexp_substr(lower(speech_text),'[^ ]+',1,n) as word from speech, ( select level as n from dual connect by level
문제6. SQL / 새로운 컬럼에 값을 갱신할 때 null값 없애기 [코드를 쓴 상황] merge문을 이용해서 emp테이블과 dept테이블을 조인 후 dept 테이블의 sumsal 컬럼을 갱신하려고함. dept 테이블에서 조인되지 않은 데이터는 null으로 갱신되는데, 이때 null 대신에 0값이 출력되게 하려고 함. (단, 이때 dept테이블에 사전에 sumsal컬럼을 만들어야 함) [내가 쓴 코드 + 에러] merge into dept d using (select deptno, sum(sal) as sumsal from emp group by deptno ) v on (d.deptno = v.deptno) when matched then update set d.sumsal = v.sumsal when not matched then insert (d.deptno, d...
sql중급 / DDL문(create) 093 일반 테이블 생성하기(CREATE TABLE) ㅁSQL의 종류 5가지 1. Query : select문의 6가지절, 함수, 조인, 집합연산자, 서브쿼리 2. DML : insert, update, delete, merge 3. DDL : create, alter, drop, truncate, rename 4. DCL : grant, revoke 5. TCL : commit, rollback, savepoint ㅁcreate문으로 만들 수 있는 데이터베이스 오브젝트 5개 1. table : 데이터베이스에 데이터를 저장하는 기본 저장소 2. view : 복잡한 쿼리를 간단하게 엑세스 하기 위한 db object 3. index : 대용량 데이터에서 특정 데이터의 검색을 빠르게 할 수 있음 4. seq..

반응형