24.09.30(날짜함수, UNION/UNION ALL, 임시테이블, 가상테이블, ROWNUM, 프로시저)

jiiiiiiiArchive.·2024년 9월 30일

🤯지식주머니🤯

목록 보기
28/98
post-thumbnail

날짜 함수(Date Functions)

  • 날짜와 시간 데이터를 처리하는데 유용
  • NOW() : 현재 날짜와 시간 반환
SELECT NOW();
-- 결과: 2024-09-30 12:45:22
  • CURDATE() : 현재 날짜만 반환
SELECT CURDATE();
-- 결과: 2024-09-30
  • DATE_ADD() : 날짜에 일정 시간 추가
SELECT DATE_ADD('2024-09-30', INTERVAL 5 DAY);
-- 결과: 2024-10-05
  • DATEDIFF() : 두 날짜 간의 차이를 일수로 반환
SELECT DATEDIFF('2024-10-01', '2024-09-30');
-- 결과: 1
  • YEAR(), MONTH(), DAY() : 특정 날짜의 연도, 월, 일 추출
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());
-- 결과: 2024, 09, 30

UNION/UNION ALL

  • 여러 SELECT문의 결과를 하나로 합침
  • UNION : 중복된 행 제거
SELECT name FROM customers
UNION
SELECT name FROM employees;
-- customers와 employees 테이블에서 중복되지 않는 이름 모두 반환
  • UNION ALL : 중복된 행 포함
SELECT name FROM customers
UNION ALL
SELECT name FROM employees;

임시 테이블(Temporary Table)

  • 세션 동안만 존재, 세션이 끝나면 자동으로 삭제
  • 대량의 데이터 처리나 복잡하 쿼리의 중간 결과 저장하는 데 유용
    1. 임시 테이블 생성
CREATE TEMPORARY TABLE temp_users (
    id INT,
    name VARCHAR(50)
);
    1. 데이터를 삽입하고 조회
INSERT INTO temp_users (id, name)
VALUES (1, 'Alice'), (2, 'Bob');

SELECT * FROM temp_users;
-- 결과: 1 | Alice
-- 결과: 2 | Bob
    1. 세션 종료 시 테이블 자동으로 삭제

가상 테이블(View)

  • 복잡한 쿼리를 간단하게 재사용하거나 보안상의 이유로 실제 테이블을 감추는 데 유용
  • View 생성
CREATE VIEW active_users AS
SELECT id, name FROM users WHERE status = 'active';
  • View 사용
SELECT * FROM active_users;
-- 결과: active 상태인 사용자 목록이 출력

ROWNUM

  • 쿼리 결과에 고유한 순번 붙임
  • 상위 몇 개의 레코드를 가져올 때 유용
    • 상위 5개 레코드 가져오기
SELECT * FROM employees WHERE ROWNUM <= 5;

프로시저(Stored Procedure)

  • 미리 정의된 SQL코드의 묶음
  • 재사용 가능
  • 성능 개선
  • 프로시저 생성
CREATE PROCEDURE get_employee_salary(IN emp_id INT)
BEGIN
    SELECT salary FROM employees WHERE id = emp_id;
END;
  • 프로시저 호출
CALL get_employee_salary(3);
-- 결과: 3번 ID를 가진 직원의 급여가 출력됩니다.
profile
이것저것 다 적는 기록장📚

0개의 댓글