Adventure Time - Finn 3
본문 바로가기

DB24

Mysql table 생성 -자동증가 MySQL에서 만 지원해주는 문법 자동증가 2024. 2. 28.
Mysql 데이터베이스 생성 CREATE SCHEMA KIMDB; 로 데이타베이스를 생성한다 show databases;로 확인하여 생성이 되었는지 확인한다 생성된 db에 접근한다 2024. 2. 28.
유저 조회 RANKING 수정 V1 --유저 조회 SELECT M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL_PHONE, NVL(SUM(S.AMOUNT), 0) AS TOTAL, RANK() OVER (ORDER BY NVL(SUM(S.AMOUNT), 0) DESC,MIN(S.REG_DATE)) AS RANKING FROM MEMBER M LEFT JOIN SUPPORT S ON M.LOGIN_ID = S.LOGIN_ID GROUP BY M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL_PHONE; 문제점 : TOTAL이 .. 2024. 2. 11.
TO_CHAR 함수 TO_CHAR 함수는 Oracle에서 숫자, 날짜 및 문자열 데이터를 문자열로 변환하는 데 사용됩니다. 이 함수는 다양한 형식의 데이터를 문자열로 변환할 수 있습니다. TO_CHAR(expression, format_mask) expression: 변환할 값입니다. format_mask: 문자열로 변환할 때 적용할 형식입니다. TO_CHAR 함수를 사용하면 날짜를 원하는 형식으로 변환하거나 숫자를 문자열로 변환할 수 있습니다. 예를 들어, 날짜를 'YYYY-MM-DD' 형식으로 표시하거나, 숫자를 특정 형식으로 변환할 수 있습니다. EX) SELECT M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL.. 2024. 2. 9.
여러 INSERT 문을 한 번에 실행하기 여러 개의 INSERT 문을 한 번에 실행하려면 Oracle에서 제공하는 INSERT ALL 문을 사용할 수 있습니다. 이를 통해 여러 개의 행을 한 번에 삽입할 수 있습니다. 다음은 INSERT ALL 문을 사용하여 여러 개의 행을 한 번에 삽입하는 예시입니다. INSERT ALL INTO employees (employee_id, first_name, last_name, email) VALUES (101, 'John', 'Doe', 'john@example.com') INTO employees (employee_id, first_name, last_name, email) VALUES (102, 'Jane', 'Smith', 'jane@example.com') INTO employees (employe.. 2024. 2. 8.
DBeaver 단축키 일반 단축키 Ctrl + N (Cmd + N): 새 쿼리 탭 열기 Ctrl + Shift + N (Cmd + Shift + N): 새 파일 열기 Ctrl + S (Cmd + S): 현재 파일 저장 Ctrl + F (Cmd + F): 찾기 Ctrl + R (Cmd + R): 바꾸기 Ctrl + Z (Cmd + Z): 되돌리기 Ctrl + Y (Cmd + Y): 다시 실행 Ctrl + Shift + F (Cmd + Shift + F): 현재 파일 검색 쿼리 작성 단축키 Ctrl + Enter (Cmd + Enter): 쿼리 실행 Ctrl + Space (Cmd + Space): 코드 완성 Ctrl + / (Cmd + /): 주석 토글 탐색 단축키 Alt + Left (Cmd + [): 이전 탭으로 이동 Al.. 2024. 2. 7.
RANK 함수, DENSE_RANK 함수 RANK 함수 RANK 함수는 동일한 값에 대해 동일한 순위를 부여하고 그 다음 값에 대해 다음 순위를 부여합니다. 예를 들어, 1위, 2위, 2위, 4위와 같이 중복된 순위가 발생할 수 있습니다. 중복된 값이 있을 때는 그 다음 순위는 중복된 값의 개수만큼 건너뛰게 됩니다. DENSE_RANK 함수 DENSE_RANK 함수는 동일한 값에 대해 중복된 순위를 부여하지 않습니다. 즉, 중복된 값이 있더라도 순위는 중복되지 않습니다. 예를 들어, 1위, 2위, 2위, 3위와 같이 중복된 순위가 발생하지 않습니다. 중복된 값이 있더라도 그 다음 순위는 중복된 값의 개수와 상관없이 1씩 증가합니다. 따라서, RANK 함수는 순위 사이에 빈 공간이 생길 수 있지만, DENSE_RANK 함수는 그렇지 않습니다. 또.. 2024. 2. 6.
쿼리문에서 1을 사용하는 이유 private static final String SELECT_CNT="SELECT COUNT(1) AS CNT FROM QUESTIONS WHERE Q_ACCESS=?"; 위처럼 쿼리문에서 1을 사용하여 개수를 구하는 모습을 볼 수 있다 SQL에서 COUNT(1)과 COUNT(*)은 대개 동일한 결과를 생성합니다. 이 두 방법은 행의 수를 세는 데 사용됩니다. 일반적으로 성능면에서는 차이가 거의 없다. 그러나 일부 데이터베이스에서는 COUNT(1)이나 COUNT(*)을 사용하는 것과 관련하여 미묘한 차이점이 있을 수 있다. 가독성: COUNT(1)과 COUNT(*)은 동일한 결과를 생성하지만, COUNT(*)은 모든 열을 포함하는 것으로 해석될 수 있습니다. 따라서 코드를 읽는 사람들이 해당 테이블의 .. 2024. 2. 3.
유저 탈퇴 트리거 유저가 탈퇴하면 다른 테이블의 유저 로그인 아이디 어트리뷰트의 값을 null로 바꾸는 트리거 제작 CREATE OR REPLACE TRIGGER USER_DELETE_TRIGGER BEFORE DELETE ON TEEMO.MEMBER --삭제가 발생하면 FOR EACH ROW BEGIN --다른 테이블 LOGIN_ID를 null로 UPDATE UPDATE TEEMO.QUESTIONS SET WRITER = NULL WHERE WRITER = :OLD.LOGIN_ID; UPDATE TEEMO.ANSWERS SET LOGIN_ID = NULL WHERE LOGIN_ID = :OLD.LOGIN_ID; UPDATE TEEMO.COMMENTS SET LOGIN_ID = NULL WHERE LOGIN_ID = :O.. 2024. 2. 1.
트리거 연습 2 문제 ) 구매가 발생하면 , 해당 유저의 지금까지 구매한 총 금액을 저장하기 테이블 CREATE TABLE BUY ( user_id VARCHAR2(300), price NUMBER ); CREATE TABLE USER_BUY_STATS ( user_id VARCHAR2(300), price_sum NUMBER ); 업데이트 연습을 위해 미리 넣어두기 INSERT INTO USER_BUY_STATS (user_id, price_sum) VALUES ('USER', 0); 이벤트 발생 시키기 위한 INSERT INSERT INTO BUY (user_id, price) VALUES ('USER',100); 트리거 작성 CREATE OR REPLACE TRIGGER SUM_BUY_PRICES_TRIGGER B.. 2024. 1. 30.
트리거 연습1 문제) 학생이 등록 될때 등록된 학생의 기록을 남기기 연습 테이블 CREATE TABLE STUDENT ( SCHOOL_NO VARCHAR2(300), CLASS VARCHAR2(300), NAME VARCHAR2(300), AGE VARCHAR2(300), GRADE VARCHAR2(300), SCORE VARCHAR2(300) ); CREATE TABLE STUDENT_HISTORY ( SCHOOL_NO VARCHAR2(300), CLASS VARCHAR2(300), NAME VARCHAR2(300), AGE VARCHAR2(300), GRADE VARCHAR2(300), SCORE VARCHAR2(300) ); 사용할 INSERT INSERT INTO STUDENT (SCHOOL_NO, CLASS,.. 2024. 1. 29.
DBeaver installer를 다운한다 설치를 한다 dbeaver.exe를 실행한다 왼쪽상단 +를 클릭한다 오라클 선택 누르면 해당창이 나온다 오라클 디비 설정대로 적는다 왼쪽 하단에 Test...을 클릭한다 성공시 해당 창이나온다 그리고 끝내기 파일이 생기면 완료~ 2024. 1. 28.
Trigger 트리거는 사전적 의미로 방아쇠를 뜻한다 방아쇠를 당기면 자동으로 총알이 나가듯이 트리거는 테이블에 무슨 일이 일어나면 자동으로 실행된다 즉 데이터에 변경이 생겼을 때 DB에 insert,update,delete가 발생 했을때 자동적으로 실행되는 프로시저를 의미한다 trigger를 정의할 때 알고 있으면 좋은 내용 1. update,insert,delete등을 한번에 감지하도록 설정가능하다 2. row 단위가 아니라 statement 단위로 trigger가 실행될 수 있도록 할 수 있다 FOR EACH ROW - 변경된 튜플에 대해 트리거 실행 - 여러 튜플한번에 업데이트가 되었다면 여러번 실행되게 된다 FOR EACH STATEMENT - 여러 튜플한번에 업데이트가 되면 한 번만 실행된다 3. trigg.. 2024. 1. 26.
SQL함수 - 집계 함수 집게 함수는 데이터를 그룹화하고 요약 할때 사용한다 조건에 맞는 데이터 개수 세기 : COUNT,COUNT_BIG함수 COUNT 함수가 반환하는 값은 INT범위 COUNT_BIG 함수가 반환하는 값은 BIGINT범위 데이터 합 구하기 : SUM함수 숫자나 돈관련 값을 합할 떄는 SUM 함수를 사용한다 SUM함수는 모든 행의 값을 합하지만 DISTINCT문을 조합해 중복 값을 무시하고 고윳값에만 SUM 함수를 적용할 수도 있다 데이터 평균 구하기 :AVG함수 평균을 구할 때 사용한다 AVG함수의 특징은 NULL값은 무시한다는 것이다 그리고 앞에서 다른 함수에 DISTINCT문을 조합했던 것처럼 AVG함수에도 DISTINCT문을 조합해 중복 값을 무시하고 고윳값에만 AVG함수를 적용할 수 있다 최솟값,최댓값.. 2023. 12. 31.
SQL함수 - 날짜 함수 해나 달, 요일 등 특정 조건에 따라 데이터를 검색할 떄 날짜함수를 사용하면 편리하게 검색 할 수 있다 서버의 현재 날짜 , 시간 반환하기 : GETDATE,SYSDATETIME함수 만약 현재 접속 중인 데이터베이스 서버의 시간을 확인 하려면 GETDATE함수 또는 SYSDATETIME 함수를 사용한다 두 함수의 차이점은 GETDATE 함수는 소수점 3자리까지 SYSDATETIME 함수는 소수점 7자리 까지 시간을 표현한다는 점이다 서버의 현재 UTC날짜 ,시간 반환하기 : GETUTCDATE,SYSUTCDATETIME 함수 현재 접속한 데이터베이스 서버의 협정 세계시 즉 UTC시간을 확인 하려면 GETUTCDATE함수나 SYSUTCDATETIME함수를 사용한다 국가마다 시간이 다르므로 전세계가 같은 시.. 2023. 12. 29.
SQL함수 - 문자열 함수 문자열 관련함수에는 문자열 연결, 형식 변환, 공백 제거, 치환 등이있다 문자열과 문자열은 연결하기 : CONCAT함수 문자열과 문자열은 연결연산자 +를 사용해 수빈게 연결할 수 있다 SELECT symbol + ' : ' + company_name FROM nasdaq_company 문자열을 연결하는 또 다른 방법은 CONCAT 함수를 사용하는 것이다 SELECT CONCAT('I','Love','SQL') 문자열과 숫자 또는 날짜 연결하기 : CAST,CONVERT 함수 숫자나 날짜등의 값을 문자열로 변환해 열결 하여면 변환 함수인 CAST와 CONVERT함수를 사용한다 CAST(expression AS datatype(length)) CONVERT(data_type [(length)],express.. 2023. 12. 28.
서브쿼리 서브 쿼리는 쿼리 안에 포함되는 또 다른 쿼리를 말한다 서브 쿼리는 조인하지 않은 상태에서 다른 테이블과 일치하는 행을 찾거나 조인 결과를 다시 조인할 때 사용할 수 있다 서브 쿼리의 특징 반드시 소괄호로 감싸 사용한다 주 쿼리를 실행하기 전에 1번만 실행된다 비교 연산자에 서브 쿼리를 사용하는 경우 서브 쿼리를 오른쪽에 기술해야한다 내부에는 정렬 구문인 ORDER BY문을 사용할 수 없다 WHERE문에 서브 쿼리 사용하기 서브 쿼리 중에서도 WHERE문에 사용하는 서브쿼리를 중첩 서브 쿼리라고 부른다 중첩 서브 쿼리는 조건문의 일부로 사용한다 중첩 서브 쿼리는 또 다다른 SELECT 문을 사용한 결과를 주 쿼리의 조건값으로 사용한다 그리고 서브 쿼리를 비교 연산자 =,=, 와 함께 사용할 때는 반드시 .. 2023. 12. 25.
테이블 생성하고 데이터 조작하기 데이터 조작 언어는 테이블에 데이터를 검색 삽입 수정 삭제 하는데 사용한다 데이터베이스 생성하고 삭제하기 데이터베이스를 생성하는 CREATE문의 기본형식 CREATE DATABASE [데이터베이스 이름] 삭제 DROP DATABASE [데이터베이스 이름] 테이블 생성하고 삭제하기 CREATE 문으로 테이블 생성하기 기본 형식 CREATE TABLE 테이블 이름( 열1 자료형, 열2 자료형, ... ) DROP문으로 테이블 삭제하기 DROP TABLE [테이블 이름] 테이블에 데이터 삽입, 수정 삭제하기 INSERT문으로 데이터 삽입하기 기본 형식 INSERT INTO 테이블[DUF1,DUF2,...] VALUES [값1, 값2,...] 특이사항 테이블에 데이터를 삽입할 떄 열이름을 생략할 수 있다 하지만.. 2023. 12. 23.
SELECT 1~4 1. SELECT 문으로 데이터 검색하기 2. WHERE문으로 조건에 맞는 데이터 검색하기 3. ORDER BY 문으로 데이터 정렬하기 4. 와일드 카드로 문자열 검색하기 SELECT문은 데이터베이스에서 데이터를 검색하는 구문이다 SELECT문은 사용하기 쉽지만 시스템성능에 많은 영향을 미치므로 주의해서 사용해야한다 자주 사용하는 형태의 SELECT문 SELECT 열 FROM 테이블 WHERE 조건 ORDER BY 열 SELECT : 데이터를 검색하는 구문이다 [열] : 검색하려는 데이터의 열을 입력한다 여러 열을 검색할떄는 쉼표로 구분해 연결한다 ,열 이름 대신 *를 입력하면 테이블의 전체 열을 검색한다 FROM : 데이터를 가져올 테이블을 정하라는 구문이다 [테이블] : 데이터가 저장된 테이블 이름을.. 2023. 12. 20.
데이터베이스와 SQL의 기초 데이터베이스는 흔히 데이터의 깁합 데이터의 저장 형태를 말한다 여러 데이터를 데이터베이스로 활용하려면 연관 데이터인지, 중복데이터가 없는지 등을 확인하고 분류해야한다 데이터베이스를 사용하는 목적 데이터 중복을 최소화해서 조직의 목적에 맞게 효율적으로 관리하려고 사용한다 데이터베이스는 ISOS,R1C3으로 정리한다 ISOS : 데이터베이스를 정의할 때 I : Integrated Data - 통합 데이터 데이터 중복이 최소화된데이터 S : Stord Data - 저장 데이터 : 컴퓨터가 접근할 수 있는 매체에 저장된 데이터 O : Operational Data - 운영 데이터 : 조직의 고유한 업무를 수행하는 데 필요한 데이터 S : Shared Data -공용 데이터 : 여러 응용 시스템이 공동으로 소유하.. 2023. 12. 20.
JDBC 사용 평소 처럼 DTO 생성 DAO는 이제 리스트가 필요없음 왜? DB에 있으니까 대신 DB에 접속 해야하니까 커넥션을 가지고 있어야함 그리고 DB에서 일을 할 녀석도 추가 -부모인 Statement를 사용할 수있지만 불편해서 자식인 PreparedStatement를 사용 conn //DB와 연결을 담당 pstmt//CRUD 수행을 담당 평소와 같이 CRRUD만들기 멤버변수라서 생성자에 만들어야 할 것 같지만 커넥션,pstmt 을 생성자에서 열어주면 디비가 계속 연결되어있는 뜻이라서 사용자가 계속 증가해서 엄청 무거워짐 그래서 jbdc에서는 수행할때마다 열어주고 닫아주고 해주는거임 이런 식으로 연결과 해제를 계속해줘야한다 하지만 이런식으로 여러번 들어 갈것 같기때문에 모듈화를 진행한다 근데 하나의 DAO에다 .. 2023. 12. 20.
DB dbms라고 부르는 다양한 종류의 db들이 있는데 mtsql,...종류가 많다. 경험상 협업에서 db가 바뀌는 일이 꽤 자주 일어난다. 클라우드 같은 개념. 회원들 저장하는 공간. 이 공간이 부족하면 늘려야하고 많이 늘렸는데? 비싸지면 싼걸로 바꿔야되서 굉장히 db가 많이 바뀐다. ★이관 작업 !! ★ sql 명령어 입력하겠습니다. q가 쿼리고 l이 랭귀지.. 쿼리 랭귀지는 스크립트어라고 불린다. 라인 바이 라인이 수행된다. => 언어 특징 자바, C++은 완성이 되야 수행되는데 sql은 라인 바이 라인. 라인별로 수행된다. 중간에 이상해도 다음 라인은 수행된다. 매번 코드가 맞는지 확인해줘야한다. 자바는 친절한 언어. 이건 불친절한 언어.. 신경을 많이 써야한다. 쿼리 작성시 주의점 세미콜론을 봐야하는.. 2023. 12. 19.
이클립스 JDBC 연결 이클립스랑 연결하기 윈도우 - show view - other 선택 data 입력 - Data Source Explorer 선택 데이터베이스와 이클립스가 연결이 된다 우클릭 후 새로운 커넥션을 만든다 오라클 선택 드라이버 추가 오라클 11버전 선택 자바 아카이브 파일 ojdbc.14로 끝나는게 있는데 지우고 무료버전 마지막인 .6으로 끝나는걸 사용해야한다. 강사님께 받은 resource 파일에 압축 풀기 ojdbc6.jar만 따로 꺼내기 add 하기 다 되었으면 ok 똑같이 기입 user name 과 password는 디비 이름과 비번 넣기 save password 클릭 그래야 재접속 가능 Test Connection 클릭 잘 떠야 연결이 된 것 그리고 finish 불 들어오면 끝! sql 파일 만들기 .. 2023. 12. 19.
db설치 1. 설치 확인 cmd sqlplus 입력 잘 뜨면 설치 성공 2. 껏다가 다시 cmd 계정 만들기 접속 sqlplus sys/oracle as sysdba =>접속 명령어 유저생성 ※ CREATE USER TEEMO=> TEEMO 유저 생성할거야 IDENTIFIED BY 1234 =>비번 1234로 할거야 , 잊어버리면 복구 안됨. 엔터를 누를때마다 번호가 생기는건 아직 끝나지 않았다. ACCOUNT UNLOCK; => 락을 풀어준다. User created. => 를 만나야 성공 ! 못만나면 이유불문 실패!@@!!! 권한 부여 GRANT CONNECT, RESOURCE TO TEEMO; =>여러가지 권한을 다룰수있는 처음 계정 생성시 적기 성공시 EXIT => 나가기 2023. 12. 19.