WORK/DB 44

MYSQL 연락처 자르기

java단에서 해도 되긴 하지만 sql문장에서 그냥 해버려도 되는게 편할데가 있다.물론 엄청나게 많은 데이터 조회라면 문제가 될지는 모르겠지만.. SELECT USER_ID, USER_NAME, USER_TELFROM USER_INFO 라는 테이블이 있다고 가정 했을때 ,USER_TEL 컬럼에는 '010-1234-5678' 이라는 데이터를 '-' 기준으로 잘라보자. SELECT USER_ID , USER_NAME , USER_TEL , REGEXP_SUBSTR(USER_TEL, '[^-]*') AS USER_TEL1 , REGEXP_SUBSTR(SUBSTR(USER_TEL, REGEXP_INSTR(USER_TEL,'-')+1, LENGTH(USER_TEL)), '[^-]*') AS USER_TEL2 , ..

WORK/DB 2018.02.28

INSERT 후 PK 값 얻어오기

xml에서 insert 후 pk값 가져오는걸 알아보자. 이건 A_TABLE INSERT 후 그 키값을 FK값으로 B_TABLE 에 INSERT 해야 할때 쓰면 유용할 것이다. 먼저 MYSQL 에서 알아보자. CREATE TABLE USER_INFO (USER_ID INT NOT NULLUSER_NAME VARCHAR(20) ,USER_TEL VARCHAR(20)) 이러한 테이블이 있을때 USER_INFO 테이블 INSERT 후 USER_ID 값을 다른 테이블에 저장하려고 할 경우쓰면된다. // 이부분 추가 SELECT LAST_INSERT_ID() INSERT INTO USER_INFO ( USER_ID , USER_NAME , USER_TEL )VALUES ( 12345, '홍길동', '010-1234..

WORK/DB 2018.02.12

mysql function 생성하기

mysql function 생성하기 SELECTCODE_NAMEFROM TB_CODEWHERE CODE = ''AND GRP_CODE= '' 이러한 SELECT 문으로 FUNCTION 을 만들어 보자 CREATE FUNCTION "FUNCTION 명" (변수값1 타입 , 변수값2 타입) RETURN 타입BEGIN DECLARE 변수명 varchar(50); // 변수선언// 아래에는 조회할 SELECT 문장SELECTCODE_NAMEINTO 변수명 // 조회한 컬럼값인 CODE_NAME 을 변수에 넣는다.FROM TB_CODEWHERE CODE = '변수값1'AND GRP_CODE= '변수값2' RETURN 변수명 END 위에 코드는 복사해 가시고 ㅎㅎ밑에는 실제 만든 FUNCTION 입니다 CREATE..

WORK/DB 2018.02.07

MYSQL GROUP_CONCAT (세로컬럼 가로로 합치기 )

MYSQL GROUP_CONCAT 사용하기 이건 MSSQL 에서의 FOR XML PATH() 기능과 같다. 세로로 출력된 데이터 값을 인자값으로 구분하여 한 컬럼안에 뿌려주는 기능이다. 위와같은 테이블이 있다고 가정 했을때 아래 그림처럼 데이터를 추가 해 보자 INSERT INTO STU_INFO VALUES (1 , '김혁수' , '1반')INSERT INTO STU_INFO VALUES (2 , '이동민' , '1반')INSERT INTO STU_INFO VALUES (3 , '김지현' , '1반') 그 후 데이터를 조회하면 아래처럼 조회된다. 이때 1반에 아이들을 '/' 기준으로 한 컬럼으로 보여지게 하고 싶다면 SELECT GROUP_CONCAT(STU_NAME SEPARATOR '/') AS '..

WORK/DB 2018.02.01

ORACLE 공백제거

ORACLE 공백제거 이런거까지 적어놓을 필요가 있을까.. 하지만늘 다른 데이터베이스를 사용하다 갑자기 oracle 로 프로젝트를 할 경우 기억이 나질 않....ㅠㅠㅠ 이놈에 멍청이 oracle 에서의 REPLACE 에 대해서 알아보자 SELECT USER_ID,USER_NAME,USER_ENG_NAME FROM USER_INFO 이런 테이블이 있을 경우 USER_ENG_NAME 값에 "CHOI JA"라는 값이 있다고 치자 이럴때 공백 제거를 하기 위해서는 REPLACE(USER_ENG_NAME , ' ' , '' )로 조회하면 된다. REPLACE(컬럼 , 수정할 값 , 수정될 값) SELECT USER_ID,USER_NAME,REPLACE(USER_ENG_NAME , ' ' , '' ) FROM US..

