List로 주어진 여러 개의 조건 값을 IN 형태로 조건을 경우가 생긴다. 일반적인 상황이라면은 문제가 없지만 1000건 이상으로 IN절을 구성할 때는 ORA-01795 오류를 확인할 수 있다. ORA-01795: 목록에 지정 가능한 식의 최대 수는 1000입니다 (maximum number of expressions in a list is 1000) SELECT * FROM TBL WHERE CDN IN #{item.val} 해결 방법 1. OR 연산자 1000건씩 분리 SELECT * FROM TBL WHERE CDN IN #{item.val} List partitionedItems = new ArrayList( items.stream() .collect(Collectors.groupingBy(ite..
1. SELECT 시에는 꼭 필요한 COLUMN만 조회한다. -- BAD SELECT * FROM TABLE; -- GOOD SEELECT COLUMN1 , COLUMN2 FROM TABLE; 2. WHERE 절에는 연산을 하지 않는다. -- BAD SEELECT COLUMN1 , COLUMN2 FROM TABLE WHERE FLOOR(COLUMN3) = 2; -- GOOD SEELECT COLUMN1 , COLUMN2 FROM TABLE WHERE COLUMN3 = BETWEEN 4 AND 5; 3. LIKE 조회 시 와일드카드 %는 가급적 뒤에만 사용한다. -- BAD SEELECT COLUMN1 , COLUMN2 FROM TABLE WHERE COLUMN3 LIKE '%DF%'; -- GOOD SE..
쿼리 실행 계획을 얻기 위해서 MYSQL에서는 'EXPLAIN' 키워드를 통해 실행 계획이 무언인지 알고 싶을 때 사용하는 명령어이다. EXPLAIN을 활용하여 기존의 쿼리를 튜닝, 성능 분석, 인덱스 전략 등과 같이 성능 최적화를 진행할 때 사용한다. 사용법 EXPLAIN [EXTENDED] SELECT ... FROM ... WHERE ... 각 항목별 의미 id : 실행 계획 단위 번호를 의미하며 원 구문의 순서에 따라 각 select 구문들에 순차적으로 번호가 부여된다. 조인만 수행하는 쿼리는 항상 1이다. select_type : select 문의 유형 - simple : 단순 select (union, subquery 아닌 select문) - primary : 가장 바깥에 있는 select문(..
MySQL을 사용하다 보면 Too many connections 에러가 발생하면서 접속이 불가할 때가 있다. DB에 설정된 최대 허용 커넥션 개수를 초과해서 나타난 오류이다. 1. DB Connection(상태) SHOW PROCESSLIST; 2. DB Connection(최대 접속 가능한 수) SHOW VARIABLES LIKE '%max_connect%'; 3. DB Connection(현재 접속 수) SHOW STATUS LIKE 'Threads_connected'; 4. DB Connection(동작중인 Connection 수) SHOW STATUS LIKE 'Threads_running';
DB 테이블 생성 시 NOT NULL, DEFAULT를 많이 접하게 된다. SQL 제약조건이 비슷하지만 각각 왜 존재하는지, NOT NULL과 DEFAULT를 동시에 사용해야 하는 건지에 대한 의문에서 시작되었다. NOT NULL - 해당 컬럼에 NULL 값이 허용되지 않는다. DEFAULT - 명시적으로 값을 지정하지 않으면, 지정된 값으로 설정된다. 아래 예시를 통해 이해를 돕고자 한다. DDL에 NOT NULL 제약 조건이 없다고 가정해보자. 테이블 - TBL 컬럼 - AA, BB, CC ALTER TABLE TBL ADD COLUMN CC VARCHAR(20) DEFAULT 'Default-Value'; # 1. CC 컬럼 값을 지정하지 않음 -> 'Default-Value' INSERT INTO..
Primary Key로 잡혀있는 컬럼으로 같은 데이터를 INSERT 시도시 중복(Duplicate) 오류가 발생한다. 이럴때 3가지 방법으로 INSERT 하는 방법이 있다. 각각의 특성을 확인하고 상황에 맞게 적용하면된다. INSERT시 중복(Duplicate)이 오류발생시 처리방법 1. INSERT IGNORE INTO mysql> INSERT IGNORE INTO `user`(`email`, `name`) VALUES('ref@mail.com', '레퍼런스'); Query OK, 0 rows affected (0.00 sec) - 기존 데이터 유지 - 현재 데이터 무시 - 0 rows affected 2. REPLACE INTO mysql> REPLACE INTO `user`(`email`, `nam..
MySQL에서 Select 질의 결과를 Update 하는 구문은 아래와 같다. UPDATE [테이블] A, [테이블 또는 SELECT 질의] B SET A.필드1 = B.필드1 , A.필드2 = B.필드2 WHERE A.조건필드 = B.조건필드 -- ex UPDATE USER_BAS A, (SELECT USER_ID , USER_NM , USER_ADDR FROM USER_BAS_IF WHERE SCRB_YN = 'Y' AND DEL_YN = 'N' ) B SET A.USER_NM = B.USER_NM , A.USER_ADDR = B.USER_ADDR WHERE A.USER_ID = B.USER_ID
SQL 조인 유형 ANSI SQL 표준은 다음표에 나열된 5가지 유형의 조인을 정의한다. INNER JOIN 두 테이블에 조인 조건과 일치하는 행이 하나 이상 있는 경우 행을 반환한다. LEFT OUTER JOIN (LEFT JOIN) 오른쪽 테이블에 일치하는 행이 없더라도 왼쪽 테이블에 데이터가 있는 행을 반환한다. RIGHT OUTER JOIN (RIGHT JOIN) 왼쪽 테이블에 일치하는 행이 없더라도 오른쪽 테이블에 데이터가 있는 행을 반환한다. FULL OUTER JOIN (FULL JOIN) 테이블 중에 하나에 일치하는 데이터가 있는 한 모든 행을 반환한다. CROSS JOIN - 첫 번째 테이블의 각 행과 두 번째 테이블의 각 행을 결합한 행을 반환한다. JOIN 문법 SELECT * FRO..
DMBS와 RDBMS의 차이점에 대해 많은 혼란이 있다. 마치 서로 다른 것처럼 말이다. 이런 차이는 약간의 오해를 불러온다. 결론적으로 RDBMS는 DBMS이다. 그러나 DBMS가 항상 RDBMS인건 아니다. 이제 각각을 정의해 보자. DBMS DBMS는 데이터베이스 관리시스템을 의미한다. 데이터베이스를 만들고 관리할 수 있다. 여기서 데이터베이스 관리시스템은 기능을 수행하는 모든 시스템의 광범위 함을 말한다. RDBMS RDBMS는 관계형 데이터베이스 관리시스템을 의미한다. 즉, 관계형이 추가된 의미의 DBMS이다. 이것은 데이터베이스에 관계형 모델을 사용하는 유형의 DBMS이다. 따라서 RDBMS를 사용하면 관계형 데이터베이스를 만들 수 있다. DBMS VS RDBMS "R"은 관계형을 의미이며 관..
데이터베이스 테이블은 데이터를 행과 열로 구성하여 그리드를 형성하는 구조이다. Table 테이블은 엑셀 프로그램의 워크 시트와 유사하다. 행은 가로로 실행되며 각 레코드를 나타낸다. 열은 수직으로 실행되며 특정 필드를 나타낸다. 행과 열이 교차하여 격자를 형성하고, 행과 열의 교차점은 테이블의 각 셀을 정의한다. Cell 데이터베이스 용어에서 셀은 행과 열이 교차하는 테이블의 일부이다. 셀은 레코드 내에서 데이터의 지정된 부분을 보유하도록 설계되었다. 셀은 필드라고도 한다. (컬럼은 필드라고도 함) 테이블 행은 가로로 나란히 있는 하나 이상의 셀로 구성된다. 열은 수직으로 서로 아래에 있는 하나 이상의 셀로 구성된다. 데이터베이스 열에는 일반적으로 해당 열 내의 각 셀이 보유할 수 있는 데이터 유형을 결..
- 제주도 3박4일 일정
- 자바스크립트
- 정렬 알고리즘
- 자바
- SQL
- Maven
- effective java
- 성능분석
- Tomcat
- 프로그래머스
- 경력관리
- sort algorithm
- spring
- 프로그래머
- Eclipse
- 이직
- Collection
- 제주도 여행
- 리액트 16
- Java
- 오라클 내장 함수
- 리액트
- 오라클
- javascript
- 개발환경
- 회고
- 리눅스 명령어
- React
- Linux 명령어
- 소프트웨어공학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |