MySQL Index
Database2023. 7. 19. 23:28MySQL Index

서두 미루고 미루어왔던 MySQL Index를 정리했다 초기에는 우테코 테코톡 영상을 많이 참고했으며, 추후 지식이 쌓이면서 뇌근육이 강해져갔는데, 어느 순간부터는 SQL 레벨업, Real MySQL 책 참고를 많이 했다 잘 알려지지 않은 책은 아닌 것 같은데, SQL 레벨업 책이 정말 괜찮다. 어떤 부분에 있어서는 Real MySQL보다도 좋은 것 같다. Real MySQL이 다루는 난이도나 내용은 더 많을 지라도, SQL 레벨업은 꽤 깊이 있는 내용을 직관적이면서 쉽게 설명했다 (외국 서적인데 번역도 매끄럽다 !!, 쪽수도 적다) 서두가 길었다 우선 MySQL은 다른 DB와 다른게 몇가지 있다 - Repeatable Read 격리 수준에서도 Phantom Read가 없다 (MVCC를 이용했기 때문인 ..

프로그래머스 4~6 : IS NULL, JOIN, STRING, DATE
Database2021. 3. 23. 00:48프로그래머스 4~6 : IS NULL, JOIN, STRING, DATE

IS NULL 이름이 없는 동물의 아이디 SELECT NVL(NAME, ANIMAL_ID) FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID; 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID; NULL 처리하기 SELECT ANIMAL_TYPE, NVL(NAME, 'No name') "NAME", SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID; JOIN 없어진 기록 찾기 SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O ON I...

프로그래머스 SQL 1~3 - SELECT, SUM, MAX, MIN, GROUP BY
Database2021. 3. 22. 23:58프로그래머스 SQL 1~3 - SELECT, SUM, MAX, MIN, GROUP BY

SELECT 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC; 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID ASC; 어린 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION 'Aged' ORDER BY ANIMAL_ID ASC; 동물의 아이디와 이름 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS OR..

생코_관계형 데이터 모델링
Database2021. 3. 19. 02:08생코_관계형 데이터 모델링

업무파악 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링 업무파악은 고객을 통해서 개발자가 알아낼 업무이다. 이때 주의할 것은 고객은 일을 잘 이해하는 가이다 단순히 일을 잘한다는 것은 일을 이해하지 못하더라도 익숙해져 있어서 이해를 덮어버리고 하는 것일 수 있기 때문이다. 문제는 컴퓨터에게 일을 맡기려면 익숙함만으로는 전달할 수 없다. 우리는 업무를 이해해야 한다. 이때 업무를 이해하는 방법으로는 UI를 설계하여 고객과 대화하는 것이 최선이다. 논리-물리 모델링은 실제 개발자가 테이블 만드는 작업들이다. 이때 개념적 데이터 모델링을 잘하면 논리-물리 모델링은 규칙적이고 기계적인 일이다. 논리~물리 모델링을 할줄 알아야 개념 모델링을 할 수 있다. 개념 모델링은 고객의 업..

오라클에서 ANSI 조인 3개
Database2021. 3. 8. 00:52오라클에서 ANSI 조인 3개

JOIN 2개를 할 경우는 자명한데 비해.. 3개를 걸 경우에는 의문점이 들어서 포스팅 하였다. JOIN 2개의 경우 위와 같은 결과가 나오는 것은 당연하다! 아래의 그림으로 쉽게 유추 가능하다. 위와는 다른 주제이지만 LEFT 조인하였을 경우에는 AA위주로 원소의 집합이 형성된다 만일 A.*이 아닌 B.* 이라면 JOIN 3개인 경우 2가지로 해석을 해 보았다. 가장 늦게 조인된 CC가 BB와 선조인하고 AA랑 조인한다 2번째로는 이미 AA랑 BB랑 조인하고 난 뒤의 것을 조인한다. 어라.. 그런데 생각해보니 어느쪽이는 해석이 된다. 마치 집합할때 어느쪽을 먼저 연산하던지 같은 것 처럼 말이다.. (아래 그림) 해결 완료.. 짝짝 힛..

Database2021. 3. 7. 14:40오라클에서 실수로 데이터나 테이블 삭제했을 경우

● 데이터가 무언가의 이유로 유실된 경우 TIMESTAMP 란 것이 있다. 해당 테이블의 분별로 스냅샷을 찍어 놓은 것이라고 볼 수 있을 것 같다. 정말 분별로 해당테이블의 데이터를 스냅샷 찍어놓은 것이라.. 많은 저장 비용이 들 것 같다. 그래서 그런지 복구시간은 제한되어 있다. 우선 복구 이전에 이래저래 급한 상황이면 CREATE TABLE [백업할_테이블] AS SELECT * FROM [복구할 테이블] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '30' MINUTE) 위 명령어를 사용해서 미리 백업 테이블을 만들어 놓자. 참고로 데이터 구조만 복사하고자 한다면 WHERE 1=2 위 코드를를 추가 조건으로 붙이면 된다. ● 테이블을 실수로 드랍한 경우 참고로 테이블 DROP..

