SQL(5)
-
TRUNCATE VS DELETE VS DROP
TRUNCATE 전체 데이터를 한 번에 삭제하는 방식 최초 생성되었을 당시의 STORAGE만 남기고 데이터가 담겨있던 STORAGE는 RELEASE됨 TRUNCATE 명령어를 실행하면 처음 테이블을 CREATE한 상태와 동일 자동 COMMIT이 되기 때문에 삭제된 데이터는 복구 불가 DELETE WHERE절을 사용하여 테입르에 있는 데이터를 하나하나 석택하여 제거하는 방법 WHERE절을 사용하지 않고 테이블의 모든 데이터를 삭제하더라도 내부적으로는 한줄 한줄 일일이 제거함 처리 속도가 느린 편이고 성능에 좋지 않은 영향을 줄 수 있음 COMMIT 명령어가 실행되기 전이라면 ROLLBACK 명령어를 통해 삭제된 데이터를 복구할 수 있음 데이터를 삭제하더라도 데이터가 담겨있던 STORAGE는 RELEASE ..
2022.11.04 -
SQL 작성 7거지악
좌변을 가공하지 않기 DB 인덱스를 사용할 수 없는 경우 인덱스 컬럼이 비교되기 전에 변형이 일어나는 경우 부정형으로 조건을 기술(not)한 경우 인덱스 컬럼이 NULL로 비교되는 경우 옵티마이저가 필요에 다라 상기 적용원칙을 준수했음에도 불구하고 특정 인덱스의 사용을 취사선택함으로써 사용되지 않는 경우 위와 같은 경우에 인덱스를 사용할 수 없습니다. 그렇기 때문에 DB 컬럼을 가공하지 말고 상수 부분을 가공해서 사용하도록 작성합니다. 잘못된 경우 -- 인덱스 컬럼에 변형이 일어났기 때문에 인덱스 사용이 불가 SELECT dept , ename , sal FROM emp WHERE SUBSTR(job, 1, 4) = 'SALE' 바람직한 경우 SELECT dept , ename , sal FROM emp..
2021.04.01 -
MySQL Stored Procedure의 장단점
장점 DB의 보안이 향상됩니다. Stored Procedure는 자체적인 보안 설정 기능을 가지고 있으며, Stored program 단위로 실행 권한을 부여할 수 있습니다. 권한 제어가 가능하며, SQL 인젝션과 같은 기본적인 보안 사고를 피할 수 있습니다. 절차적 기능을 구현할 수 있습니다. SQL 문장에 IF/WHILE과 같은 제어 문장을 사용할 수 있습니다. 어떠한 어플리케이션을 사용하더라도 Stored Procedure를 이용한다면 값을 추출하는데 용이합니다. 개발 업무를 구분하여 진행할 수 있습니다. 순수하게 어플리케이션을 개발하는 조직과 DMBS 관련 코드를 개발하는 조직을 구분해 진행할 수 있습니다. DBMS 코드를 개발하는 조직은 트랜잭션 단위로 데이터베이스 관련 처리를 하는 Stored..
2020.09.17 -
SQL IN과 OR의 비교
OR 어떠한 논리합 관계도 표현이 가능합니다. IN 하나의 컬럼이 여러개의 =조건을 가지는 경우에만 가능합니다. IN -> OR(가능) IN SELECT * FROM TAB1 WHERE COL IN (1, 5, 7)OR SELECT * FROM TAB1 WHERE (COL = 1 OR COL = 5 OR COL = 7)OR -> IN(불가능) OR SELECT * FROM TAB1 WHERE (COL1 = 1 OR COL = 2 OR NAME LIKE '3%')IN을 사용할 수 있는 경우라면 OR보다 IN을 사용하는 것이 좋습니다. IN은 경우에 따라서 서브쿼리를 이용하여 보다 유연한 확장이 가능합니다. IN은 반드시 하나의 컬럼이 비교되어야 하지만 OR는 여러 개의 컬럼이 올 수 있으므로..
2020.09.11 -
Scala Subquery vs Left Outer Join
Subquery란 Subquery란 다른 하나의 SQL문장의 절에 중첩된 select 문장입니다. Select, update, delete, insert와 같은 DML 문과 create table 또는 view에서 이용 가능합니다. Subquery는 알려지지 않은 조건에 근거한 값들을 검색하는 select 문장을 작성하는데 유용합니다. Subquery는 Main Query가 실행되기 이전에 한번 실행되고 SubQuery의 결과는 Main Query에 의해 사용됩니다. Outer Join이란 Outer Join이란 Join하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것입니다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고..
2020.03.30