본문 바로가기

Database24

[Spring] 해시태그 검색 데이터베이스 설계 및 쿼리 구성 프로젝트에 해시태그 검색을 구현 중이다. 하나의 Study 객체가 여러 해시태그에 연결될 수 있어야 한다. (여기서 스터디란 여러 사람들의 모임이다. 공부할 때 모이는 그 스터디 맞다.) 가장 먼저 떠오르는 것은 (스터디), (해시태그), (스터디-해시태그) 이렇게 3개의 테이블을 구성하는 것인데, 이 방식으로 구현 가능하리란 판단이 들었고 만들기 시작했다. 테이블 STUDY HASHTAG_RELATION HASHTAG 역할 스터디 entity만 담는 테이블 스터디 : 해시태그 1 to N 관계의 테이블 해시태그만 저장한 테이블 STUDY 테이블 : 스터디 번호, 이름, url 등 오로지 스터디 관련 정보만이 담겨있다. 해시태그 관련 정보를 담는 컬럼은 없다. HASHTAG_RELATION 테이블 : 스.. 2021. 5. 27.
[Mybatis] select 문에 String 검색어 추가하기 아래와 같이 parameter로 searchKeyword를 넣어주며 시도했는데, searchKeyword에 아무값도 들어가지 않은 듯 모든 컬럼을 select하는 문제가 발생했다. SELECT CO_URL, CO_NAME, CO_INTRODUCE, MB_NAME, MB_ADDRESS1, MB_ADDRESS2 FROM COMPANY C JOIN MEMBER M ON C.MB_NO = M.MB_NO WHERE (C.CO_URL LIKE '%' || #{searchKeyword} || '%') OR (C.CO_NAME LIKE '%' || #{searchKeyword} || '%') 오류도 없이 전체를 select하며 잘 동작하는 중 문제의 원인은 || 이었다. SELECT CO_URL, CO_NAME, CO.. 2021. 5. 2.
[MyBatis] insert한 컬럼의 id를 return하기 insert문을 실행한 후 해당 컬럼의 id를 바로 return해주고 싶었다. INSERT INTO COMPANY( MB_NO , CO_URL , CO_NAME ) VALUES ( #{ownerNumber} , #{url} , #{name} ) SELECT LAST_INSERT_ID() 문 내부에 문을 작성하면 해당 insert 직후에 id를 리턴받을 수 있다. 리턴된 id값은 DAO에서 받아올 수 있다. insert했던 companyNumber의 id값이 리턴된 값으로 변경된 상태이다. @Override public CompanyVO selectOneByNumber(int companyNumber) { return sqlSession.selectOne("companyMapper.selectOneByNu.. 2021. 5. 2.
[데이터베이스] DDL, DML, DCL, DQL, TCL 의 정의 및 주요함수 1. DDL - Data Definition Language 데이터 정의어 주요 함수 CREATE - 생성 ALTER - 수정 DROP - 삭제 2. DML - Data Manipulation Language 데이터 조작 언어 주요 함수 INSERT UPDATE DELETE 3. DCL - Data Control Language 사용자의 권한이나 관리자 설정을 처리하는 언어 주요 함수 GRANT REVOKE 4. DQL - Data Query Language 데이터 질의어 주요 함수 SELECT WITH GROUP BY 5. TCL - TransactionControl Language 트랜잭션이란 한꺼번에 실행되어야 할 작업단위 주요함수 Commit Rollback 2021. 3. 12.
[오라클] 일정 숫자만큼 규칙적으로 증가하는 입력 [시퀀스] - 생성, 사용, 수정, 초기화하기 1. 시퀀스의 생성 시퀀스 생성의 기본 틀 : create sequence {시퀀스명} start with {시작 숫자} increment by {증가량} maxvalue {최대값 nocycle; create sequence seq_user_no start with 3 increment by 2 maxvalue 300 nocycle; seq_user_no 라는 이름의 시퀀스를 생성한다. 3 부터 시작하고 쿼리 의미 create sequence seq_user_no seq_user_no 라는 이름의 시퀀스를 생성한다. start with 3 시작 숫자는 3이며 increment by 2 2씩 증가하고 maxvalue 300 최대값은 300이다. nocycle; 최대값에 도달하더라도 초기화하지 않는다. 2... 2021. 3. 11.