Database/MySQL (15) 썸네일형 리스트형 [MyBatis / MySQL] useGeneratedKeys, keyProperty, keyColumn * useGeneratedKeys="true" DB에서 자동 생성된 기본 키(PK)값을 Java 객체로 가져올 수 있는 MyBatis 설정.( JDBC의 getGeneratedKeys() 호출을 MyBatis가 자동으로 처리해준다 )* keyPropertyJava 객체 필드명* keyColumnDB테이블 컬럼명 INSERT INTO test_table (item_id, item_name, item_des) VALUES (#{itemId}, #{itemName}, #{itemDes})=> 해당 컬럼에 대한 AUTO_INCREMENT 설정 필요 (MYSQL) => keyProperty 와 keyColumn 각각 이름 일치여부 주의 insert 이후에 생성된 키(id)를 받아 바로 update를.. [MYSQL] ORDER BY column_name + 0 (형변환) 컬럼의 데이터 타입은 VARCHAR로 지정되어 있지만 데이터는 숫자로만 구성된 경우,데이터를 숫자기준 오름차순으로 정렬하고 싶다면 int타입으로 변환 후 정렬해줘야 한다.ORDER BY column_name + 0 ORDER BY column_name * 1=> 암시적 형 변환(Implicit Type Conversion)ORDER BY column ASC 로 정렬하는 경우111 2 21 ...위같은 순서로 정렬된다. + 0 이나 * 1 을 붙여주는게 가장 빠른 방법! [SQL] RANK(), DENSE_RANK() * RANK()동일한 순위가 부여된 경우, 다음 순위를 건너뛴다. * DENSE_RANK()동일한 순위가 부여된 경우, 다음 순위를 건너뛰지 않고 연속적으로 부여한다.. ex) SELECT seq, total_sales, RANK() OVER (ORDER BY total_sales DESC) AS rank, DENSE_RANK() OVER (ORDER BY total_sales DESC) AS dense_rankFROM sales; 결과는 아래와 같다.seq total_sales rank dense_rank 170011250022350022430043530043 => 동일한 값 2번, 3번에 대해 동일한 순위 2를 부여. RANK() 는 중복된 데이터 수만큼 순위를 건너.. [DB문법] 집계함수, group by, grouping, rollup * 집계함수 & null값 - count (*) : 테이블의 행 수를 반환 (Null값 포함) - count (column) : 지정 column의 Null이 아닌 값의 수를 집계 (Null값 제외) - SUM, AVG : Null이 아닌 값들만 집계 (Null값 제외) * grouping group by 절과 함께 사용되어 특정 행이 원래의 데이터 그룹에 속하는지, => 0을 반환 아니면 그룹화 연산자( rollup, cube, grouping set )에 의해 생성된 요약 행인지 구별하는 데 사용. => 1을 반환 * rollup group by column1, column2 ... with rollup group by rollup ( column1, column2 ..) => column1 과 co.. [DB문법] 날짜&시간, case when, null값 처리 SELECT _with절https://dbaant.tistory.com/22 [MYSQL] With 절 사용 방법MySQL에서 'WITH'절은 서브쿼리를 만들고 재사용 가능한 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 방법입니다. WITH절을 사용하여 쿼리를 단순화하고 가독성을 높일 수 있습니다. 다음dbaant.tistory.com UNION(DISTINCT), UNION ALLhttps://sewonzzang.tistory.com/45 [SQL] UNION / UNION ALL, WITHUNION / UNION ALL UNION : 조회한 다수의 SELECT문을 하나로 합치고 싶을 때 유니온(UNION)을 사용할 수 있습니다. UNION은 UNION (DIST.. [데이터베이스(강의)] 9. stored function * stored function - 사용자가 정의한 함수 - DBMS에 저장되고 사용되는 함수 - SQL의 select, insert, update, delete statement에서 사용할 수 있다. - 임직원의 ID를 열자리 정수로 랜덤하게 발급하고 싶다. - ID의 맨 앞자리는 1로 고정이다. mysql> delimiter $$ mysql> CREATE FUNCTION id_generator() -> RETURNS int -> NO SQL -> BEGIN -> RETURN (1000000000 + floor(rand()*1000000000)); => 여기에서 끝내지 않기 위해 -> END -> $$ => 임시로 바꿔준거다 mysql> delimiter ; => 다시 원래대로 바꿔준다 mysql> C.. [데이터베이스(강의)] 8. SQL로 데이터 조회 (group by, aggregate function, order b) * ORDER BY - 조회 결과를 특정 attribute(s) 기준으로 정렬하여 가져오고 싶을 때 사용한다. - default 정렬 방식은 오름차순이다 - 오름차순 정렬은 ASC로 표기한다. - 내림차순 정렬은 DESC로 표기한다. - 임직원들의 정보를 연봉 순서대로 정렬해서 알고 싶다. SELECT * FROM employee ORDER BY salary; => 기본이 오름차순 (ASC) SELECT * FROM employee ORDER BY salary DESC; - 임직원들의 정보를 연봉 순서대로 정렬해서 알고 싶다. + 부서별정렬 SELECT * FROM employee ORDER BY dept_id ASC, salary DESC; => dept_id 기준 내림차순 정렬 이후 salary 기준.. [데이터베이스(강의)] 8. SQL로 데이터 조회 (join) * SQL에게 JOIN이란? - 두 개 이상의 table들에 있는 데이터를 한 번에 조회하는 것 - 여러 종류의 JOIN이 존재한다. [ implicit join VS explicit join ] - ID가 1인 임직원이 속한 부서 이름은? * implicit join - from절에는 table들만 나열하고 where절에 join condition을 명시하는 방식. - old-style join syntax - where 절에 selection condition과 join condition이 같이 있기 때문에 가독성이 떨어진다. - 복잡한 join 쿼리를 작성하다 보면 실수로 잘못된 쿼리를 작성할 가능성이 크다. SELECT D.name FROM employee E, department D WHERE .. 이전 1 2 다음