뉴렉 SQL 테이블 준비
Database2020. 10. 5. 01:22뉴렉 SQL 테이블 준비

CREATE TABLE MEMBER ( ID VARCHAR2(50) , PWD VARCHAR2(50) , NAME VARCHAR2(50) , GENDER VARCHAR2(50) , AGE NUMBER , BIRTHDAY VARCHAR2(50) , PHONE VARCHAR2(50) , REGDATE DATE ); ALTER TABLE MEMBER MODIFY ID NVARCHAR2 (50); ALTER TABLE MEMBER DROP COLUMN AGE; ORA-12988: SYS에 의해 소유된 테이블에서 열을 삭제할 수 없습니다 결론은 컬럼 삭제만 막아놓았다.(오라클에서) ALTER TABLE MEMBER ADD EMAIL VARCHAR2(200);

Database2020. 10. 5. 00:32=== 중간 중간 알게된 것들 ===

오라클을 설치하면 계정들이 만들어진다. 관리자 계정과 샘플 계정(HR 등)인데 SYS(SYSDBA)가 SYSTEM보다 더 많은 일을 할 수 있다. (백업이나, 스케쥴 등) JDBC Driver 호환 버전 확인 방법 본 포스팅은 다양한 Database의 JDK JDBC Driver 버전 확인 방법에 대해 알아보겠습니다 JDBC Driver 버전 별 지원하는 스펙이 다르므로, 서버에 맞는 Driver 확인이 필요할 경우 사용할 수 있습니다. Ⅰ. JDB waspro.tistory.com [Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 에러 해결 오래간만에 개인 PC에 오라클을 설치하고 계정을 만들려고 하니 오류메시지가 하나 출력되었습니다. ORA-65096: 공통 사용자 또는 ..

자바 JDBC 연동, 오라클 계정 생성
Database2020. 10. 4. 23:37자바 JDBC 연동, 오라클 계정 생성

while(rs.next()) { String title = rs.getString("TITLE"); System.out.println(title); } 결과부터, package ex1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Program { public static void main(String[] args) { Connection conn = null; String url = "jdbc:oracle:thin:@localhost:1521:xe"; String id ..

공부하면서 알게된 사실들
Database2020. 10. 1. 23:19공부하면서 알게된 사실들

갯수 제한할때 ROWNAME과 ORDER BY를 혼용해서 사용할 때가 있는데.. 주의해야 한다. ROWNAME이 ORDER BY보다 먼저 실행되기 때문에.. 본인 같은 경우 서브 쿼리 형태로 작성하였다. ​ SYSDATE + TO_CHAR 는 짝끙 ​ JOIN에서 INNER, OUTER 등 명확한 명시를 안 하고 WHERE절에서 ID외래키로 JOIN한 것은 INNER조인이다! ​ SET STATISTICS TIME ON; --SQL Server 쿼리 수행 시간 측정 SELECT e.first_name + ' ' + e.last_name employee, m.first_name + ' ' + m.last_name manager, m2.first_name + ' ' + m2.last_name manager2..

programmers  solution
Database2020. 10. 1. 23:09programmers solution

JOIN > 없어진 기록 찾기 SELECT R.ANIMAL_ID, R.NAME FROM ANIMAL_INS L RIGHT JOIN ANIMAL_OUTS R ON L.ANIMAL_ID = R.ANIMAL_ID WHERE L.ANIMAL_ID IS NULL ORDER BY R.ANIMAL_ID; => 다시 풀었을때 SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O ON O.ANIMAL_ID = I.ANIMAL_ID WHERE I.DATETIME IS NULL ORDER BY O.ANIMAL_ID; 오랜 기간 보호한 동물(1) SELECT * FROM ( SELECT I.NAME, I.DATETIME FROM ANIMAL_INS I L..

ORACLE 공부하기 좋은 사이트
Database2020. 10. 1. 23:03ORACLE 공부하기 좋은 사이트

https://programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 반복해서 풀어보자 ​ ​ https://www.sqlservertutorial.net/sql-server-basics/sql-server-select/ SQL Server SELECT - Querying Data from a Single Table this tutorial introduces you to the basic of the SQL Server SELECT statement, focusing on how to query against a single table. www.sqlservertutorial.net 직관적인 순서도 ..

image