썸네일 #36 [ORACLE] JDBC, Statement, PreparedStatement, CallableStatement, ExecuteQuery, ExecuteUpdate 📌 JDBC (Java DataBase Connectivity) : Java와 Oracle을 연동하기 위해 JDBC가 필요함 Java가 Database를 사용할 수 있도록 연결해주는 응용프로그램 인터페이스 데이터베이스 관리 시스템에 넘겨질 SQL 형태의 데이터베이스 접근 요구 문장을 각 시스템에 맞도록 바꾸는 역할을 함 👉 데이터베이스를 조작하기위한 Java의 라이브러리 💡 JDBC 사용법 1. Class.forName()을 이용해 드라이버 로드 2. DriverManager.getConnection() 으로 연결 3. Connection 인스턴스를 이용해 Statement 객체 생성 4. Statement 객체의 결과를 ResultSet이나 int에 받기 // Driver 클래스 로드 Class.for..
썸네일 #35 [ORACLE] LIKE, 와일드 문자 📌 LIKE 연산자 : 원하는 문자가 포함된 자료를 검색할때 사용하는 연산자 SELECT 컬럼 명 FROM 테이블 명 WHERE 컬럼 명 LIKE '비교 문자열'; 💡 와일드 문자 ✅ % : 문자의 수를 제한하지 않은 검색을 할 때에 사용 👉 '박%' : '박' 으로 시작하는 모든 문자열 👉 '%윤' : '윤' 으로 끝나는 모든 문자열 👉 '%은%' : '은' 을 포함한 모든 문자열 ✅ _ : 문자의 수를 제한한 검색을 할 때에 사용 👉 '김__' : '김'으로 시작하는 세 글자 문자열 👉 '_은_' : '은'을 포함하는 세 글자 문자열 👉 '__수' : '수'로 끝나는 세 글자 문자열 💡 사용예시 SELECT EMP.NAME FROM EMP WHERE NAME LIKE '이%'; --> '이'로 시작하..
썸네일 #34 [ORACLE] OUTER JOIN, NVL, NVL2, IN, COALESCE 📌 OUTER JOIN : JOIN하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 출력 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용 = 동일한 값이 없는 (교집합이 없는) 행도 반환할 때 사용 🚨 OUTER JOIN은 USING이나 ON 조건절을 필수적으로 사용해야함 SELECT * FROM 테이블1 LEFT|RIGHT|FULL OUTER JOIN TABLE 테이블2 ON (테이블1 KEY = 테이블2 KEY) 📘 NOTE 💡 USING : 두 개의 테이블이 내부 조인으로 조인 될 때 조인하고자 하는 두 테이블의 컬럼명이 같을 경우, 조인 조건을 길게 적지 않고 간단하게 적을 수 있도록 하는 역할 ✅ ON 사용예시 SELECT..
썸네일 #33 [ORACLE] MOD,REMAINDER,DATE 함수,문자열 연결, SUBSTR, 집합연산자 📌 MOD (NUMBER1,NUMBER2) : 나누기 연산을 한 후에 구한 나머지를 반환하는 함수 (숫자데이터 타입이거나, 숫자 데이터 타입으로 변환 가능한 모든 타입 가능) 👉 Java에서의 % 연산자와 동일한 역할 💡MOD() 사용법 SELECT MOD(5,2) FROM DUAL --> 결과값: 1 📌 REMAINDER (NUMBER1, NUMBER2) : 나누기 연산을 한 후에 구한 나머지를 반환하는 함수 (숫자 데이터 타입 가능) 💡 REMAINDER() 사용법 SELECT REMAINDER(5,2) FOR DUAL --> 결과값 : 1 💡 MOD() 와 REMAINDER()의 차이 ✅ MOD()는 나머지 계산시 FLOOR함수를 사용 MOD(NUM2,NUM1) NUM2 – NUM1 * FLOOR ..
썸네일 #32 [ORACLE] 집계 함수, GROUP BY, DISTINCT, VIEW 📌 집계 함수 (Aggregate Function) : 이미 기록된 정보를 모아서 계산하는 함수 입력이 여러 개의 행이고, 출력 결과가 하나임 COUNT(*)을 제외하고, 집계 함수는 NULL 값을 포함하지 않음 WHERE 절에 바로 집계함수를 사용할 수 없음 👉 HAVING절에 사용하거나 WHERE절의 서브쿼리에서 사용 가능 💡 COUNT() : 특정한 기준을 충족하는 행의 수를 RETURN 🚨 COUNT(*)을 할 경우를 제외하고 NULL값은 포함하지 않음(세지 않음) 💡 SUM() : 숫자형 COLUMN의 총 합을 RETURN 🚨 NULL값은 제외 💡 AVG() : 숫자형 COLUMN의 평균 값을 RETURN 🚨 NULL 값은 제외됨 👉 NULL값을 포함한 평균을 구하고 싶을 경우 SUM(COLUM..
썸네일 #31 [ORACLE] Cascade 📌 CASCADE : PK를 가지고 있는 테이블의 값을 삭제하면 FK로 연결된 값이 연쇄로 삭제되게 하는 옵션 💡 ORACLE에서는 DELETE에 대해서만 CASCADE 옵션을 지원하고, UPDATE CASCADE는 지원하지 않음 🚨 연결된 테이블을 모두 SELECT 하므로 성능이 좋지 않은 편이고, 데이터 유실 위험이 있어 자주 쓰는 것은 좋지 않음 💡 CASCADE 사용법 자식 테이블을 생성하고 ALTER로 테이블에 CASCADE를 설정하거나, 테이블을 생성할 때 ON DELETE CASCADE 옵션을 추가한다 ✅ CREATE 문 CREATE TABLE [테이블 명]( [칼럼 명] [데이터 타입], CONSTRAINT [제약 조건 명] FOREIGN KEY [기본키 명] REFERENCES [참조할 ..
썸네일 #30 [ORACLE] Inner Join, Alias 📌 Join 두 개 이상의 테이블을 결합하여 데이터를 검색하는 방법 원하는 데이터를 얻기 위해서 여러 테이블을 다시 조합할 때 사용하는 연산자 💡 조인(Join)은 일반적으로 내부 조인 방식을 의미한다 종류 : Inner Join, Natural Join, Outer Join, Left Join, Right Join, Cross Join,... 📌 Inner Join 두 테이블의 교집합, 두 테이블 간 Join 조건을 만족하는 행을 반환 집합으로 표현하자면 교집합이라고 할 수 있고, NULL 값은 포함되지 않음 💡 INNER JOIN 사용법 SELECT [테이블 명].[컬럼 명], ... FROM [테이블 1] INNER JOIN [테이블 2] ON [테이블 1].[컬럼 1] = [테이블 2].[컬럼 2..
썸네일 #29 [ORACLE] 서브쿼리 📌 서브 쿼리 💡 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장 💡 비교 연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 함 💡 메인 쿼리가 실행되기 이전에 한 번만 실행됨 📌 SELECT절 서브 쿼리 SELECT절 안에 들어있는 서브 쿼리 : 결과가 반드시 단일 행이나, SUM, COUNT 등의 집계 함수를 거친 단일 값으로 리턴되어야 함 서브 쿼리를 끝마친 값 하나를 메인쿼리에서 SELECT 하기 때문 SELECT 학생이름, ( SELECT 학과.학과이름 FROM 학과 WHERE 학과.학과ID = 학생.학생ID ) AS 학과이름 FROM 학생 WHERE 학생이름 = '홍길동' ; 📘 NOTE 💡 단일행 서브쿼리 : 서브쿼리 수행 결과가 오직 하나의 ROW(행)만을 반환 하나의 결과를 가..
썸네일 #28 [ORACLE] DDL, DML, DCL 문법 📌 DDL 💡 CREATE CREATE TABLE [TABLE 명] ( [COLUMN1 명] [COLUMN1 DATA TYPE], [COLUMN2 명] [COLUMN2 DATA TYPE], [COLUMN3 명] [COLUMN3 DATA TYPE], ... ); CREATE TABLE USERS ( ID NVARCHAR(10) ); 💡 ALTER ✅ COLUMN 추가 ALTER TABLE [TABLE 명] ADD [추가할 COLUMN 명] [COLUMN DATA TYPE]; ALTER TABLE USERS ADD NAME NVARCHAR(5); ✅ COLUMN DATA TYPE 변경 ALTER TABLE [TABLE 명] MODIFY [COLUMN 명] [DATA TYPE]; ALTER TABLE USER..
썸네일 #27 [ORACLE] 인덱스, 기본키, constraint, 코드, 데이터 타입, commit, 정규화 📌 인덱스 : 데이터 레코드를 빠르게 접근하기 위해서 [키 : 포인터 ] 쌍으로 구성되는 데이터 구조 DB의 테이블에 데이터가 많을 때, 검색 속도를 향상해주기 위해 사용하는 객체 하지만, 인덱스를 생성한다고 무조건 데이터를 빠르게 검색할 수 있는 것은 아님 인덱스를 생성하면 인덱스를 위한 디스크 공간이 필요하고 인덱스를 포함한 테이블에 작업을 할 경우, 인덱스 정렬을 위한 더 많은 비용과 시간이 필요하기 때문. 인덱스 생성 시 해당 테이블의 의도를 파악한 후에 상황에 맞게 적절한 인덱스로 구성해야 한다 💡 클러스터형 인덱스 (Clustered Index) : 책 앞에 있는 목차 (페이지로 바로 그 페이지를 펼 수 있음), 항상 순서를 유지해야 하는 인덱스 클러스터드 인덱스 순서로 레코드들이 하드 디스크..
썸네일 #26 [ORACLE] DDL, DML, DCL, DELETE, TRUNCATE, DROP 📌 DDL, DML, DCL 명령어 종류 명령어 설명 데이터 정의어 (DDL: Data Difinition Language) 데이터를 조회하거나 검색하기위한 명령어 또는 테이블에 들어있는 데이터에 변형을 가하는 명령어 SELECT 데이터 조회, 검색 INSERT 데이터 삽입 UPDATE 데이터 수정 DELETE 데이터 삭제 데이터 조작어 (DML: Data Manipulation Language) 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어 CREATE 데이터 구조 생성 ALTER 데이터 구조 변경 DROP 데이터 구조 삭제 RENAME 데이터 구조 이름 변경 TRUNCATE 데이터 삭제 데이터 제어어 (DCL: Data Control Laguage) 데이터베이스에 접근하고 객체들을 사용하도록..
썸네일 #25 [ORACLE] 데이터 베이스 설치 .. 윈도우 포맷한 날 ㅜ