본문 바로가기
반응형

IT/Database98

[Mysql] 컬럼 내 특정 단어 갯수 구하기 컬럼 결과에서 특정 단어의 갯수가 몇개인지 알아보는 방법을 소개한다. 따로 함수가 있지는 않고, 글자 길이와 replace 함수로 구현해볼것이다. @이 골뱅이 관련해서는 아래 참고 포스팅에서 바인딩 변수 부분을 참고하면 된다. SELECT (char_length(value) - char_length(replace(value,@varchar,'')))/char_length(@varchar) FROM table; 특정 컬럼의 전체 길이를 구하고 해당하는 부분을 제거한 후 길이 구해서 갯수를 구하는 방식이다. 참고 포스팅 https://thenicesj.tistory.com/662 [Mysql] 사용자 정의 변수 선언 및 초기화 , 사용법 //(시스템변수) 쿼리를 사용할때 특정 값을 입력하여 사용할 경우 매번.. 2023. 8. 21.
[Mysql] 사용자 정의 변수 선언 및 초기화 , 사용법 //(시스템변수) 쿼리를 사용할때 특정 값을 입력하여 사용할 경우 매번 name = 'testtesttest' 이런식으로 사용을 해야한다. 한두번이면 괜찮으나, 여러번 반복해서 사용해야할 경우엔 매번 적어주기엔 불편하고 가독성으로도 좋지가 않다. 그럴 경우 바인딩변수를 사용할수 있다. 사용자 정의 변수는 아래처럼 사용이 가능하다. 선언 SET @binding := 'testtesttest'; 사용 SELECT * FROM TABLE WHERE NAME = @binding; 이렇게 사용이 가능하다. 만약 시스템변수를 사용하고자 한다면 선언 SHOW GLOBAL VARIABLE; --모든 시스템변수 확인 SHOW GLOBAL VARIABLE LIKE 'TEST%'; --이름이 TEST로 시작하는 시스템변수 확인 수정 SET .. 2023. 8. 20.
[Oracle] TNS에 대해서 TNS 에 대한 개념을 잡을때 같이 비교가 되는 리스너에 대해서 먼저 설명을 하면, 리스너(listener) listener.ora 식의 이름으로 존재 TNS와 같은 경로에 있음 오라클 서버에서 클라이언트와의 통신 환경을 설정하는 파일 -> 서버 설정 오라클 서버에 존재하며 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜과 포트 정보등을 설정해줌 예제 Listener LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-N9T464A)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) TNS(Transparent Network.. 2023. 8. 9.
DB Link 에 대해서(23.07.24) 데이터베이스에서 다른 데이터베이스를 접근가능한 링크 "FROM 테이블명@DB링크" 형식으로 사용 다른 DB에 특정 유저에 대한 링크를 만들어 해당 스키마에 테이블들을 접근하는 기술 자바에서의 접근제어자와 비슷하게 public 과 private 으로 접근 권한을 부여 하고 - public > 모든 유저가 사용가능한 공용링크를 만들때 지정 - private > 특정 유저만 사용가능 한 DB링크를 만들때 지정 단순 개발을 할 경우에는 여러 데이터베이스에 접근을 하면 되지만, 특정 상황에 따라나 기업 권한 등 제한된 환경에서 확장이 필요할때, 다른 서버의 DB를 링크를 통해 접속하게 해주므로 확장성을 가진다. DB 링크 CRUD문 DB 링크 조회 SELECT * FROM DBA_DB_LINKS 생성 TNS에 해.. 2023. 7. 25.
[SQL 쿼리 튜닝] OR -> UNION ALL 변환 데이터베이스를 사용하다보면 많은 데이터를 갖고 있는 테이블에는 조회를 위해서 인덱스가 필요할 경우가 있다. 하지만 인덱스와는 별개로 쿼리를 좀더 튜닝을 하여 DBMS가 잘 읽을수만 있게 짜주는것만으로도 효과를 낼수가 있다. 요즘엔 DBMS 옵티마이저가 많이 똑똑해져서 실행계획을 잘 만든다고 들었다. 하지만 직접 명시해주는것만큼 확실한 방법은 없을것이다. 이번 포스팅에서는 쿼리 내의 OR조건을 UNION ALL 로 변환을 하며 쿼리를 개선하여 인덱스를 탈수 있도록 변경을 해볼 것이다. 먼저 UNION 과 UNION ALL 에 대한 개념은 아래 참고 포스팅을 참고 바란다. 일단 우선 UNION 과 UNION ALL 의 차이를 다시 소개하면. UNION은 중복제거 + 정렬까지 들어가게 된다. 즉, 연산이 필요.. 2023. 6. 26.
데이터베이스 테이블 합집합, 차집합(UNION, UNION ALL, MINUS, INTERSECT, EXCEPT) 데이터베이스를 사용하면 join이나 서브쿼리를 통해서 테이블을 합치곤 한다. 하지만 이렇게 합치는것은 수평적으로 하여 컬럼이 많아지도록 합치는 것이고, 오늘 소개할 UNION, UNION ALL, MINUS는 수직적으로 레코드들이 합쳐지는 것이다. Join에 대해서는 아래 참고 포스팅을 참고 바란다. UNION 과 UNION ALL의 차이 UNION은 두 개의 테이블을 하나로 만드는 연산이다. 두 개 테이블의 컬럼 수, 컬럼 데이터 형식이 모두 일치해야한다. UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다. 그래서 UNION은 정렬을 발생시킨다. UNION ALL은 중복을 제거하거나 정렬을 유발하지 않는다. 둘 다 먼저 선행된 테이블의 이름을 기준으로 출력이되게 된다. 이에 .. 2023. 6. 25.
LAG, LEAD 함수에 대해서 데이터베이스를 사용할때 LAG , LEAD 함수에 대해서 들어본 적이 있는지. 먼저 사전 풀이 그대로 사용한다면 LAG - 뒤떨어지다. LEAD - 이끌다. 라는 의미를 가지고 있다. 그럼 이 단어를 데이터베이스에서 적용을 하면 어떻게 될까? 이전의 값과 이 후의 값을 나타낼수 있다. 먼저 사용법은 아래와 같다. LAG/LEAD(컬럼명 {,offset} {,default}) OVER({PARTITION BY} ORDER BY) offset, default, partition by는 생략가능, order by는 생략 불가!! LAG 함수 : 이전 행 값 return LEAD 함수 : 다음 행의 값 return offset : 값을 가져올 행의 위치, default 1 default : 값이 없을 경우 지정.. 2023. 6. 21.
upsert 란? 데이터베이스에서 사용되는 DML 을 보면 insert / select / update / delete 에 대해서 많이 다뤄봤을것이다. 오늘 소개할 구문은 일반적인 DML은 아니고 , 또한 모든 DBMS 마다 존재하는것이 아니라서 잘 모를수도 있지만 알고있다면 효율적으로 작성이 가능한 문법인 UPSERT 이다. 일반적으로 많이 사용하는 ORACLE, MYSQL/MARIA, POSTGRESQL 에 대한 UPSERT 문법에 대해서 정리하면 다음과 같다. ORACLE의 경우 UPSERT MERGE INTO dest_table_name [alias] USING (source_table_name or view or subquery) [alias] ON (join condition) WHEN MATCHED THEN .. 2023. 6. 12.
CLOB 타입 데이터베이스에서 테이블에 데이터 형식을 정해주곤 한다. 대표적으로는 Varchar / Integer / Date 등의 자료형이 있는데, 오늘 다뤄볼 내용은 CLOB, BLOB 등 LOB 타입이다. 일단 사용에 대해서는 CREATE TABLE TEST_TABLE ( ID VARCHAR(10), NAME CLOB ); 이렇게 지정을 해주면 된다. 그럼 CLOB 와 BLOB에 대해서 어떤 자료형인지 알아보면, 데이터 타입 설명 CLOB 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원 NCLOB 유니코드를 지원하는 문자형 대용량 객체 BLOB 이진형 대용량 객체 BFILE 대용량 이진 파일에 대한 위치,이름 저장 이런 설명이다. LOB이란 Large Object의 약자로 대용량 데이터를 저장할 수 있는 데.. 2023. 5. 31.
반응형