본문 바로가기

DB/문법31

MySQL Join On 키워드 더보기https://drive.google.com/file/d/1-vPjzkVty2qJJmb0g5qpenXUovJTP_L0/view?usp=sharinghttps://drive.google.com/file/d/1wCw7ht_zQy5ipjJRK8NDmQHNkqjk4qLX/view?usp=sharingFOREIGN KEY로 연결된 orders 테이블의 customer_id와 customer 테이블의 id-- 두 테이블의 데이터를 하나로 합쳐서 가져오세요.SELECT *FROM orders join customers ON orders.customer_id = customers.id; JOIN 구문은 ON 과 함께합니다.orders 테이블에서 customer_id와 customers 테이블의 id가 합치하는 데.. 2024. 12. 2.
MySQL 요일 추출 함수 3가지 dayname(), weekday(), dayofweek() 요일 추출의 3가지 방법  dayname(order_date)   SELECT *, dayname(order_date)from orders; 'Sunday', 'Monday' ... 'Saturday'로 반환 weekday(order_date)SELECT dayname(order_date),WEEKday(order_date)FROM orders o ;월 0, 화 1, 수 2, 목 3, 금 4, 토 5, 일 6 으로 반환 DAYOFWEEK(order_date)SELECT dayname(order_date),WEEKday(order_date)FROM orders o ;월 2 화 3 수 4 목 5 금 6 토 7 일 1으로 반환 -- 주문이 이루어진 날짜와 요일 조회 한글로 반환하기  SELECT order_d.. 2024. 12. 2.
MySQL 날짜와 시간 조회, 가감산, 합계 함수 현재를 기준으로 조회현재 날짜와 시간을 조회하기 now()SELECT now();localtime = 한국 (KST) UTC+9시간이 아닌 UTC 세계 표준 시간 기준 현재 날짜와 시간이 나옵니다.   UTC란? 전 세계적으로 통일된 시간 기준을 제공하며 컴퓨터 시스템과 서버 간의 시간 동기화, 네트워킹에서 데이터 기록, 로그 관리, 시간 동기화 등에 필수적으로 사용됩니다.  UTC는  ISO 8601 표준에 따라 날짜와 시간을 표현하는 데 사용되며, "2023-12-24T15:00:00Z"와 같은 형식으로 나타낼 수 있습니다. 여기서 'Z'는 UTC를, 'T'는 날짜와 시간을 구분합니다. TimeStamp 에선 YYYY-MM-DD HH:MM:SS  로 반환됩니다. 현재 날짜만 조회 curdate()SE.. 2024. 11. 29.
MySQL In 키워드 -- eggers 나 chabon이 쓴 책을 가져오세요.SELECT *FROM books bwhere author_lname ='Eggers' or author_lname = 'Chabon'; 다른 작가님이 쓴 책도 더 불러오려니 한없이 길어지는 [or author_lname = '다른작가']구절... 보기도 편하고 추가하기도 편한 INSELECT *FROM books bWHERE author_lname in('Eggers','Chabon');제외하고 불러오려면 Not inSELECT *FROM books bWHERE author_lname not in('Eggers','Chabon');  * NULL 처리에 주의!NOT IN을 사용할 때 NULL 값이 포함된 경우 예상치 못한 결과가 나올 수 있습니다... 2024. 11. 29.
MySQL Case 키워드 조건이 2개정도라면? IF()함수 MySQL if() 함수-- 데이터를 가공할때 Yes or No 2가지 상황에 대해서 처리하는 함수 if()-- books 테이블에서 페이지수가 300페이지 이상인 책은 '긴 책'이라고 하고,     그렇지 않으면 '짧은 책'이라고 하자. 컬럼이maeilcoding.tistory.com 그런데 조건이 3개 이상이라면..?엑셀이였다면 ifs()나 구버전에선 지저분해보이지만 if(if(if(...)))를 썼었는데 SQL문에서는 어떻게 사용할까?  -- stock_quantity가 0이상 50이하면 *,-- 51이상이고 100 이하 **,-- 101 이상이면 ***-- 새로운 컬럼 stock을 만들어 보여주세요.SELECT *, CASE when stock_quantity .. 2024. 11. 29.
MySQL ifnull()함수 -- stock_quantity 에 null이 있으면 0으로 나오게, 새로운 컬럼 stock_quantity2를 만드세요SELECT *,ifnull(stock_quantity,0)as stock_quantity2FROM books b ;  -- null이 있을경우 다른 값으로 세팅해주는 함수 ifnull() ifnull(stock_quantity,0)stock_quantity컬럼의 데이터가 null이면 0 으로 반환ifnull(stock_quantity,'문자열')'문자열'로 반환도 가능합니다! 2024. 11. 29.
MySQL if() 함수 -- 데이터를 가공할때 Yes or No 2가지 상황에 대해서 처리하는 함수 if()-- books 테이블에서 페이지수가 300페이지 이상인 책은 '긴 책'이라고 하고,     그렇지 않으면 '짧은 책'이라고 하자. 컬럼이름은 book_type   SELECT *, if(pages>=300,'긴 책','짧은 책') as book_typeFROM books b ;  pages>=300,'긴 책','짧은 책') 조건TRUEFALSE 페이지 수가300 이상이면 '긴 책'아니면 '짧은 책' 그럼 3가지 이상의 상황은?Case문 확인하기 2024. 11. 29.
MySQL Having 키워드 -- 년도별 stock_quantity의 평균값이 70보다 큰 책들의 데이터를 가져와서 년도와 평균값을 보여주세요.SELECT released_year ,avg(stock_quantity) as avg_stockFROM books bgroup by released_yearwhere avg_stock >70 ;group by로 가공한 데이터를 where로 입력하면 작동 하지 않는다... 문법상 오류!  Having 절이란?그룹화된 결과 필터링: HAVING절은 GROUP BY로 그룹화된 결과 집합에 조건을 적용하여 필터링합니다.집계 함수 사용: WHERE절과 달리 HAVING절에서는 집계 함수(SUM, COUNT, AVG 등)를 사용한 조건을 지정할 수 있습니다.실행 순서: WHERE → GROUP BY .. 2024. 11. 29.
MySQL Between 키워드 -- 출간년도가 1990년에서 2015년 사이의 책 데이터를 가져오세요. 방법1) 연산기호 사용SELECT *FROM books bWHERE released_year >=1990 and released_year  방법2) Between절 사용SELECT *FROM books bWHERE released_year BETWEEN 1990 and 2015order by released_year ; 연산기호도 괜찮지만Between을 쓰면 컬럼을 한번만 적어도 되니 깔끔합니다. column_name BETWEEN lower_value AND upper_value의 형식으로 작성합니다. 2024. 11. 29.