목록프로그래밍 언어/SQL(DB) (22)
IT 일기장
오라클 테이블 만들때, 붙여주면 좋은 주석 추가 기능이다. 자주 쓰이니 까먹을때 들어와서 봐야지.. -- 테이블 Comment 설정 COMMENT ON TABLE [테이블명] IS '[Comment(주석)]'; ex) COMMENT ON TABLE TEST_TABLE IS '테스트 테이블'; -- 컬럼 Comment 설정 COMMENT ON COLUMN [테이블명].[컬럼명] IS [Comment(주석)]'; ex) COMMENT ON TABLE TEST_TABLE.DEPT IS '부서'; ex) COMMENT ON TABLE TEST_TABLE.MEM_TYPE IS '회원유형';
통합검색 고도화 진행 후 반영 중에 있었던 일이다 개발서버에서 테스트를 해보고 반영을 해봤는데.. 운영서버에서는 SQL 에러로 입구 컷을 당했다 에러내용은 다음과 같았다 Unknown column 'menu_topname' in 'window partition by' 구글링을 해봐도.. 별짓을 다 해봐도 안돼서 도움을 요청했는데, 원인은 원칙적으로 oracle이나 mysql 같은 DBMS에서는 SELECT 구문에 alias로 선언한 변수를 그룹 함수인 partition by , order by에 바로 쓸 수 없다는 것이었다. 우리 개발서버는 MariaDB라고 하는데 이 MySQL이나 MariaDB 같은 DBMS는 커스터마이징이 꽤 돼있어서 쓸수 없는 쿼리도 사용할 수 있게 만들어 놓은거라고 하더라.. 아..
내가 진행하는 프로젝트 중 검색 제목, 검색 키워드, 검색 내용을 추가해서 그 3개와 연관된 제목과 컨텐츠 상세까지 보여주게 해달라는 요청 건이 들어왔다. 수석님께 도움을 요청했다. "가능하지만 관리자 쪽에서 직접 수기로 작성해야 되고 검색속도는 보장 못한다. 우리는 검색 솔루션 회사가 아니기 때문에 그 부분은 감안해야된다." 라고 얘기해주셔서 우선 기획자분이 컨펌 안받았으니 미리 개발 하지말고 대기하라고 해주셨다 그리고나서 수석님이 인덱스에 대해서 가르쳐주셨는데 난 단순히 "속도 빠르게 해주는거다." 라고만 기억하고 있었을뿐, 어떤 방법으로 속도를 빠르게 해주는건지는 몰랐다. 수석님의 설명을 들어보니 이해가됐다.. 예를들어 1000장 짜리 종이로 써져있는 회원들의 정보가 있다고 하자. 이 1000장 짜..
내가 수행 했었던 프로젝트에서 고객이 17시 교육청 별로 각 게시물에 답변과 댓글수가 몇 개 등록 돼있는지에 대한 통계가 필요하다고 하셨는데.. 설계 계획은 다음과 같았다. # 계획 1. 답변을 등록한 게시물과 댓글을 등록한 게시물을 함께 갖고온다 (UNION ALL) 2. 게시물 중에 중복되는 부분은 제거한다. (DISTINCT) 3. 댓글과 답변수를 집계한다. (PARTITION BY) 4. UNION ALL로 합쳤기 때문에 PARTITION BY로 집계하면 댓글과 답변수가 합쳐진 수로 나옴 5. 댓글수와 답변수를 분기시키기 위해서 답변수에 조건을 부여함 # 추가 조건 답변수는 무조건 0개 아니면 1개이기 때문에 해당 교육청이 답변을 등록 했느냐 안했느냐에 따라 결정됨 PARTITION BY로 집계한..
다국어 사이트를 만드는중에 중국어랑 일본어가 DB에서 깨지는 현상이 발견됐다 야근인가… 바로 생각이 들었는데 해결책은 있었다 # 1번째 방법 일단 현재 DB의 CHARACTERSET 속성을 봐야되는데 일단 조회해본다 SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'; 내 컴퓨터의 경우 결과값은.. PARAMETER VALUE NLS_CHARACTERSET KO16MSWIN949 NLS_NCHAR_CHARACTERSET AL16UTF16 저 NLS_CHARACTERSET을 AL32UTF8로 변경해줘야된다 UPDATE sys.props$ SET value$='AL32UTF8' WHERE name='NLS_CHARACTERS..
공지사항이 글을 올린지 10일 이후에 미공지로 변경되는 로직을 짤 때 착안한 함수다 쿼리를 보듯이 현재 날짜와 DB에 저장돼있는 날짜를 비교해서 두 시간의 차이가 10일 보다 큰 식을 표현했다 쓰는 곳이 있었어서 정리해둔다 select * from kofac_mig.t_board where delyn = 'N' and bc_notice != and TIMESTAMPDIFF(day, regdt, now()) >= 10;
1. oracle 11g 먼저 설치 (화면에 보이는 다운로드 2개 받아준다) 2. setup.exe 눌러서 실행 3. 보안 갱신 수신 체크 X 4,. 데이터베이스 생성 및 구성 5. 데스크톱 클래스 6. orcl / 2020goodIT 입력 (필자는 itgood으로 작성) 7. 완료 8. "누락된 또는 부적합한 옵션", "the account is locked" 에러가 뜨는데 무시하자 9. 그리고 아까 설정했던 계정으로 로그인을 하면 이런 에러가 뜨던데.. ORACLE 11G ORA-01017: invalid username/password; logon denied sqlplus 실행해서 사용자명 sys as sysdba 입력하고 비밀번호 없이 엔터치면 접속되더라. (아무래도 관리자 계정인듯 하다) 알고..