본문 바로가기

DataBase10

[mariaDB] create or replace function Definer와 Sql Security 옵션 만약 definer 옵션 TEST_USER 로 설정하여, CREATE OR REPLECE DEFINER=`TEST_USER`@`%` FUNCTION AAA(... 로 생성한 경우, 이 FUNCTION을 DROP할 수 있는 권한 또한 TEST_USER 임 deterministic 옵션 MySQL의 Stored procedure나 Function이 NOT DETERMINISTIC으로 정의되면, MySQL은 이 Stored routine의 결과값이 시시각각 달라진다고 가정하고, 비교가 실행되는 레코드마다 이 Stored routine을 매번 새로 호출해서 비교를 실행하게 된다. 즉, 함수 호출의 결과값이 Cache되지 않고, 비교되는 레코드 건수만큼 함수 호출이 발.. 2022. 10. 28.
MSSQL master 테이블 spt_values 활용 SELECT convert(varchar(10), DATEADD(DAY, number, '2020-01-01'), 120) STATS_DATE FROM master..spt_values WHERE type = 'P'; MS-SQL 를 설치하면 master, model, msdb, tempdb 네 가지의 시스템 데이터베이스를 지원한다. 그 중 master 데이터베이스에 있는 spt_values 테이블의 컬럼 number는 0에서 2047 사이의 시퀀스 번호를 가지고 있고, 컬럼 type =’P’ 이다. select number from master.dbo.spt_values where type='P'; ** 활용방법 ⇒ 숫자의 순서를 가지고 있기 때문에 반복, 재귀 등에 활용할 수 있다. 그러나 비교대상이.. 2022. 6. 29.
인덱스, 쿼리 속도를 향상시키는 개체 : 개념과 사용하는 이유 포스팅 내용 인덱스 개념 인덱스를 사용하는 이유 인덱스 사용은 항상 성능을 향상시키는 것은 아니다. 인덱스 종류 : Clustered Index와 Non-Clustered Index 이번 포스팅은 쿼리 조회 속도를 향상시키는 개체인 인덱스에 대해 알아보고자 한다. 1. 인덱스 개념 인덱스 (Index) 란, '데이터 검색 성능의 향상' 을 위해 테이블 열에 사용하는 자료구조로, 데이터베이스 객체이다. 데이터베이스를 책에 비유하자면, 인덱스는 책의 색인과도 같다. 보통 select 쿼리의 where 절이나 join 예약어 사용시에 인덱스가 사용되며, select 쿼리의 검색 속도를 빠르게 하는데 목적이 있다. 2. 인덱스를 사용하는 이유 테이블에 데이터가 쌓여가면서 db는 저장 공간에 비어있는 공간이 있으.. 2022. 2. 6.
select 문 실행순서와 처리 과정 select 문 실행순서 group by 와 having 절에서의 주의사항 조건절 : having 절과 where 절의 차이 where절에서의 alias 사용은 ‘Invalid Identifier’ 에러를 발생시킨다. select 문 실행순서 SQL 문은 비절차적인 언어지만, 내부적으로 DBMS에 의해 실행 순서를 가진다. SELECT [ ALL | DISTICT ] [ TABLE NAME.]{ * | 속성이름 [[AS] 별칭]} FROM { 테이블이름 [[AS] 별칭]} [ INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN { 테이블 이름 } ON 검색조건 ] WHERE 검색조건 GROUP BY 속성이름,.. HAVING 검색조건 [ 질의 UNION 질의 | 질의 U.. 2022. 1. 24.
인덱스, 뷰, 스토어드 프로시저란? 인덱스 (Index) 란 ? 인덱스는 데이터베이스를 조회 속도를 빠르게 해주는 개체이다. 예를 들어, 회원테이블 member에서 member_name이 아이유인 데이터를 조회한다고 하자. 인덱스가 없으므로 dbms는 Full Table Scan 을 한다. 전체 테이블 검색을 통해 테이블에 있는 모든 데이터를 조회하여, 해당 데이터를 찾는다. 여기에 member_name 열에 대한 인덱스를 지정해보자. dbms는 Index Scan을 하게 된다. 요약하자면, 인덱스는 B-tree 구조를 가지는데, 각 노드에는 db 데이터의 주소를 가지고 있다. 그렇기 때문에 루트노드부터 리프노드까지 하향식 검색을 하며 데이터를 찾기때문에 빠른 속도로 해당 데이터를 찾는다. 반면 단점으로는, 인덱스를 만들면 데이터의 주소를.. 2022. 1. 16.
[SQL Mapper/iBatis] iBatis 문법정리 / Oracle 쿼리정리 iBatis 참고할 만한 내용들 iBatis는 더이상 개발이 중지된 상태이며, Apache project에서 google code로 넘어가면서 MyBatis 로 이름이 바뀌었다. MyBatis, iBatis는 ORM이 아닌, SQL Mapper이다. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑한다. 실제 프로그램이 구동되면, 1. SqlMapConfig.java에서 내부적으로 데이터베이스와 Connection을 맺고, Statement객체를 생성한 후, 해당리소스 (SqlMapClient)를 반환한다. 2. 반환된 리소스로 SqlMap.xml에 정의된 Statement (method)를 호출한다. iBatis의 핵심은 SqlMapConfig에 있다. 데이터베이스 연동을 위해 JDB.. 2020. 10. 12.