WORK/DB 2018.01.26

DB 별 컬럼 변경 방법

이놈에 alter 문은 매번 할때마다 검색해서 사용하는 나...내가 멍청 한건가 ㅠㅠ다른분들은 다들 외우시나요 ? ㅠㅠ 그래서 정리한 db 별 컬럼 변경법 ! MYSQL 컬럼 변경하기 1. 컬럼추가 ALTER TABLE 테이블명 ADD 컬럼명 타입 옵션 ex) ALTER TABLE USER_INFO ADD [컬럼명] varchar(100) not null default '0'; 2. 컬럼 삭제 ALTER TABLE 테이블명 drop 컬럼명 3. 컬럼명 변경 및 타입 변경 ALTER TABLE 테이블명 CHANGE 컬럼명 변경할컬럼명 VARCHAR(12) 4. 컬럼 TYPE 수정 ALTER TABLE 테이블명 MODIFY 컬럼명 VARCHAR(20) MSSQL 컬럼 변경하기 1. 컬럼추가 ALTER TAB..

WORK/DB 2018.01.25

MYSQL 에서 ORACLE 의 MERGE INTO 기능

MYSQL 있으면 UPDATE 없으면 INSERT ORACLE 에서 MERGE INTO 기능처럼 없으면 INSERT , 있으면 UPDATE 처리하는 문장이다. 일단 컬럼이 두개있는 테이블이 있다고 가정해 보자. SELECT USER_ID, USER_NAMEFROM USER_INFO 이 테이블 키에 해당하는 데이터가 존재하면 UPDATE / 없으면 INSERT 하는 문장을 알아보자 CREATE TABLE USER_INFO( USER_ID INT , USER_NAME VARCHAR(10)) 일단 값이 중복되는지를 판단하는 조건은 테이블의 UNIQUE KEY이다. 그러므로 예를 든 USER_INFO TABLE 에 UNIQUE KEY 가 존재하지 않는다면 TABLE먼저 수정한다. ALTER TABLE USER_..

WORK/DB 2018.01.19

mysql count() 함수

아....조건절이 들어가는 select 문에서 count(*) 를 하고 싶은데...검색해도 안나오네요 ㅜㅠ 예를들어 SELECT COUNT(*) AS CNT, USER_ID, USER_NAME, USER_TELFROM USER_INFOWHERE 1 = 1AND USER_NAME LIKE '%김%' 이라는 쿼리에서처럼 조건이 하나라면 모를까... 조건이 AND COLUMN= ?AND COLUMN= ?AND COLUMN = ? 이렇게 계속 온다면... count 구하는거 하나 , 본 쿼리 하나..쿼리문을 두개 돌려야 하는건가 ㅠㅠ 방법이 없다 젠장........ SELECTCOUNT(*) AS CNTFROM TABLE 요거 하나조회해서 SET 하고 원래 데이터 조회하는 쿼리 조회해야겠고만..ㅠㅠ 혹시 이 글..

WORK/DB 2018.01.17

oracle sql developer 에서 다중 DB 사용하기

oracle sql developer 타사 JDBC 드라이버 추가하기 어휴 매번 다른 프로젝트를 하다보니 DB도 여러가지... 여태 했던게 oracle mssql mysql sybase 이렇게 4가지인데 매번 다른 프로젝트로 포멧하고나면 db tool 설치하는것도 일이된다. 그런데 oracle sql developer tool 에서 지원되는 타사 jdbc를 등록하면 다른 툴 설치가 필요없고 오직 sql developer 에서 모든 DB 접속이 가능하다. 1. http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 위 url 로 접속하여 sql developer 를 본인 PC 사양에 맞게 다운로드 한다. (다운이 ..

WORK/DB 2018.01.16