카테고리 없음

[ DB ] DDL문, JDBC API

ChatjihoiPT 2025. 3. 5. 17:26

1. DDL문


1. DDL이란?

Database에서 사용하는 다양한 객체를 생성, 삭제, 변경하는 문으로 수행하면 DB에 바로 반영됨


(1) 객체 종류
table(데이터를 관리하는 최소 단위), index, view

  • 생성 : create 객체 객체명;
  • ex) create sequence board_no;

  • 삭제 : drop 객체 객체명;
  • ex) drop sequence board_no;

(2) 테이블
데이타를 관리할 최소 단위

  • 생성 create table 테이블명( 컬럼명 데이타타입 [[CONSTRAINT 제약조건이름] 컬럼레벨 제약조건] , ... ,[[CONSTRAINT 제약조건이름] 테이블레벨 제약조건] );

 
2. 데이타 무결성

데이타의 정확성, 일관성, 유효성이 유지되는 것을 말한다.

  1. 개체 무결성 (Entity integrity) (기본 키 Primary key)
  2. 모든 테이블이 기본 키 (primary key)로 선택된 필드 (column)를 가져야 한다. 기본 키로 선택된 필드는 고유한 값을 가져야 하며, 빈 값은 허용하지 않는다.
  3. 참조 무결성 (Referential integrity) (외래키 foreign FK) 관계형 데이터베이스 모델에서 참조 무결성은 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것을 말한다.
  • orders 테이블의 user_id는 반드시 users 테이블의 id 값 중 하나여야 함.
  • ON DELETE CASCADE 옵션을 통해 부모 데이터 삭제 시 자식 데이터도 삭제되도록 설정 가능.

(없던 데이터를 추가해도 오류, 있던 참조 데이터(emp)를 삭제해도 오류)
(cover 정보가 삭제될 경우 null값을 넣기)


(1) 주문 테이블 예시

ono : 주문번호                   primairy key
odate : 주문일
id : 주문한 고객 아이디      foreign key
gno : 상품 번호                  foreign key
quantity : 주문한 수량
address : 배송지
 
(2) table level

[constraint] 제약조건 제약조건명 외래키 [constraint] foreign key 제약조건명(컬럼명) reference 참조할테이블명(참조할컬럼명) [option]
option

  • on delete : 참조 되는 테이블(부모 테이블)의 값이 삭제 될 경우 동작
  • on update : 참조 되는 테이블(부모 테이블)의 값이 변경 될 경우 동작

 
(3) 동작
 
casecade : 부모 테이블의 참조하는 데이타가 삭제되거나 수정되면 같이 삭제되거나 수정됨 set null : 부모 테이블의 참조하는 데이타가 삭제되거나 수정되면 null값으로 변경됨. no action : 부모 테이블의 참조하는 데이타가 삭제되거나 수정되면 데이타는 변경되지 않는다. set default: 부모 테이블의 참조하는 데이타가 삭제되거나 수정되면 데이타는 default 값으로 변경됨.
check

  • 데이타의 도메인 무결성을 위해 check 제약 조건을 지정할 수 있다.
  • mysql은 8.0.16버전 부터 check 제약 조건을 사용할 수 있다. 형식] [contraint] check (조건)

(4) 테이블 삭제
 
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
주의점 : 부모 테이블인 경우 삭제가 안됨. => 자식 테이블 삭제 후 부모 테이블을 삭제해야 한다.
RESTRICT | CASCADE 옵션은 아무 일도 하지 않지만 다른 디비와의 이식성을 위해 제공됨.
 
ex)
member(부모), goods(부모), orders(자식)
orders 삭제 => member or goods 삭제
 
(5) java sql
JDBC: 어플리케이션과 DB연결
connection

  • JDBC 드라이버 로드
  • 데이터베이스 연결
  • SQL 실행 (CRUD: Create, Read, Update, Delete)
  • 결과 처리
  • 연결 해제 (자원 정리)

2.  JDBC API


1. JDBC program
 
JAVA에서 SQL을 실행하고, DB와 통신할 수 있도록 해주는 API
 

  • db2()

mysql 직접 하지 않고, 한 줄씀으로써 데이터 베이스에 접속하기

  • preparedStatement

쿼리 작성 시 뒤에서 웹시쿼리 하겠지만 로그인 해주는 코드

  • id와 password로 짠 코드

connection이 연결된다면
select * from members
where id = “+id+”and password = “+pw”

  • 아이디

아이디에는 특수기호 사용 불가


2. reflection
 

  • 동적 객체 생성 및 조작
    • 클래스 이름만 알고 있어도 인스턴스를 생성할 수 있음.
  • 런타임에 메서드 실행
    • 객체의 타입을 몰라도 특정 메서드를 실행할 수 있음.
  • 프레임워크 개발
    • Spring과 같은 프레임워크에서 DI(Dependency Injection), AOP(Aspect-Oriented Programming)에 활용됨.
  • 어노테이션 기반 프로그래밍
    • Reflection을 사용하면 클래스에 선언된 어노테이션을 읽어 동적으로 설정을 변경할 수 있음.

3. Compiler
 
컴파일러를 사용하는 주요 이유 6가지

  1. 실행 속도 향상: 컴파일된 프로그램은 인터프리터 방식보다 빠르게 실행됩니다13. 컴파일러는 소스코드를 한 번에 기계어로 변환하므로, 실행 시 별도의 해석 과정이 필요 없습니다.
  2. 코드 최적화: 컴파일 과정에서 코드를 분석하고 최적화하여 더 효율적인 실행 파일을 생성합니다2.
  3. 오류 검출: 컴파일 단계에서 문법적 오류를 미리 발견할 수 있어 안정적인 프로그램 개발이 가능합니다23.
  4. 실행 파일 생성: 컴파일러는 독립적으로 실행 가능한 파일을 생성하므로, 소스코드 없이도 프로그램을 실행할 수 있습니다2.
  5. 보안: 컴파일된 코드는 원본 소스코드를 숨길 수 있어 지적 재산권 보호에 유리합니다.
  6. 플랫폼 최적화: 특정 하드웨어나 운영 체제에 최적화된 코드를 생성할 수 있습니다3.

이러한 이유로 컴파일러는 대규모 프로젝트나 성능이 중요한 애플리케이션 개발에 주로 사용됩니다.

  • com.uplus.eureka

→ 기관정보.회사.project

  • DBCP
  • DateBase Connection Pool