데이터 무결성이란 ? 데이터가 손상되거나 원래의 의미를 잃지 않고 유지되는 상태 제약조건 테이블에 잘못된 데이터를 입력하는 것을 막기 위해 일정한 규칙을 지정해주는 것 무결성 제약조건 NOT NULL : 해당 컬럼에 NULL 입력 불가 컬럼 레벨에서만 적용 가능 UNIQUE : 해당 컬럼 또는 컬럼 값의 조합이 유일하도록 NULL 값은 중복 가능 PRIMARY KEY : 각 행을 유일하게 식별할 수 있도록 NOT NULL + UNIQUE CHECK : 해당 컬럼의 특정 조건을 항상 만족시키도록 제약조건에 이름 지정해주기 이름을 따로 지정하지 않으면 자동 생성됩니다. CREATE TABLE TEST01 ( AA NUMBER PRIMARY KEY, BB VARCHAR2(10) CONSTRAINT JOB_NA..
시퀀스 ( SEQUENCE ) 란 ? 지정된 값만큼 증가하거나 감소시키는 자동 번호 발생기 UNIQUE한 값을 생성해줍니다. 주로 PRIMARY KEY의 값을 생성해주기 위해 사용합니다. 테이블과 독립적이기 때문에 하나의 시퀀스를 여러 테이블에서 사용할 수 있습니다. 생성 CREATE SEQUENCE TEST_SEQ START WITH 1-- 시작 값 : 맨 처음 실행할 때 딱 한 번만 적용된다. (수정 불가) INCREMENT BY 1-- 정수값만큼 증감 MAXVALUE 9999-- 최대값 MINVALUE 1-- 최소값 NOCYCLE-- 반복 여부 NOCACHE;-- 캐시 생성 여부 검색 SELECT * FROM USER_SEQUENCES; 적용 : 시퀀스명.NEXTVAL -- 시퀀스값 넣기(NEXTV..
SQL ( Structured Query Language ) 이란 ? 구조적인 질의 언어 데이터베이스를 정의, 조작, 제어하기 위해 사용하는 데이터베이스 언어 DDL ( Data Definition Language ) : 데이터 정의어 테이블, 뷰, 프로시저 등을 정의/수정/삭제하는 데 사용하는 명령어 트랜잭션이 적용되지 않으므로 COMMIT할 필요가 없고, ROLLBACK 할 수 없습니다. CREATE : 정의 CREATE TABLE 테이블이름 ( 컬럼 TYPE(SIZE) 제약조건, ... CONSTRAINT 제약조건명 제약조건(컬럼) ... ); ALTER : 수정 추가 -- 컬럼 추가 ALTER TABLE 테이블명 ADD(컬럼 TYPE(SIZE), 컬럼 TYPE(SIZE), ...); -- 제약조건..
데이터베이스 란 ? 한 조직 내에서 필요로 하는 데이터를 공동으로 사용할 수 있도록 유의미한(관련있는) 데이터들을 저장한 저장소 특징 실시간 접근성 : 다수의 사용자의 요구에 대해 실시간으로 처리/응답함 지속적인 변화 : 저장된 데이터는 최신 정보가 정확하게 저장되어 처리됨 동시 공유 : 동일한 데이터를 동시에 서로 다른 목적으로 사용할 수 있어야 함 내용에 의한 참조 : 주소/위치에 따라 참조되는 것이 아니라, 가지고 있는 값에 따라 참조해야 함 Entity (엔티티) 현실세계에 있는 객체들을 DB로 가져온 것 이걸로 테이블을 만듭니다. Attribute (열, Column) 세로 방향 데이터들의 속성들 Tuple (행, Row, Record) 가로 방향 각 한 줄에 들어가는 데이터들 슈퍼키 유일성을 ..
제네릭 ( Generic ) 이란 ? 다양한 타입의 객체들을 다루는 클래스, 메소드의 타입을 미리 명시하는 것 의도치 않은 타입의 객체가 저장되는 것을 막음으로써 에러 발생확률을 낮추기 위해 사용합니다. 객체 타입을 컴파일 시에 체크하기 때문에 안정성을 높이고, 형변환의 번거로움을 줄입니다. 예제 1 package com.generic; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MTest { public static void main(String[] args) { List list = new ArrayList(); list.add(5); //list.add("1");// 컴파일 ..
컬렉션 ( Collection ) 이란 ? 목록성 데이터를 처리하는 자료구조들의 집합 배열은 처음 만들 때 크기가 고정되지만, 컬렉션은 크기가 가변입니다! 또한, 배열은 객체를 삭체하는 경우 해당 인덱스가 비게 되고, 저장할 때 비어있는 곳을 일일이 검색해야합니다. 따라서 컬렉션을 이용하면 객체들을 효율적으로 추가, 삭제, 검색할 수 있게됩니다. 컬렉션 인터페이스는 크게 Set, List, Queue로 분류됩니다. Map은 컬렉션 인터페이스를 상속받고 있지 않지만 컬렉션으로 분류됩니다. 1. List 객체를 일렬로 늘어놓은 구조 순서가 있고, 중복이 가능합니다. 객체를 저장하면 자동으로 인덱스를 부여하며, 객체를 인덱스로 관리합니다. 인덱스를 이용해 객체를 검색, 삭제, 수정합니다. ArrayList J..
추상 클래스 ( Abstract Class ) 란 ? 하나 이상의 추상메소드를 가진 미완성의 클래스 abstract 키워드를 사용합니다. 상속받을 때 extends 키워드를 사용합니다. 추상 메소드란 ? body { } 가 없고, 선언만 되어있는 미완성의 메소드 // 추상클래스 Animal public abstract class Animal { // 추상메소드 bark() public abstract void bark(); public void eat(String feed) { System.out.println(feed + " 먹는다."); } } 이 추상클래스를 상속받는 자식클래스에서 해당 추상메소드를 오버라이딩하여 무조건 구현해야 합니다. // 자식클래스 Cat public class Cat exte..
상속 ( Inheritance ) 이란 ? 부모클래스를 재사용하여 새로운 자식클래스를 작성하는 것 부모클래스의 field와 method를 내려받고, 자식클래스들의 중복되는 member들은 부모클래스에서 작성/관리함으로써 중복을 줄일 수 있습니다. 메소드 오버라이딩 ( 메소드 재정의 ) 부모클래스에서 상속받은 메소드를 자식클래스에서 확장하거나 변형하는 것 이름 동일, 리턴타입 동일, 파라미터 동일 @Override 애노테이션을 사용하여 재정의한다는 것을 표시해줍니다. 코드로 이해하기 부모클래스 Car.java public class Car { private String color; private int speed; public Car() { } public Car(String color) { this.co..
생성자 ( Constructor ) 란 ? 객체를 생성하고, field를 초기화하기 위한 메소드 클래스명과 이름이 동일하고, 리턴타입이 없습니다. class Test { public Test() {}// 생성자입니다. } new 연산자와 함께 사용됩니다. Test t = new Test(); 기본 생성자는 생략하면 자동으로 생성됩니다. 매개변수를 갖는 생성자를 정의하면 기본 생성자는 더 이상 자동으로 만들어지지 않습니다. public class AA { // new AA(); } public class BB { public BB() {}// new BB(); } public class CC { public CC(int cc) {}// new CC(); (X) // new CC(10); (O) } 생성자는..
클래스 ( Class ) 객체의 설계도, 설명서 Member field : 클래스에 소속된 변수와 상수 ( 해당 클래스의 속성 ) method : field들에 대한 기능, 명령문들의 집합 Constructor ( 생성자 ) 객체를 생성하고, field를 초기화하는 역할 객체 ( Object ) class 타입으로 선언된 것 인스턴스 ( Instance ) class를 바탕으로 메모리에 적재된 실제 구현체 // AAA 클래스 public class AAA { ... } // main 메소드가 존재하는 Test 클래스 public class Test { public static void main(String[] args) { AAA a;// 객체 a = new AAA();// 인스턴스화 : 객체를 메모리에..