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. 데이타 무결성
데이타의 정확성, 일관성, 유효성이 유지되는 것을 말한다.
- 개체 무결성 (Entity integrity) (기본 키 Primary key)
- 모든 테이블이 기본 키 (primary key)로 선택된 필드 (column)를 가져야 한다. 기본 키로 선택된 필드는 고유한 값을 가져야 하며, 빈 값은 허용하지 않는다.
- 참조 무결성 (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가지
- 실행 속도 향상: 컴파일된 프로그램은 인터프리터 방식보다 빠르게 실행됩니다13. 컴파일러는 소스코드를 한 번에 기계어로 변환하므로, 실행 시 별도의 해석 과정이 필요 없습니다.
- 코드 최적화: 컴파일 과정에서 코드를 분석하고 최적화하여 더 효율적인 실행 파일을 생성합니다2.
- 오류 검출: 컴파일 단계에서 문법적 오류를 미리 발견할 수 있어 안정적인 프로그램 개발이 가능합니다23.
- 실행 파일 생성: 컴파일러는 독립적으로 실행 가능한 파일을 생성하므로, 소스코드 없이도 프로그램을 실행할 수 있습니다2.
- 보안: 컴파일된 코드는 원본 소스코드를 숨길 수 있어 지적 재산권 보호에 유리합니다.
- 플랫폼 최적화: 특정 하드웨어나 운영 체제에 최적화된 코드를 생성할 수 있습니다3.
이러한 이유로 컴파일러는 대규모 프로젝트나 성능이 중요한 애플리케이션 개발에 주로 사용됩니다.
- com.uplus.eureka
→ 기관정보.회사.project
- DBCP
- DateBase Connection Pool