본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

IT기술/DB13

[Postgre] AutoCommit 테스트해보기 Postgre에서 AutoCommit 기본설정은 true로 되어 있습니다. 목차 AutoCommit 기본상태 확인 AutoCommit 상태 변경 Rollback 테스트 Commit 전에 Insert 후 다른 세션에서 조회 pgAdmin 에서 AutoCommit 설정하기 즉, 쿼리 실행시 자동으로 Commit을 수행해주는 것을 의미합니다. psql에서 AutoCommit을 해제할 수 있습니다. $ \set AUTOCOMMIT off // AutoCommit 끄기 $ \set AUTOCOMMIT on // AutoCommit 켜기 $ \echo :AUTOCOMMIT // AutoCommit 상태 확인 먼저 psql에 로그인해봅니다. 1. AutoCommit 기본상태 확인 $ \echo :AUTOCOMMIT .. 2024. 2. 23.
[DB, JBDC] 데이터베이스 연결, JDBC, SQL Mapper, ORM 정리 프로그래밍은 절차지향, 객체지향, 함수형 프로그래밍 같은 개발 지향적 방법이 있습니다. 비슷하게 데이터베이스도 데이터를 저장하고, 데이터에 접근하여 읽기 위해 사용하며 효율적으로 데이터를 저장하기 위한 방법이 있습니다. 대표적으로 관계형(RDB)으로 저장하거나 비관계형(NoSQL DB)으로 저장하기도 합니다. 자바를 기준으로 DB를 사용하려면 아래같은 구조가 필요합니다. 자바 어플리케이션 -> 데이터 접근 인터페이스 -> 데이터 베이스 자바어플리케이션에서 데이터베이스에 접근하기 위해 데이터 접근 인터페이스를 통해 연결을 구현하고 데이터를 교환하게 됩니다. DB에서 데이터를 교환하는 과정을 크게 풀어보면 다음과 같습니다. - DB에 Connection을 연결합니다. - Connection 을 통해 SQL을.. 2024. 1. 29.
[DB] 데이터 모델링, 관계형 데이터베이스에서 1:1, 1:N, N:N 관계 데이터베이스 설계를 하기 위해 데이터 모델링을 공부하고 있습니다. 요구사항 분석-개념적 모델링- 논리적 모델링- 물리적 모델링 단계를 거쳐 데이터베이스를 설계하는 것이 일반적이긴 하기에 이 방법대로 진행하고 있습니다. - 요구사항 분석 : 저장이 필요한 요소가 어떤게 있는지 모아서 정리 - 개념적 모델링: 중요 개념을 기준으로 핵심 Entity 도출, ERD 작성 - 논리적 모델링: Entity를 구체화하고 상세 속성을 작성, 엔티티간 관계 정의 및 정규화, ERD 세부작성 - 물리적 모델링: 데이터베이스 생성 계획에 따라 개체 인덱스 등을 생성, 테이블 및 인덱스 설계 모델링을 하는데 있어 데이터 관점(데이터 위주), 프로세스 관점(처리과정 위주), 상관 관점(데이터와 처리과정의 적절한 조합)에서 모델.. 2024. 1. 27.
[Mysql] LEFT JOIN 이용하는방법. (NOT IN 대체하기) MySQL에서 특정 항목들을 제외시킬 때 주로 사용하는 명령어가 NOT IN 인데, 속도가 만족스럽지 못할때가 있다.. 이때는 LEFT JOIN명령어를 대신 사용할 수 있다. 예를 들어, select * from cdr where calldate not in ( select calldate from cdr where disposition = 'ANSWERED') 의 경우는 다음과 같이 바꿀 수 있다. select t1.calldate from cdr as t1 left join ( select calldate from cdr where disposition = 'ANSWERED') as t2 on t1.calldate=t2.calldate where t2.calldate is null 2023. 7. 31.
[OracleDB] 오라클 DB 계정 생성하기, 21c 버전 21c 버전 기준으로 오라클 DB에 계정을 생성하는 방법을 정리하고자 합니다. SQL plus 에 접속 후 admin 계정인 system 으로 로그인 후 스크립트를 입력합니다. create user [id] identified by [pw]; grant connect, resource, dba to [id]; 그런데 계정생성중에 오류가 확인됩니다. 1행에 오류: ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 오라클 12c 버전부터 사용자명에 c##을 붙이지 않으면 오류가 발생할 수 있어서 그렇습니다. 11g 버전까지는 아무 문제없이 계정생성 가능하지만, 12c 부터 계정 생성을 하려면 사용자명에 c##(c##scott)을 붙이거나 _oracle_script 설정을 true로 변경해야 합니.. 2023. 7. 17.
[OracleDB] 오라클 DB 설치 및 사용방법(Express Edition(XE), sql plus, sql developer) oracle db는 아는분은 아시겠지만 라이센스가 필요합니다. 기업에선 유료로 사용하고 있는 것이죠.그렇다보니 규모가 있는 기업이 아니면 오라클 db를 사용하지 않는 곳이 꽤 되었었습니다. 기업에서 오라클 db를 다루지 않아 접할 일이 없어 공부할 필요가 없는 경우도 있었구요.최근엔 오픈소스 기반인 postgre db로 넘어가는 추세다보니 oracle db를 쓰는 곳이 점차 줄어가고 있다고 생각합니다만, 그럼에도 시장점유율은 높은 편이며, postgre db와 유사하여 공부해 두면 도움이 된다고 생각합니다.그러면 공부하기 위해 설치 및 사용방법부터 알아야 하는데, 해당 포스팅에선 설치방법 및 사용방법을 정리해두려 합니다. 1. 오라클 라이센스 확인하기 설치 전에 라이센스를 확인해두는게 좋습니다. 오라클 .. 2023. 7. 17.
[sql] NVL 함수, 쿼리 null 처리하기 data의 값이 null일 경우 대체값으로 출력하고 싶을 때 사용하는 함수다. 1 NVL("값","지정값") cs NVL 쓰고 안쓰고 차이 구분하기 SELECT no, name, salary from table SELECT no, name, NVL(salary,0) AS salary from table 2023. 7. 17.
[sql] 윈도우 함수, 알고 넘어가기 윈도우 함수는 고급 SQL 기능인데요. 이는 분석가뿐만 아니라 보고서를 만드는 사람, 데이터를 가공하는 그 누구에게도 상당히 유용한 기능입니다. 윈도우 함수(Window Function)가 무엇인가요? 윈도우 함수는 테이블 내부에 '윈도우 프레임'이라고 부르는 범위를 정의하고, 해당 범위 내부에 포함된 값을 자유롭게 사용할 수 있습니다. 윈도우 함수는 GROUP BY와 상당히 유사합니다. 이유는 윈도우 함수도 GROUP BY처럼 여러 행의 집계 값을 계산할 수 있기 때문입니다. 하지만, GROUP BY와 달리 윈도우 함수는 여러 행들을 합쳐 1개의 행으로 만들지 않습니다. 기존에 있던 원래 값은 그대로 두고 집계 값만 추가로 구할 수 있습니다. 이 기능은 데이터 분석가, 마케터, 재무 담당자에게 꽤나 유.. 2023. 7. 17.
[sql] join 문법 정리, inner join, outer join SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN) 하나의 테이블에 원하는 데이터가 모두 있다면 참 좋겠지만, 두 개의 테이블을 엮어야 원하는 결과가 나오는 경우가 많습니다. 여기서 조인을 쓰면 두 개의 테이블을 엮어서 원하는 데이터를 추출할 수 있습니다. JOIN 5줄 요약 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인)은 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. CROSS JOIN(상호 조인)은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능.. 2023. 7. 14.
[sql] group by, partition by 사용방법, 그룹화/ 묶어서 표현하기 PARTITION BY 와 GROUP BY PARTITION BY와 GROUP BY절은 복잡한 분석을 할 때 꽤나 자주 쓰게 될 SQL 문법입니다. 데이터를 단순히 반환하는 것만으로도 유용할 때가 있겠지만, 우리가 마주하는 상황은 종종 더 복잡한 계산을 하는 상황이기 때문입니다. 한 단계 발전된 분석을 위해 우리는 GROUP BY와 PARTITION BY를 사용합니다. 이 둘은 데이터를 "그룹화"한다는 점에서 유사하지만, 둘 사이에는 아주 큰 차이점이 존재합니다. GROUP BY GROUP BY 절은 특정 기준으로 데이터를 정의하고자 할 때 사용합니다. 보통 이런 기준은 우리가 분석을 할 때 분류 기준으로 삼는 것들입니다. 예를 들자면, 임직원의 정보를 그들의 '연봉 인상률'을 기준으로 그룹화할 수 있고.. 2023. 7. 14.
[sql] DB 설계, 어떻게 하는걸까? DB를 설계한다라... 테이블 만들고 테이블 만들고... 인덱스 잡고... 사실 잘 모르겠다. db에 대해선 전문적으로 공부한 적이 없는 것 같다. 실제로 설계는 해본적이 있으나, 기초적인 지식들 뿐이다보니 방법론이나, 뷰의 활용, 인덱스의 활용 설계시 생각해야 하는 원칙 같은건 알 방법이 없었다. 가르쳐 줄 사람이 없을 뿐만 아니라, 개발할 일이 더 많았기 때문이다. 결국 닥치는데로 해야했으며, 그렇게 경험을 쌓아보니 db설계가 왜 어려운지 실감하게 되었다. 사실 이게 돈이 되는 기술이라 누구한테 배우기도 어렵다. 적어도 내가 생각하기에 공유할 수 있는 부분들을 포스팅 해보려 한다. - 설계를 하면서 성능적인 면을 고려하는게 좋다. DB의 역할로써 데이터를 저장하는 기능을 가진다. 이는 비용이 드는 일.. 2023. 7. 14.
[sql] NULL 널? 개념, NULL 중요도와 연산, 선택, NULL관련 함수 종류, NULL 정렬 (널 사랑하겠어) DB에서 null은 무엇일까? null로 저장 되는게 무슨 의미를 가질까? null(NULL)은 아직 정의되지 않은 값 입니다. NULL은 0이 아니며, 공백도 아닙니다. 그저 NULL이라는 것으로 표현되며 정의 되지 않은 것으로 여겨집니다. NULL은 unknown 또는 N/A(not applicable)이라 쓰기이도 합니다. *** 오라클의 경우에는 사용자가 ' '(공백) 만 VARCHAR2 데이터 타입에 INSERT를 하면 내부에서 자동적으로 NULL로 바꿔서 저장해줍니다. (오라클은 공백 문자열이 저장되는 걸을 허용하지 않음 그냥 NULL로 처리) 그렇다고해서 공백 = null 이라고 하는건 틀린 겁니다. (원래 공백과 null은 다른 개념입니다.) 보통 테이블을 생성할 때 기본키는 NULL일 수.. 2023. 7. 13.