목록DB (13)
시스템아 미안해

SELECT절 FROM절 예를들어 tbl_A, tbl_B, tbl_C 이렇게 3개의 테이블을 조인할 경우는 흔히 아래와 같이 사용합니다. 하지만 아래 부분은 tbl_A, tbl_B, tbl_C 테이블에서 모든 컬럼과 모든 데이터들을 전부 조회하기 때문에 속도가 느려질 수 밖에 없습니다. 또한, 데이터양이 많으면 쿼리의 속도는 현저히 느려지기 마련이고, 10개의 테이블을 이런식으로 조인하게 되면 더욱 느려지게 되겠죠. 1 2 3 4 5 6 7 8 9 10 11 12 SELECT TblA.A ,TblB.B ,TblC.B FROM tbl_A TblA LEFT OUTER JOIN tbl_B TblB ON TblB.join_value = TblA.join_value LEFT OUTER JOIN tbl_C TblC..
1. 개요 MySQL에는 아래 3가지 방법을 이용하여 중복 레코드를 관리할 수 있다. INSERT IGNORE ... REPLACE INTO ... INSERT INTO ... ON DUPLICATE UPDATE 각 방법의 특징을 요약하면 다음과 같다. 방법특징 INSERT IGNORE ... 최초 입수된 레코드가 남아 있음 최초 입수된 레코드의 AUTO_INCREMENT 값은 변하지 않음 REPLACE INTO ... 최초 입수된 레코드가 삭제되고, 신규 레코드가 INSERT됨 AUTO_INCREMENT의 값이 변경됨 INSERT INTO ... ON DUPLICATE UPDATE INSERT IGNORE의 장점 포함함 중복 키 오류 발생 시, 사용자가 UPDATE될 값을 지정할 수 있음 2. 사전 조..
1. Stored Procedures: 저장 프로시저는 여러 SQL 문을 포함할 수 있는 코드 블록입니다. 일반적으로 SQL 문 집합을 그룹화하고 단일 트랜잭션으로 실행하는 데 사용됩니다. 저장 프로시저는 입력 매개 변수를 수락하고 해당 매개 변수에 대한 작업을 수행하며 출력 값을 반환할 수 있습니다. 응용프로그램 성능, 보안 및 코드 구성을 개선하는 데 유용합니다. 2. Scalar Functions: 스칼라 함수는 단일 값을 반환하는 함수입니다. 데이터에 대한 간단한 계산이나 변환을 수행하는 데 자주 사용되며 SQL 쿼리나 문 내에서 호출할 수 있습니다. 스칼라 함수는 사용하기 쉽고 코드 가독성과 유지보수성을 향상시킬 수 있다. 3. Table-Valued Functions: 테이블 값 함수는 결과적..

JDBC (Java Database Connectivity) : 자바와 데이터베이스를 연결하기 위한 자바API이다. 내가 사용하는 데이터베이스는 주로 MySQL이기 때문에 MySQL용 드라이버를 다운받아서 사용할 수 있다. (드라이버란 하드웨어를 제어하기 위해 필요한 컴퓨터 프로그램을 말한다.) ODBC (Open Database Connectivity) : 마이크로소프트사에 의해 만들어진, 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격 API이다. 각 데이터베이스의 차이는 ODBC 드라이버에 의해서 흡수되기 때문에, 유저는 ODBC에 정해진 순서에 따라서 프로그램을 쓰면 접속처의 데이터베이스가 어떠한 데이터베이스 관리 시스템에 관리되고 있는지 의식할 필요 없이 접근할 수 있다. & 윈도우의 어떤 ..
(mssql) 가장 관건은 DAO에서 UPDATE로 MAPPER를 호출하니 실행. (몇시간의 구글링에선 선배님들이 select든 insert든 전부 가능하다 했으나 본인은 실패했음. 원인을 아신다면 댓글좀 부탁드립니다..) 그 외에 statementType필수, map으로 받아올거라며 javaType을 resultSet으로, resultMap을 따로 만들어서 #{strReturn, mode=INOUT,jdbcType=VARCHAR,javaType=resultSet,resultMap=ab} 이렇게 했다가 nullPointerException 발생. CREATE PROCEDURE dbo.spGW_TESTTESTTEST @strReturn nvarchar(4000) output AS BEGIN SET NOCO..
혹시 LAST_INSERT_ID() 쓰려는데 망설이시는 분들은 이 글 읽어보세요! A와 B가 다른 connection을 가지고 동시에 INSERT 후 LAST_INSERT_ID()값을 SELECT하더라도 자신이 INSERT한 ID값을 반환받게 된다. 예를 들면, A가 INSERT를 하고 LAST_INSERT_ID()를 SELECT하려고 하는 순간 B가 먼저 INSERT를 하였다. 이 경우 A가 SELECT하여 얻어지는 ID값은 B와는 무관하게 A가 INSERT한 ID값이 된다. 물론, 전제 조건은 A와 B가 다른 connection을 사용한다는 것이지만, 동시에 INSERT하고 접근하는 문제가 있어도 유용하게 사용할 수 있다. (하지만 저는 mybatis의 useGeneratedKeys를 사용했습니다.ㅎ..