Lang/SQL(17)
-
다중행을 하나의 배열로 조회하기
- 환경 : PostgreSql - 함수 : array_agg / array_to_string 카테고리 테이블 아이템 테이블 위와 같은 테이블이 있을 때 최종적으로 위와 같은 정보를 화면에 보여주려 한다. 최근 스프링부트와 리액트를 이용해 웹페이지를 만드는 도중, 팀원이 위와 같은 형태의 데이터를 가져올 때, 먼저 DB에서 카테고리 테이블 데이터를 가져와 List로 만든 후, 해당 카테고리 List를 for문을 돌려 다시 반복적으로 DB에 접속해, 각 카테고리에 해당하는 아이템 테이블 데이터를 조회해온 후, 가져온 데이터를 다시 반복문을 돌려 하나의 문자열로 연결한 뒤 카테고리 객체에 합쳐주는 것을 보았다. 이런 경우 db도 불필요하게 많이 접속할 뿐만 아니라 불필요한 반복문을 돌리는 등 번거로운 작업이..
2023.03.30 -
16. 정규화
1. 테이블 분할 정규화 데이터의 중복저장 방지 일관성이 깨지는 현상 해결 2. 제1정규화 반복되는 속성이나 그룹 속성 제거 기본테이블의 기본키를 추가해 새로운 테이블 생성 1:N 관계 형성 반복속성 제거, 기본키 추가해 새로운 테이블 생성 3. 제2정규화 복합키로 구성된 경우 모든 컬럼은 복합키 전체에 의존적이어야 한다 복합키 일부에 의존적인 컬럼은 제거해야 한다 복합키 일부에 의존적인 컬럼은 제거 4. 제3정규화 기본키에 의존하지 않고 일반컬럼에 의존하는 컬럼 제거 5. 역정규화 정규화된 테이블 정규화된 스키마는 가장 작은 단위로 테이블에 나뉘어져 있다 데이터 입력, 수정 시 관계를 맺는 테이블을 참조해야 한다 연관된 정보를 얻기 위해 조인을 수행 시스템의 부하 시스템 퍼포먼스 향상을 위해 정규화 위..
2023.03.28 -
ex. 기타
바인드 입력 select case (select count(*) from member where id=:id and passwd=:pwd) when 1 then '로그인 성공' else case (select count(*) from member where id=:id) when 1 then '비밀번호 불일치' else '해당 아이디가 존재하지 않음' end end 로그인 from dual; --:id, :pwd에 바인드된 값 각종 참조 시스템 뷰 USER_TABLES : 해당 사용자가 생성한 테이블 내역 USER_CONSTRAINTS USER_INDEXES USER_OBJECTS user_source : 저장프로시저, 함수 확인
2023.03.28 -
15. 분석함수
데이터를 분석하는 함수 분석함수(파라미터1, 파라미터2~) over( ) 1. 순위함수 rank, dense_rank, row_number partition 절에 있는 각 행의 순위를 리턴 rank 동일한 결과값일 때는 순위가 같다 다음의 결과값은 동일한 결과값의 개수를 더하여 리턴 1등, 공동2등, 4등 dense_rank 동일한 결과값의 건수가 여러개여도 다음값은 1만 더한다 1등, 공동2등, 3등 row_number partition 내 분할되어 정렬된 row별로 순위를 1부터 순차 적용 데이터별 유일 순위를 뽑을때 사용 1등, 2등=3등,4등 select department_id, employee_id, first_name, hire_date, salary, rank() over(order by ..
2023.03.28 -
14. 트리거
1. 트리거 (Trigger)란 서브프로그램 단위의 하나 특정 사건이 발생될 때마다 자동으로 해당 PL/SQL블록이 실행 데이터베이스 내 오브젝트로 저장되어 관리 사용자가 지정해서 실행 불가 생성시 정의한 특정 사건에 의해서만 묵시적으로 자동실행 트리거 유형 DML 트리거 실행 brfore trigger dml이벤트를 trigger하기 전에 trigger 본문을 실행 after trigger dml이벤트를 trigger한 후에 trigger 본문 실행 instead of trigger trigger문 대신 trigger본문 실행, 다른 방법으로 수정 불가능한 뷰에 이용 영향 문장 트리거 영향을 받는 행이 없더라도 트리거가 한번은 실행 행 트리거 테이블이 트리거 이벤트의 영향을 받을 때마다 실행 영향을 받..
2023.03.28 -
13. 데이터 딕셔너리
1. data dictionary 데이터베이스 내에 저장된 모든 객체의 정보를 제공해주는 테이블 내용 모든 스키마 오브젝트 스키마 오브젝트에 의해 현재 사용된 공간 컬럼들의 기본값 제약조건 정보 오라클 사용자 이름 각 사용자에게 부여된 권한과 롤 auditing 정보 종류 DBA_xx : 데이터베이스 관리를 위한 정보 제공 ALL_xx : 사용자가 접근가능한 모든 스키마의 정보 제공 USER_xx : 자신이 생성한 오브젝트 정보 제공 V$_xx : DB의 성능 분석/통계정보 제공하며 X$ 테이블에 대한 view X$_xx : DB의 성능 분석/통계정보를 제공하는 테이블 select * from dictionary; --모든 정보 출력 select * from dict_columns; -- 위 테이블의 각..
2023.03.27