![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bji6Wz/btq3O5jr7za/dUq7UwjJk9CSOBYbZ6rADK/img.png)
간단한 문제를 풀어보고 왜 SQL을 잘 해야하는지 알아보자. 문제 해결 코드 String sql = "SELECT * FROM NOTICE WHERE hit >= 10"; SQL문 명령어 코드를 간단하게 수정해서 hit이 10이상인 게시글만 출력 자바의 조건문을 이용해서 해결 한다면 엄청나게 비효율적이다. 예를들어 HIT이 10이상인 데이터는 2개이고 데이터가 1억개라면? - 1억번의 반복문과 조건문을 통해서 2개의 데이터를 찾아서 출력한다. SQL문의 수정을 통한 해결을 한다면? 엄청나게 효율적이다. - 위의 조건과 같다면 2개의 데이터를 찾고 2개의 반복문을 통해 데이터를 출력한다. ★ 데이터 필터링, 정렬, 그룹화 등의 모든 데이터 연산은 데이터베이스에서 처리해야한다! 자바는 UI 레이아웃을 담당 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cvKqgl/btq3MkV8q61/KCmS5FZIWkJyqgINIVJrK1/img.png)
문제 해결 코드: package ex1; import java.sql.Connection; import java.sql.Date; 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) throws ClassNotFoundException, SQLException { String url = "jdbc:oracle:thin:@192.168.219.103:1521/XE"; String sql = "SELECT * FROM NOTICE"; Class.f..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/btJOyA/btq3NmF6Dp0/vwSKt4nuNmRMf4W5NekNM0/img.png)
쿼리 실행하기 실습 전, ORACLE DATABASE에 대한 기본적인 이해가 필요 SQL plus 또는 SQL Developer 테이블을 생성 5개 CREATE TABLE notice ( id NUMBER, title NVARCHAR2(100), writer_id NVARCHAR2(50), content CLOB, regdate TIMESTAMP, hit NUMBER, files NVARCHAR2(1000) ); CREATE TABLE member ( id NVARCHAR2(50), pwd NVARCHAR2(50), name NVARCHAR2(50), gender NCHAR(2), birthday CHAR(10), phone CHAR(13), regdate DATE, email VARCHAR2(200) ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bdFHeT/btq3IR1eXYV/ofgJGkhXn4cieGtAmK2Zy1/img.png)
프로그램: Oracle SQL Developer 기존에 만들었던 TOPIC 테이블을 이용 분해 AUTHOR 테이블 생성 이름 및 테이블 값 입력 시퀀스 생성 SEQ_AUTHOR 생성 AUTHOR 데이터 입력 INSERT INTO author (id, name, profile) VALUES(SEQ_AUTHOR.nextval, 'egoing', 'developer'); INSERT INTO author (id, name, profile) VALUES(SEQ_AUTHOR.nextval, 'duru', 'DBA'); INSERT INTO author (id, name, profile) VALUES(SEQ_AUTHOR.nextval, 'taeho', 'data scientist'); INSERT INTO auth..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bXmit6/btq3IQ8DMog/uqaG7E6kiKv9D0GqqEWpd1/img.png)
테이블은 저마다 장단점이 있다. 읽기 좋은 테이블(쓰기 불편) 쓰기 좋은 테이블(읽기 불편) 결합(JOIN): 쓰기 좋은 테이블을 읽기 좋게 만들 수 있다. (릴레이션 데이터베이스의 최고의 장점) SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id; -> topic에다가 topic의 author_id랑 author.id가 같은 값을 author의 왼쪽을 붙인다. 정리: 테이블은 장점과 단점이 공존한다. 읽기 좋은 테이블은 쓰기가 불편하고, 쓰기 좋은 테이블은 읽기가 불편하다. 관계형 데이터 베이스는 이 불편함을 해소시켜주는 엄청난 방법인 조립(JOIN)이라는 방법이 있다. 먼저 쓰기 좋은 테이블을 만들어 놓고 내가 필요한 정보가 있을 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dWIQdp/btq3FeWvSJG/kokLPLivvok2HUCEaCCOU1/img.png)
Relation : 관계형 데이터베이스의 정체성 1. 표라고 하는 형태로 데이터를 다룬다. 2. 표를 필요에 따라 잘게 쪼개고 필요에 따라 쪼개진 표를 결합 가능. 또한 실제 존재하지 않는 표를 관계를 통해 필요한 표로 만들 수 있다. *가정: 실제 데이터베이스의 행은 1억 개. - 기존의 topic에 name과 profile을 추가 문제점: 1. egoing의 profile이 developer에서 programmer로 변경할 경우 ->1억 개의 행을 체크하고 변경하려면 엄청난 시간이 소요 2. taeho, datascientist의 정보를 입력하고 싶지만 title, description, created 정보가 없어서 추가 불가 3. 초록색 egoing과 파란색 egoing은 다른 사람일 경우 구분이 ..