BACK_END/SQL

250219_ SQL

minquu 2025. 2. 19. 22:08
반응형

WHERE ~ IN () : 서브 쿼리 처럼 사용하는 방법

SELECT c.name
FROM customer c
WHERE c.custid IN (
    SELECT o.custid
    FROM book b
    JOIN orders o ON b.bookid = o.bookid
    WHERE b.publisher = '대한미디어'
);

 

 

WHERE EXIST : 존재하는 것이 있으면 사용하기

SELECT c.name, c.address
FROM customer c
WHERE EXISTS
	(SELECT *
	FROM orders o 
	WHERE c.custid = o.custid
);

 

Join on Join on : 조인 두개를 사용해서 원하는 값 출력

select publisher from book b
join orders o on b.bookid=o.bookid
join customer c on c.custid=o.custid
where c.name='박지성';

 

AND AND  : AND 조건으로만 조건 뽑아내기

SELECT publisher
FROM book b, orders o, customer c
WHERE b.bookid = o.bookid AND o.custid = c.custid AND c.name = '박지성';

 

 


내장 함수들

 

ROUND : 반올림

-- ROUND 반올림 : (1자리에서 반올림)
SELECT ROUND(4.879, 1)
FROM dual;

 

ABS : 절대값

-- ABS : 절댓값
SELECT ABS(-88), ABS(88)
FROM dual;

 

REPLACE : 대체 값 넣어서 보기

-- REPLACE : 특정 값 대체 / SELECT에서 잠깐 대체해서 보는 것
SELECT bookid, REPLACE(bookname, '야구', '농구') bookname, publisher
FROM book;

 

SUBSTR : 특정 범위 글자 따와서 보기

-- SUBSTR (원본 문자열, 자르기 시작할 위치, 문자열 길이)
-- 이름의 한 글자만 따오는 것
SELECT SUBSTR(NAME, 1, 1) "성", COUNT(*) "인원"
FROM customer
GROUP BY substr(name,1, 1);

 

날짜 함수들

-- 날짜 함수 
STR_TO_DATE('22-07-15','%y-%m-%d')	문자 -> 날짜
DATE_TO_STR()						날짜 -> 문자

-- 3달 더하기
SELECT DATE_ADD(STR_TO_DATE('22-07-15','%y-%m-%d'), INTERVAL 3 MONTH)
FROM dual;

-- 현재 시간
SELECT NOW();

 

FLOOR : 소수점 버림

-- 소수점 버림
SELECT FLOOR(15.7)
FROM DUAL;

 

Ceil : 천장 처리 15.7 -> 16

SELECT ceil(15.7)
FROM dual;

 

 

 

 

반응형

'BACK_END > SQL' 카테고리의 다른 글

250220 _ SQL  (0) 2025.02.20
250218_ SQL SELECT 문  (0) 2025.02.18
250217 _ MY SQL  (0) 2025.02.17