SQL (7) 썸네일형 리스트형 [SQL 쿡북] Chapter 9 : 날짜 조작 기법 (MYSQL) 9.1 연도의 윤년 여부 결정하기 LAST_DAY함수를 이용하여 2월의 마지막 날을 찾으려고 한다. select day( last_day( date_add( date_add( date_add(current_date, interval -dayofyear(current_date) day), interval 1 day), interval 1 month))) dy from t1 DATE_ADD(기준 날짜, INTERVAL) [MySQL] 시간 더하기, 빼기 (DATE_ADD, DATE_SUB 함수) ▶MySQL 시간 더하기, 빼기 (DATE_ADD, DATE_SUB 함수) ▶설명 MySQL에서 특정 시간을 기준으로 더하거나, 빼야 하는 경우가 있습니다.이 때 사용하는 함수가 DATE_ADD와 DATE_SUB입니.. [SQL 쿡북] Chapter 8 : 날짜 산술 (MYSQL) 8.1 일,월,연도 가감하기 한 사람의 고용날짜를 이용하여 고용 전후 5일, 5개월, 5년 을 반환하여 총 6개의 날짜를 반환하려고 한다. 추가하거나 뺄 단위를 지정하는 INTERVAL 키워드와 덧셈 뺄셈을 사용한다. select hiredate - interval 5 day as hd_minus_5D, hiredate + interval 5 day as hd_plus_5D, hiredate - interval 5 month as hd_minus_5M, hiredate + interval 5 month as hd_plus_5M, hiredate - interval 5 year as hd_minus_5Y, hiredate + interval 5 year as hd_plus_5Y from emp where .. [SQL 쿡북] Chapter 7 : 숫자 작업 (MYSQL) 7.1 평균 계산하기 모든 사원의 평균 급여와 각 부서의 평균 급여를 찾으려고 한다. select avg(sal) as avg_sal from emp NULL이 아닌 급여에 대한 평균이 계산된다. 급여가 NULL값 이면 나누는 수에 포함하지 않는다는 뜻이다. select deptno, avg(sal) as avg_sal from emp group by deptno 각 부서의 평균 급여를 계산하려면 GROUP BY를 사용하여 그룹을 생성한다. 7.2 열에서 최댓값, 최솟값 찾기 전 사원에 대하여 최고 임금과 최저 임금 및, 각 부서에서의 최고 임금과 최저 임금을 찾으려고 한다. MIN과 MAX 함수를 사용하면 되고, 원리는 위와 비슷하다. select min(sal) as min_sal, max(sal) .. [SQL 쿡북] Chapter 6 : 문자열 작업 (MYSQL) 6.1 문자열 짚어보기 id 값 1~10을 가지는 피벗테이블 t10을 이용하여 ename인 'KING'을 한글자 씩 4개의 행으로 표시하려고 한다. select ename, iter.pos from (select ename from emp where ename = 'KING') e, (select id as pos from t10) iter where iter.pos [SQL 쿡북] Chapter 5 : 메타 데이터 쿼리 (MYSQL) 이번장은 특정 RDBMS의 스키마 쿼리만 소개할 예정이다. 해법의 원리를 이해하고, 각각의 RDBMS의 문법을 후에 찾아보는 것이 좋다고 판단하였다. 5.1 스키마의 테이블 목록 보기 스키마란? : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합 특정 스키마에서 생성한 모든 테이블 목록을 보고자 한다. SMEAGOL이라는 스키마가 있다고 가정한다. PostgreSQL, MySQL, SQL Server select table_name from infromation_schema.tables where table_schema = 'SMEAGOL' 5.2 테이블 열 나열하기 스키마의 특정 테이블에 열, 유형, 및 숫자 위치를 나열하려고 한다. INFORMATION_SCHEMA.CO.. [SQL 쿡북] Chapter 4 : 삽입, 갱신, 삭제 4.1 새로운 레코드 삽입하기 테이블에 새로운 레코드를 삽입하려고 한다. insert into dept (deptno, dname, loc) values (1, 'A', 'B'), (2, 'B', 'C') 이렇게 한번에 여러 행을 삽입할 수도 있고, 간단한 테이블에서는 열 목록을 생략하여 select * 쿼리에 대한 열 표시 순서대로 값을 제공할 수 도 있다. 모든 열에 값을 주지 않으면, null인 행이 생성될수 있으므로 유의해야 한다. 4.2 기본값 삽입하기 테이블을 생성할 때 기본값 행을 삽입할 수 있다. create table D (id integer default 0) id 열만 default 값으로 행 하나를 넣어주려면 다음과 같이 한다. insert into D (id) values (def.. [SQL 쿡북] Chapter 3 - 1 : 다중 테이블 작업 3.1 행 집합을 다른 행 위에 추가하기 두 개 이상의 테이블을 한 결과셋을 다른 결과 셋과 합치려고 한다. emp테이블에서 deptno 가 10원인 사원명 및 부서 번호와 함께, dept 테이블에 있는 각 부서명 및 부서 번호를 표시하려면 다음과 같다. [결과셋] UNION ALL은 중복 항목이 있으면 이를 포함한다. 그리고 SELECT 목록의 데이터 유형이 일치해야 한다. 중복을 필터링 하려면 UNION 연산자를 사용해야 한다. 3.2 연관된 여러 행 결합하기 조인을 이용하여 공통된 값을 공유하는 열을 조인하여 여러 테이블에서 행을 반환하려고 한다. 조인이랑 두 테이블의 행을 하나로 결합하는 것이다. 1) WHERE 절 조인 2) JOIN 절 사용(INNER 키워드는 선택 사항) 위와 같은 결과 셋을.. 이전 1 다음