-
DCL, DML, DDL, TCL
등등, 작성을 할 줄 알아야 한다.
DML : Data Manipulation Language, 조작어
//select select * from emp ;
//insert INSERT INTO CLIENT (c_no, c_name, c_tel, c_email) VALUES (000001, '손흥민', '01012341234', 'hmson123@naver.com'); //update UPDATE C_TABLE SET c_name='음바페', c_tel='01043214321' WHERE c_no = '000006'; //delete DELETE FROM C_TABLE WHERE c_no='000003';
DDL : Data Definition Language, 정의어
//create CREATE TABLE C_TABLE values ( C_NO number(7) not null, C_NAME varchar2(20) not null, C_TEL varchar2(10) not null, C_EMAIL varchar2(20) not null, CONSTRAINT C_NO_PK PRIMARY KEY (C_NO), CONSTRAINT C_NAME_FK FOREIGN KEY (C_NAME) REFERENCES B_TABLE(C_NAME) ); //<ALTER>> //add ALTER TABLE C_TABLE ADD (C_LOC varchar2(20)); //drop ALTER TABLE C_TABLE DROP C_EMAIL; //modify ALTER TABLE C_TABEL MODIFY //rename ALTER TABLE C_TABLE; //truncate
DCL : Data Control Language, 제어어
//grant //revoke
TCL : Transaction Control Language, 트랜잭션 제어어
//commit: 수행했던 일들을 모두 DBMS에 적용하라는 명령어. //rollback: 수행했던 일들을 DBMS에 적용하지 않고 최종 commit된 상태로 돌리는 명령어. //savepoint: 수행하는 중간에 point를 지정하는 명령어. 추가로 rollback 시에 최종 commit된 상태가 아닌 지정한 point 시점으로 돌릴 수 있게 해준다.
<서술형 8문제>
<dbms에 대해>
데이터베이스에서 데이터를 관리하는 시스템.
DML: 조작어
DCL: 제어어
DDL: 정의어
TCL- 트랙잭션 제어어
<jdbc에 대해>
자바 프로그램 안에서 SQL을 실행하기 위해 데이터베이스를 연결해주는 응용프로그램 인터페이스.
정보가 다른 곳에 저장되어 있어도 쉽게 정보에 접근할 수 있다.
<sql이 무엇인지>
구조적인 질의 언어. 데이터베이스를 제어, 관리
데이터베이스에서 자료를 검색, 수정, 삭제하는 데이터베이스 언어
데이터 정의 기능과 조작 기능을 갖추고 있다.
<ojdbc에 대하여>
jdbc인데 오라클에서 제공하는 오라클 데이터베이스에 연결해서 사용할 수 있도록 해준 것
<싱글톤패턴에 대해>
객체의 생성과 관련된 패턴으로서 특정 클래스의 객체가 오직 한 개만 존재하도록 보장한다. 즉 클래스의 객체를 하나로 제한한다.
생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.
<Connection Pool>
- 미리 데이터베이스 connection 을 여러개 만들어서 특정 공간에 저장해놓고 여러 사용자가 필요할 때마다 하나씩 꺼내서 사용하고 다시 집어 넣는 방식.
- 장점 : 속도 향상, 자원의 효율적 활용, 커넥션 객체 수 제어 가능
<데이터모델링의 정의>
- 어떠한 프로젝트에 있어 필요한 데이터들을 분석하고 정의하고 해당 프로젝트에 맞게 절차를 구상하는 것.
- 고객의 요구사항을 분석하여 데이터들을 개체와 속성, 관계로 명확화하는 과정이 필요하며 그에 따른 요소를 사용하여 각각의 과정을 설계해 나가야 함.
- 요구사항 분석-개념적 설계-논리적 설계-물리적 설계-데이터 베이스 구현 및 운영
<as alias 별칭>
- 컬럼 뒤에 AS 또는 AS없이 명칭을 써서 사용자가 원하는 컬럼명으로 변경하여 결과를 출력할 수 있다.
- 컬럼에 사용될때는 as를 쓰는데 테이블명에는 불가능하다. (오라클만. mysql은 가능)
- 별칭을 사용할 때 그 사이에 띄어쓰기가 있거나 한글의 경우 쌍따옴표로 묶어주어야 한다.
<java- 모든언어 -exception 처리의 의미와 목적에 대해 설명>
- 비정상적인 종료를 방지하면서 어떤 것 때문인지, 어떻게 다음화면에 뿌릴지를 정상적인 상황으로 만들어낼수가 있게 된다.
<SELECT에서 ORDER BY 서술>
- 특정 컬럼의 데이터를 중심으로 오름차순이나 내림차순으로 정렬하는 기능을 하는 절.
- 쿼리문의 맨 끝에 위치. 정렬의 기준이 될 컬럼명을 order by뒤에 넣고 정렬방식을 작성.
- 오름차순 ASC와 내림차순 DESC 정렬이 있다. 정렬방식을 명시하지 않을 경우 오름차순이 기본값.
<SQL PLUS와 SQL DEVELOPER>
1. SQL PLUS
- SQL 구문을 실행해 볼 수 있는 툴.
- CLI형태. 커맨드 라인 인터페이스
2. SQL DEVELOPER
- SQL 조작을 위해 만들어진 툴. 다른 dbms와도 연결이 가능하고 범용적?으로 사용될 수 있다.
- GUI 형태. 따로 찝을 풀어서 사용하는 형태.
- 기본적인게 아니어서 추가적으로 설치해서 사용해야 하며 디스팅트. 행에 대한 중복을 제거해준다.
- 오라클 11G 익스프레스 에디션 사용중이다.
<DISTINCT>
- 데이터를 조회할 때 값이 중복되는 경우가 있는데 이를 제거하고 싶을 때 사용하는 키워드.
- 명칭은 DISTINCT SELECT와 컬럼명 사이에 넣어 활용. 중복값을 제거해준다.
<PreparedStatement에서 물음표 기능>
- PreparedStatement 에서는 SQL문을 작성할 때는 변수값(searchStr)자리에 ?를 쓴다.
그리고 나중에 물음표값을 정의해준다
- 등록된 쿼리문에서 빈 부분을 채워 넣어준다.
- 위치 인덱스
<SELECT문에 FROM>
SELECT 컬럼명1
FROM 테이블명1 JOIN 테이블명2
ON
WHERE 조건식
GROUP BY
HAVING
ORDER BY 컬럼명1 ASC;
<Statement와 PreparedStatement 차이>
Statement - 쿼리문 자체를 완벽하게 만들고 마지막에 실행시키는 방식
PreparedStatement - 쿼리문을 등록해놓고 그 값을 나중에 설정하여 실행시키는 방식
statement는 SQL문에 변수를 넣어 완벽하게 작성해놓고 마지막에 실행하도록 하는 구조이다.
PreparedStatement는 SQL문을 만들 때 변수 자리에 ?를 넣어두고, 나중에 변수를 따로 입력하는 방식으로 효율성이나 유지 보수 측면에서 유리한 구조이며 기본적으로 Statement를 상속받기 때문에 Statement 클래스 메소드를 모두 사용이 가능하다.<Resultset에 대해 설명하세요>
- SELECT의 결과를 저장하는 객체.
- Statement/PreparedStatement로 실행한 결과가 실려서 오는 자료형(행열이 있는 형태) rs.next() - executeQuery로 명령하면 ResultSet이라는 객체를 돌려주는데
rs.getXXX 을 이용해 값을 가져온다.
<executeQuery에 대한 설명 하나. executeQuery가 뭔가요? >
- Statement와 PreparedStatement에 실려 있는 SQL문을 DBMS로 던져주고 거기에 대한 결과문을 받아오는 역할. 주로 SELECT 구문을 수행할 때 사용되는 함수.
- executeQuery 함수를 사용하여ResultSet 객체에 결과값을 담을 수 있다.
<WHERE과 HAVING 의 차이>
WHERE: 항상 from 뒤에 위치하고 조건에는 다양한 비교연산자들이 사용되어 구체적인 조건을 줄 수 있다
HAVING: 항상 group by 뒤에 위치하고 where 조건절과 마찬가지로 조건에는 다양한 비교연산자들이 사용되어 구체적인 조건을 줄 수 있다.
where은 기본적인 조건절로서 우선적으로 모든 필드를 조건에 둘 수 있다
하지만 having은 group by 된 이후 특정한 필드로 그룹화 되어진 새로운 테이블에 조건을 줄 수 있다.
--------------------------------------------------------------
<뷰....에 쓰일 수 있는 옵션이 뭐뭐가 있나요?>
58-63-67 상당히 많은 양을 차지하고 있습니다
61 어쩌고 체크 옵션
63 어쩌고 리드 온리
.. 엔 어쩌고
65 로넘 사용하기
OR REPLACE
68 시퀀스
기본이에여 테이블 만들어서 쓰는 만큼 많이 씁니다. 실습 다시 하시면서 기억 해보세요
<view 정의>
- 뷰는 하나의 가상 테이블이라 생각 하면 된다.
- 뷰는 실제 데이터가 저장 되는 것은 아니지만 뷰를 통해 데이터를 관리 할수 있다.
- 뷰는 복잡한 Query를 통해 얻을 수 있는 결과를 간단한 Query로 얻을 수 있게 한다.
- 한 개의 뷰로 여러 테이블에 대한 데이터를 검색 할 수 있다.
- 특정 평가 기준에 따른 사용자 별로 다른 데이터를 액세스할 수 있도록 한다.
CREATE OR REPLACE VIEW view_name AS SELECT c_num, c_name FROM c_table ;
table/view/sequence/trigger/proedure/function 생성시에 사용하는 옵션
-create or replace : 엘터를 지원하지 않는 경우에는 다시 덮어써달라.
-force / noforce : 뷰에서도 쓰이고 트리거에서도 쓰이는데. 기존에 이런게 없다면 생성을 시켜주는 것. 트리거에서 테이블에다가... 강제성을 가지고 있다...
- with check option. where과 함께 쓰이면서 조건문, 그 외의 조건문에서는 update가 되지 않도록 함. 교재 61-62 한번 꼬옥 해보셔야 할 것 같네요
-with read only 교재 63 이건 예제 좀 별로였어여... 업데이트 안에 뭐가 포함되느냐. delete도 포함되고 insert도 포함되고 update도 포함됩니다.
추가하고 삭제하는것도 수정의 일부분이잖아요? 다 안된다. 리뷰만 된다. 한마디로 셀렉트만 된다..
<TCL 어쩌고 세가지가 뭔지>
- TRANSACTION : 하나의 논리적인 작업 단위로서 성공하거나 실패하는 일련의 SQL문.
명령어 여러개들을 묶어서 하나를 수행하는................
commit-수행했던 일들을 모두 DBMS에 적용하라는 명령어
rollback-수행했던 일들을 DBMS에 적용하지 않고 최종 commit된 상태로 돌리는 명령어
savepoint-수행하는 중간에 point를 지정하는 명령어. 추가로 rollback시에 최종 commit된 상태가 아닌 지정한 point 시점으로 돌릴 수 있게 해준다.
'JAVA' 카테고리의 다른 글
191020 JDBC 기본 (0) 2020.10.19 190820 JSONReader (0) 2020.08.29 190820 lotto (0) 2020.08.29 190820 - get Lotto Num (0) 2020.08.29