목록WEB/DB (9)
hello world
select CASE WHEN CHAR_LENGTH(name) > 2 THEN concat( substring(name, 1, 1) ,LPAD('*', CHAR_LENGTH(name) - 2, '*') ,SUBSTRING(name, CHAR_LENGTH(name), CHAR_LENGTH(name)) ) ELSE CONCAT( SUBSTRING(name, 1, 1) ,LPAD('*', CHAR_LENGTH(name) - 1, '*') ) END as name_masking
1. VIEW 테이블이란? - 하나의 가상 테이블이라고 생각하면된다. - 실제 데이터가 저장되는것이 아니다, 뷰를 통해 데이터를 관리할 수 있다. - VIEW와 TABLE과의 차이점은 그냥 TABLE은 실질적인 데이터가 있지만 VIEW는 데이터가 없고 SQL만 저장한다. 1-1) 뷰 생성 쿼리 CREATE 생략가능[OR REPLACE] 생략가능[FORCE | NOFORCE] VIEW 뷰명 AS (SELECT문) 생략가능[WITH CHECK OPTION 생략가능[CONSTRAINT 제약조건명]] 생략가능[WITH READ ONLY 생략가능[CONSTRAINT 제약조건명]] - OR REPLACE option : 해당 구문 사용하면 뷰를 수정할 때 DROP 없이 수정 가능 - With Check option..
MySql 에서 두 날짜간 차이를 가져올 때 사용하는 함수 DATEDIFF : 단순히 일 차이를 가져올 때 사용하는 함수 DATEDIFF(END_DATE, START_DATE); 연, 분기, 월 ,주, 일, 시 , 분, 초를 지정하여 가져올때 사용하는 함수 TIMESTAMPDIFF 함수 단위 SECOND(초)/MINUTE(분)/HOUR(시)/DAY(일)/WEEK(주)/MONTH(달)/YEAR(년)/QUARTER(분기) TIMESTAMPDIFF(단위, END_DATE, START_DATE); DATEADD: 단순히 일 차이를 가져올 때 사용하는 함수 1) dateadd(day,1,getdate()) // 1일 더하기 2) dateadd(month,1,getdate()) // 1월 더하기 2) dateadd..
INNER JOIN Inner join은 쉽게말해서교집합 이라고 표현된다. 또한 쿼리는 다음과 같은 방법들로 작성된다. select * from A inner join B on A.번호= B.번호 select * from A,B A.번호=B.번호 INNER JOIN된 결과를 보면 A 테이블과 B테이블이 모두 가지고 있는 데이터만이 검색됨 OUTER JOIN OUTER JOIN은 FULL OUTER JOIN의 경우 빼고는 특정 테이블을 기준으로 데이터를 보여준다. Outer join은 Full Outer Join / Left Outer Join / Right Outer Join 크게 세가지 종류로 나누어 진다. 먼저 1.LEFT OUTER JOIN Left Outer Join은 왼쪽 테이블 기준으로 JOI..
1.프로시저(Procedure) -- 프로시저 : 이름, 매개변수, 반환값(x) CREATE OR REPLACE PROCEDURE hello -- 매개 변수가 없으면 () 생략 IS -- 프로시저의 시작 msg VARCHAR2(20) := 'hello world'; -- 변수 초기값 선언 BEGIN -- 문장의 시작 DBMS_OUTPUT.PUT_LINE(msg); END; -- 문장의 끝 / -- 프로시저 종료 - DBMS_OUTPUT.PUT_LINE 활성화 SET SERVEROUTPUT ON; -프로시저의 실행 EXEC hello; 2.프로시저 예제 (IN / OUT / IN OUT 형태) 2-1) 사원번호를 받아 해당 사원 급여를 올려주는 프로시저 (in) --IN 매개변수 --IN : 값이 프로시저..
[특정 문자가 포함된 프로시저를 검색해 주는 쿼리] 특정 단어가 포함된 프로시저를 검색해주는 쿼리 아래의 custNm에 검색하고 싶은 문자를 입력하면 된다. SELECT * FROM USER_SOURCE WHERE 1=1 AND TYPE IN ('PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'FUNCTION') AND text LIKE '%custNm%' ORDER BY NAME, LINE; [생성된 프로시저 목록 전체 검색] SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='PROCEDURE'; SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE='FUNCTION';
[인덱스(Index) 란]인덱스란 지정한 컬럼들 기준으로 일종의 목차를 생성하는 것이라고 볼 수 있다.또 인덱스란 데이터 검색 속도 향상을 위해 사용되는 기술이다. lee 를 찾는다고 가정했을 때 , 아래와 같은 상황에서는 모든 자리를 찾아봐야한다. 또 사람이 많아지면 많아질수록 시간이 오래걸린다.4-kim 5-park 6-lee 1-lim 2-koo 3-ju하지만 아래와 같이 목록을 만들어 둔다면 원하는 데이터만 찾을수있기 때문에 빠르다.1-lim 2-koo 3-ju 4-kim 5-park 6-lee 인덱스를 사용하면 좋은 경우1.테이블 행의 갯수가 많은 경우2.인덱스를 적용한 컬럼이 where절에서 많이 사용되는 경우3.검색 결과가 원본 테이블 데이터에 비해 적을 경우(2-4%)4.해당 컬럼이 nul..
[iBatis, myBatis 동적 테이블명 에러 ] 쿼리에서 파라미터로 테이블명을 받아와서 바꿔주고 싶은 경우가 있다. 그경우에 아래와 같은 쿼리를 사용할경우 select * from #tableNm# Translating SQLException with SQL state '42000', error code '903', message 테이블이 존재하지않습니다 라는 메시지를 마주한다.. 해결방안은 간단하다 ##이아니라 $$를 사용하는것.... select * from $tableNm$ $$ 는 동적 테이블 명이나 동적 컬럼명에 사용할수 있다_!