본문 바로가기

SQL24

[Oracle / SQL] EXTRACT 날짜나 시간에서 특정 필드 추출 EXTRACT 함수는 SQL에서 날짜나 시간에서 특정 필드(년, 월, 일, 시, 분 등)를 추출하는 데 사용된다. 예를 들어, EXTRACT(YEAR FROM date_column)은 날짜 열에서 연도를 추출한다. WHERE 절에 있는 TO_CHAR(START_DATE , 'YYYY-MM') = '2022-09' 문법을 EXTRACT을 사용하여 바꾸어 보았다. EXTRACT 사용 장점 가독성: EXTRACT 함수를 사용하면 코드의 가독성이 향상된다. 날짜나 시간에서 특정 필드를 추출하는 의도가 명확하게 드러나기 때문이다. 유연성: EXTRACT 함수를 사용하면 날짜나 시간에서 필요한 정보를 유연하게 추출할 수 있다. 예를 들어, 연도, 월, 일, 시, 분 등의 필드를 추출할 수 있다. 표준화: EXTRA.. 2024. 2. 20.
[MySQL / SQL] - 주요 함수 ( 숫자, 문자 , 시간, 날짜) MySQL을 사용하다보면 다른 데이터베이스와도 조금씩 다른 함수들이 존재한다. 따라서 나중에 한눈에 확인해서 사용할 수 있도록 조금씩 정리해두려고한다. 숫자 HTML 삽입 미리보기할 수 없는 소스 문자 HTML 삽입 미리보기할 수 없는 소스 시간 및 날짜 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 2023. 7. 27.
[MySQL / SQL] 테이블 구조 생성, 변경, 삭제 (DDL) -- 데이터베이스 생성 명령어 CREATE DATABASE [dbname]; -- 데이터베이스 생성 및 속성 설정 명령어 CREATE DATABASE [dbname] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 테이블 생성 명령어 CREATE TABLE [tablename] ( [column_name1] INT PRIMARY KEY AUTO_INCREMENT, [column_name2] VARCHAR(255) NOT NULL, [column_name3] DATETIME NOT NULL, )CHARSET=utf8; DROP 명령어 -- 데이터베이스 삭제 명령어 DROP DATABASE [dbname]; -- 테이블 삭제 명령어 DROP TABLE [tabl.. 2023. 7. 26.
[SQL] SQL 쿡북 - Chaper 1 SELECT를 사용하여 STUDENT 테이블에 있는 모든 정보를 출력해보았다. 이곳에서 DEPTNO를 뽑아 속성에 있는 데이터를 바꿔보려고한다. DEPTNO에 있는 데이터를 CASE식을 사용해 SELECT문에서 조건식을 직접 바꿔줄 것이다. CASE식을 사용하면 쿼리로 반환된 값에 대한 조건식을 수행할 수 있다. CASE식에 별칭을 제공하여 더 읽기 쉬운 결과셋을 반환할 수 있다. ELSE절은 선택 사항이다. 생략시 CASE식은 조건에 부합하지 않는 행에 대해 NULL을 반환한다. "TOP" 절은 SQL Server에서 일반적으로 사용되지만, MySQL 및 PostgreSQL과 같은 다른 데이터베이스 시스템에서는 대신 "LIMIT"를 사용할 수 있다. RAND() 함수 내장된 RAND( ) 함수를 LIM.. 2023. 7. 25.
[Oracle / SQL] 그룹함수 -1 GROUP BY를 쓰면 SELECT 절에 올 수 있는 컬럼이 정해져있다. 1. 그룹핑한 컬럼 ( 아래에는 DEPTNO를 그룹핑했으니 DEPTNO가 올 수 있는것.) 2. 그룹함수 (데이터가 딱 1개 조회되는거) 그룹 함수란? 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이고 복수행 함수라고도 한다. 그룹 함수의 종류에는 COUNT, MAX, MIN, SUM, AVG, STDDEV, VARIANCE 등이 있다. EMP 테이블에는 14개의 데이터가 있다. HTML 삽입 미리보기할 수 없는 소스 은 무엇이 나올까? 오류가 떨어지는데, SUM(SAL)은 값이 하나가 나온다. 하지만 DEPTNO는 사원 수만큼 나온다. 만약 100명이면 100개의 조회결과가.. 2023. 4. 13.
[Oracle / SQL] MERGE INTO 사용방법 (두 테이블, 한 테이블 DUAL) MELON_CHART HTML 삽입 미리보기할 수 없는 소스 MELON_CHART_NEW HTML 삽입 미리보기할 수 없는 소스 MERGE INTO HTML 삽입 미리보기할 수 없는 소스 SELECT * FROM MELON_CHART; 위와 같이 MELON_CHART에 있는 값을 다시한번 조회하면 5개의 새로운 데이터가 추가된 것을 확인할 수 있다. ON 조건절에 MELON_CHART의 SINGER가 MELON_CHART_NEW의 SINGER와 같고, 노래가 같은 것을 조건으로 둔다. WHEN 일치하면, MELON_CHART_NEW의 랭킹을 MELON_CHART로 바꿔주고, REMARK 값을 CONTINUE로 업데이트 시킨다. WHEN NOT 일치하지 않다면, MELON_CHART_NEW의 RANKING.. 2023. 3. 9.
[Oracle / SQL] 뷰(VIEW)의 정의와 생성하는 방법 뷰(VIEW) 란? 하나 이상의 기본 테이블이나 다른 뷰를 사용해 생성되는 가상의 테이블 공간이다. 모든 데이터에서 일부만 뽑아서 사용할 수도 있으며, 이때 뷰를 정의한 기본 테이블에서 무결성 제약조건은 유지된다. 뷰(VIEW)를 만들 수 있게 권한주는 방법 HTML 삽입 미리보기할 수 없는 소스 이는 SYSTEM 계정에서 뷰를 만들 수 있는 권한을 만들어주지 않아서 이다. SYSTEM모드로 가서 MYDB에 뷰를 만들 수 있는 권한을 만들어준다. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 이거는 VIEW이다. TABLE이 아니다. 뷰는 SELECT 한 결과를 바탕으로 뷰를 만들라는 것이다. 즉, 뷰는 데이터가 들어간게 아니다. 가상의 공간으로, 그냥 쿼리 실행하는 것이.. 2023. 3. 8.
[Oracle / SQL] 조인(JOIN) - 서브쿼리 서브쿼리란? 한줄로 요약해 말하자면, SQL 문에 포함되어 있는 또 다른 SQL 문이다. HTML 삽입 미리보기할 수 없는 소스 Q1. 김사랑 사원과 같은 급여를 갖는 사원의 모든 정보 조회 1. 김사랑의 데이터가 어떤지 먼저 알아보자. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 이와 같이 WHERE절 안에 조건을 줄 때 ( ) 소괄호 안에 다시한번 쿼리 문을 넣어 만들어 줄 수 있다. Q2. 강혜정 사원과 같은 부서에서 근무하는 사원들의 모든정보 조회 1.먼저, 강혜정 사원이 어떤 부서에서 일하는지를 먼저 알아야한다. HTML 삽입 미리보기할 수 없는 소스 이후 나온 부서를 조건으로 주는 서브 쿼리를 넣어주면 쉽게 풀어볼 수 있다. HTML 삽입 미리보기할 수 없는 .. 2023. 3. 3.
[Servlet / JSP / SQL / Template / Session] 회원 관리 폼 만들기 (9) - 게시물 수정 (UPDATE) 이번에는 CRUD의 마지막인 수정(UPDATE)를 해보려고한다. 먼저 글쓰기를 눌러 글을 아무렇게나 등록해보았다. 앞에서 했던대로 내 아이디로 들어간 작성자 이름으로 글이 등록됐다 삭제까지 CRD를 모두 구현하였다. board_detail.jsp 먼저 상세보기 게시글에서 수정을 누르면 board_update.bo로 이동하게 만들자. 그리고 이동할때 {board.boardNum} 데이터를 가져가야한다. BoardController.java 서블릿 수정(UPDATE)는 다른 것들과 다르게 서블릿에서 작업이 두번 필요하다. 먼저 첫번째 board_update.bo로 받은 곳을 보자. boardNum을 받아와 알맞는 int로 변환 시켜주었고, 앞에 게시글 상세조회때 만들었던 selectBoardDetail을 사.. 2023. 3. 2.
[SQL] 제약조건 (CONSTRAINT)가 뭘까? 어떻게 사용할까? (제약조건) CONSTRAINT 이란? 테이블의 해당 컬럼에 의도하지 않은 데이터가 입력/변경/삭제 되는 것을 방지하기 위해 테이블 생성, 수정, 삭제할 때 설정하는 조건이라고 볼 수 있다. 즉, 데이터의 무결성을 지키기 위해 제한된 조건이다. 위와 같이 SHOP_MEMBER 테이블을 생성후, INSERT INTO를 이용해 데이터를 넣었다. 여기서 같은 값으로 한번 더 삽입해주었다. 오류가 난걸 보면 ●●● 제약 조건 SYS_C007395 에 위배가 뜬다고한다. 위와 같이 테이블의 제약조건에 들어가서 같은 이름을 살펴보면, 이렇게 확인할 수 있는건, 제약조건에 이름을 주어 어디서 오류가 발생했는지 확인할 수 있다. 이와같이 CONSTRAINT는 제약조건을 설정해 주는 것이다. 기본키와 같이 많이 사용될 .. 2023. 3. 2.
[Servlet / JSP / SQL / Template / Session] 회원 관리 폼 만들기 (8) - 댓글 등록 후 리스트로 출력 이전 까지 Board의 상세정보 보기 화면까지 만들었다. 글을 등록한 작성자가 굉장히 성의 없게 제목과 내용을 적어주었다. 악플을 좀 달아야겠다고 생각해서 만들어 보았다. board_detail.jsp 만약 sessionScope.loginInfo 값이 빈 공간이 아니면 ( 즉, 로그인이 되있으면 이라는 뜻이다.) 댓글등록 버튼이 활성화되며, 버튼 클릭시 ${board.boardNum} 값을 boardNum이라는 이름으로 insertReply.re로 content도 함께 데이터를 보낸다. ReplyController.java 서블릿 이곳에서 board_detail.jsp에서 전달한 boardNum과 content 받아와서 각각 맞는 자료형으로 저장한다. 이후 바로 mapper로 가자. 그 전에, 중요한거.. 2023. 2. 28.
[Servlet / JSP / SQL / Template / Session] 회원 관리 폼 만들기 (7) - 상세보기 제목에 있는 글을 누르면 상세 정보 보기 폼으로 이동해보려고 한다. board_list.jsp 아까 마지막으로 데이터를 출력했던 board_list.jsp로 돌아와준다. 나는 제목을 누르면 페이지가 이동하게 끔 만들것이다. 따라서 ${ board.title } 앞에 a 태그를 주어 경로를 지정한다. 여기서 끝이 아니라 '?'를 주어 조건을 추가해준다. boardNum의 데이터가 ${board.boardNum}의 데이터와 같은 값만 boardDetail.bo에 가지고 간다. BoardController.java 서블릿 board 컨트롤 서블릿으로 돌아와 board_list.jsp에서 전달해준 boardNum을 문자열로 받아온다. 이후 integer.parseInt를 이용해 자료형을 int형으로 변환해준다... 2023. 2. 28.