[MyBatis] ${} 와 #{} 차이점
·
STUDY/DB SQL
${} 와 #{} 차이점 #{} 파라미터가 String형태로 들어와 자동적으로 파라미터 형태가 된다 = 값에 ' '가 자동으로 붙음 예를들어 #{username}의 username의 값이 abc라면 쿼리문에서는 USERNAME = 'abc'의 형태가 된다. PreparedStatement 통해 악의적인 쿼리주입을 예방할 수 있음 보완차원에서 유리 주로 사용자의 입력을 전달할때 사용 Mapper SELECT * FROM MEMBER WHERE ID = #{ID} and PW = #{PW} 매퍼에서 이러한 쿼리를 mysql로 보낸다고 가정하면 Mysql SELECT * FROM MEMBER WHERE ID = ? and PW = ? Mysql은 이런식으로 받아오게되고 컴파일한다 실제 실행시 SELECT * ..
[MyBatis] resultType resultMap parameterType parameterMap
·
STUDY/DB SQL
resultType resultMap parameterType parameterMap resultType : 비즈니스 로직으로 반환할, 결과값의 자료형 resultMap : 비즈니스 로직으로 반환할, 결과값을 담은 객체 parameterType : 비즈니스 로직으로부터 전달 받은, SQL 구문에 사용될 매개변수의 자료형 parameterMap : 비즈니스 로직으로부터 전달 받은, SQL 구문에 사용될 매개변수를 담은 객체 resultType 하나의 변수를 반환할 때 select name from testTable where 1=1 and use = 'Y' and seq = 52 select count(*) from testTable where 1=1 and use = 'Y' select * from te..
[SQL] 오라클 ORA-01810: 형식 코드가 두 번 나타났습니다
·
STUDY/DB SQL
ORA-01810: 형식 코드가 두 번 나타났습니다(format code appears twice)위와 같은 에러 발생시 해결방법 정리     원인 SELECT TO_DATE('2020-01-01', 'YYYY-MM-DD HH:mm:ss') FROM DUAL; 쿼리에서 month의 MM과 minute의 mm을 구분하지 못하고 동일하게 인식하여 발생하는 에러.  해결 SELECT TO_DATE('2020-01-01', 'YYYY-MM-DD HH:mi:ss') FROM DUAL;  minute의 mm을 mi로 변경시켜 month와 구분시켜 줘야 함.   출처 : https://developing-move.tistory.com/22
[SQL] 오라클 날짜 검색 방법 총 정리
·
STUDY/DB SQL
SELECT * FROM 테이블명 WHERE REGDATE BETWEEN #{startDate} AND #{endDate}; 조회가 안되서 찾아보니 여기에 문제점이 있다는 것을 확인했다. REGDATE의 자료형은 DATE이다.자료형을 맞춰주기위해 DATE자료형을 문자열로 바꾸거나,문자열을 DATE자료형으로 형변환 시켜주어야 한다.  DATE자료형[컬럼]을 문자열로 변경하여 검색하는 방법 (권장x)SELECT * FROM 테이블명 WHERE TO_CHAR(REGDATE, 'YYYYMMDD') >= #{startDate} ANDTO_CHAR(REGDATE, 'YYYYMMDD' 비교연산자로도 동일한 결과가 검색되지만 특수한 경우가 아니면 BETWEEN연산자를 사용할 것을 권장.SELECT * FROM 테이블명..
[SQL] 오라클 함수 생성·수정·삭제하기
·
STUDY/DB SQL
인증 페이지에서 고객명을 뽑아내야하는데, 인증 페이지에는VERIFY_AUDIO , USER_VERIFY 테이블만 사용했다.해당 테이블엔 CUSTOMNAME이라는 고객명 데이터가 있는 컬럼이 없으므로 USER_TRAIN이라는 테이블의 CUSTOMNAME이라는 컬럼에서 고객명을 가져오는 함수를 생성했다.기존함수가 있으므로 그것을 바꿔서 사용하면 되었는데,수정은 아래와 같이 create or replace function 을 사용하면 된다.CREATE [OR REPLACE] FUNCTION 함수명 (매개변수)RETURN 데이터타입IS 주요 변수 선언(지역 번수)BEGIN 실행문; RETURN 값;END;  1.기존함수 조회1-1) 현재 사용자가 소유한 모든 함수를 확인--..
[SQL] 문자형(VARCHAR)을 숫자형(NUMBER)로 변환
·
STUDY/DB SQL
오라클에서 SEQ 컬럼의 ORDER BY 절 결과가 이상하게 나와 살펴보니 SEQ 컬럼의 데이터타입이 숫자가 아니라 문자(VARCHAR2)였다. 데이터타입을 의심하지않고 계속 ORDER BY절이 안먹히는 것에 꽂혀서 문제를 푸는데 시간이 걸렸다. 항상 아는 것에, 포커싱을 어디에 두는지에 의심하는 버릇을 들여야겠다. TO _NUMBER() 변경 전 OERDER BY SEQ 변경 후 ORDER BY TO_NUMBER(SEQ) 문자컬럼을 숫자크기에 따라 정렬하려면 위와 같이 TO _NUMBER() 함수를 사용해 정렬하면 된다.
[SQL] COUNT(), AVG() , SUM() 함수 정리
·
STUDY/DB SQL
COUNT(), AVG() , SUM() COUNT() 구문 SELECT COUNT(column_name) FROM table_name WHERE condition; COUNT()함수는 지정된 기준과 일치하는 행 수를 반환합니다. 전체 행 갯수 가져오기 SELECT COUNT(*) FROM 테이블; 컬럼 데이터 갯수 가져오기 SELECT COUNT(컬럼) FROM 테이블; AVG() 구문 SELECT AVG(column_name) FROM table_name WHERE condition; AVG()함수는 숫자 열의 평균 값을 반환합니다. - 컬럼의 데이터 타입이 숫자일 때, 특정 컬럼 값이 NULL 인 값을 제외한 모든 데이터의 합을 리턴 SUM() 구문 SELECT SUM(column_name) FRO..
[SQL] UNION, UNIONALL
·
STUDY/DB SQL
SQL UNION 연산자 연산자 UNION는 둘 이상의 명령문의 결과 집합을 결합하는 데 사용됩니다 SELECT내의 모든 명령문에는 UNION동일한 수의 열이 있어야 합니다. 열의 데이터 유형도 유사해야 합니다. 모든 명령문의 열도 SELECT동일한 순서여야 합니다. UNION 각 쿼리의 결과 합을 반환하는 합집합 (중복제거) UNION ALL 각 쿼리의 모든 결과를 포함한 합집합 (중복제거 안함) UNION select 컬럼... from 테이블A union select 컬럼... from 테이블B UNION ALL select 컬럼이... from 테이블A union all select 컬럼... from 테이블B