본문 바로가기

SQL/SQL 교육

Microsoft Azure Management Training 2018.08 http://gofile.me/6xDuZ/K51eSr2bE Azure SDK installation - https://azure.microsoft.com/ko-kr/downloads/ Powershell 사용하기Connect-AzureRmAccount 구독 계정이 두개 이상이어서 Subscription 지정을 하지 않으면 오류가 발생했음. 내 구독 계정을 조회하고 하나를 강제 지정해주면 해결됨.Get-AzureRmSubscriptionSelect-AzureRmSubscription -SubscriptionId 0f0a8937-cb80-4267-a117-63d7408e2943 Row Level Security (RLS) - By username - By system username or position a.. 더보기
객체 스키마(소유자) 일괄 변경 스크립트 만들기 실수로든 자의든 DB 로그인 계정에 따라 기본 소유자가 지정되게 되어있는데,원치 않게 의도하지 않은 소유자 지정으로 뒤죽박죽 되는 경우가 간혹 있다. 그래서 일괄로 변환하는 스키마를 만들어보았다. (엄청 쉬움) USE JAPAN SELECT 'ALTER SCHEMA DBO TRANSFER '+USER_NAME(UID)+'.'+NAME , * FROM SYSOBJECTS WHERE XTYPE IN ('U','P','V','FN') AND UID 1 SELECT DISTINCT UID, USER_NAME(UID) FROM SYSOBJECTS WHERE XTYPE IN ('U','P','V','FN') ALTER SCHEMA DBO TRANSFER TJAPANUSER.TBLJPROJECTD_060414 ALT.. 더보기
[MSSQL] EXCEPT :: oracle의 MINUS 와 같은 효과 oracle의 MINUS 와 같은 효과를 보러면 EXCEPT를 사용할 수 있다. SELECT * FROM TAB1 WHERE COL=200EXCEPTSELECT * FROM TAB2 WHERE COL=300 막상 사용해보니 성능이 좋지 않다. 나중에 다시 분석해봐야겠음! 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 11 옵티마이저의 원리와 이해 SQL> show parameter opt ..... optimizer_mode integer ALL_ROW alter session set optimizer_mode=rule; set autotrace on; select * from emp; Statistics ---------------------------------------------------------- 0 recursive calls 두 번 이상 실행하면 메모리에 데이터가 있어서 0 이 될 수 있다 0 db block gets 10 consistent gets 가져온 Block의 수 0 physical reads 0 redo size 2052 bytes sent via SQL*Net to client 407 byt.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 10 --// 일반적인 GROUP BYSELECT B.DNAME, A.JOB, COUNT(*) AS TOTALEMPL, SUM(A.SAL) AS TOTALSALFROM EMP AINNER JOIN DEPT B ON A.DEPTNO=B.DEPTNOGROUP BY B.DNAME, A.JOB; --// ROLLUP GROUP BY 중간합과 총합까지 나오는 함수SELECT B.DNAME, A.JOB, COUNT(*) AS TOTALEMPL, SUM(A.SAL) AS TOTALSALFROM EMP AINNER JOIN DEPT B ON A.DEPTNO=B.DEPTNOGROUP BY ROLLUP(B.DNAME, A.JOB); MSSQL 에서는 WITH ROLLUP 구문으로 사용할 수 있다. --// GROUPING 그룹.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 8 Composite Type 변수 만들기DECLARE TYPE name_table_type IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER; name_table name_table_type; begin name_table(1) := 'KKKK'; name_table(2) := 'HHHH'; insert into emp(empno, ename) values (5151, name_table(1)); insert into emp(empno, ename) values (6161, name_table(2)); --// 내부에 commit 넣어줄 수 있음. commit; end; select * from emp; 테이블변수 만들기DECLARE TYPE EMP_RECORD_T.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 7 DECENDING INDEX CREATE INDEX fidx_stud_no_name ON student (deptno DESC, name ASC); 함수기반 INDEX CREATE INDEX fidx_stud_no_name ON student (UPPER(ename)); 실행계획보기 [oracle@localhost ~]$ cd $ORACLE_HOME/sqlplus/admin [oracle@localhost admin]$ ls glogin.sql help iplus plustrce.sql pupbld.sql [oracle@localhost admin]$ pwd /u01/app/oracle/product/10.2.0/db_1/sqlplus/admin [oracle@localhost admin]$ ls -al.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 6 --// MERGE SAMPLESCREATE TABLE TESTAS SELECT * FROM EMP WHERE DEPTNO=10; SELECT * FROM TEST; UPDATE TEST SET SAL = SAL+1000; SELECT * FROM TEST;SELECT * FROM EMP; MERGE INTO TEST TUSING EMP EON (T.EMPNO = E.EMPNO)WHEN MATCHED THENUPDATE SET T.SAL = E.SALWHEN NOT MATCHED THENINSERT VALUES(E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO); DROP TABLE TEST; --// SELECT INTO 구분의 차.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 5 서브쿼리-- 자신이 자신을 참조하는 형태일 경우-- 이거시 더 실행계획이 좋음select ename, salfrom emp awhere sal > (select avg(sal) from emp where deptno=a.deptno group by deptno); -- 집합적으로 만들어봤으나 효율은 그렇게 좋지 않음.select ename, salfrom emp awhere exists ( select 1 from (select deptno, avg(sal) avgsal from emp group by deptno) z where a.deptno=z.deptno and a.sal > z.avgsal ); -- 검증용 쿼리select deptno, avg(sal) avgsal from emp group b.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 4 과제 카페 주소http://cafe.naver.com/fordeveloper [oracle@localhost ~]$ lsnrctl start리스너 살려주는 명령어 함수 이어서 진행 NVL2 ( 조건, 참 일때 값, Null일때 값 )SQL> select ename, sal, comm, nvl2(comm, 1, 2) from emp;ENAME SAL COMM NVL2(COMM,1,2)---------- ---------- ---------- --------------KTMIN 3500 2민경_왕태 3500 2SMITH 800 2ALLEN 1600 300 1WARD 1250 500 1 NULLIF( 값1, 값2 ) 값1,2 가 같으면 NULL 리턴 COALSCE( A, B, C ) DECODE - CASE .. 더보기