cs 전공지식 #08 데이터베이스 - 필드, 레코드
2022/11/18
- 학습내용
1. 필드(Field)
필드는 SQL에서 열 또는 속성이라고 불린다.
밑에 사진을 보면 필드는 테이블에서 각 열을 의미한다.
각 필드가 가진 레코드이 수는 모두 같다.
※JAVA에서 필드
java에서 필드(field)란 클래스를 구성하는 요소 중 하나로 클래스 내부 멤버이다.
어떠한 데이터를 저장하기 위한 역할을 담당하며 클래스 내부의 생성자와 메소드 밖에 정의가 된다.
필드는 클래스에서 내부 멤버이기 때문에 멤버변수(member variable)라고도 불리며, 클래스 내 전역에서 사용하기 때문에 전역 변수라고도 불리며 데이터를 저장하기 위한 역할을 담당하며 생성자와 메소드 밖에서 사용한다.
즉 필드란 클래스 안에서 독립적으로 선언되는 변수를 뜻한다.
Colum 하나하나를 필드라고 한다.
필드 기능
필드의 삽입, 삭제, 수정은 모두 ALTER문으로 이뤄진다.
※MYSQL을 기준 필드 작성
<필드 삽입>
-필드 삽입 옵션
1.디폴트값을 설정할 수 있다.
옵션 자리에 'DEFAULT 0'을 넣어주면 삽입될 필드의 디폴트 값은 0으로 설정된다.
2. NULL의 여부를 설정할 수 있다.
옵션 자리에 'NOT NULL DEFAULT 0'을 넣어주면 삽입될 필드은 NULL 값을 허용하지 않고, 디폴트값은 0으로 설정된다
.
3. 삽입될 필드의 위치를 설정할 수 있다.
옵션 자리에 'NOT NULL DEFAULT 0 AFTER [기존 테이블에 있던 필드명]'을 넣어주면 삽입될 필드은 NULL 값을 허용하지않고, 디폴트값은 0으로 설정되며 기존 테이블에 있던 필드명 뒤의 위치로 삽입된다.
'NOT NULL DEFAULT 0 FIRST'를 넣어주게 되면, 삽입되는 필드의 위치는 기존 테이블의 맨 앞이 된다.
또한 삽입한 필드의 길이 제한은 삽입할 필드 타입명 옆에 '(길이)'로 설정할 수 있다.
ex) 'INT(10)'로 설정하면 삽입한 필드는 int형에 길이는 10으로 제한된다는 의미이다.
> ALTER TABLE [테이블명] ADD [삽입할 필드명][삽입할 필드 타입][옵션];
<필드 삭제>
필드를 삭제하는 ALTER문에선 DROP문을 이용하여 특정 필드를 지정해줘야한다.
필드를 삭제할 경우 해당 필드 안에 들어있는 데이터값들 또한 모두 삭제되기 때문에 주의해서 사용해야한다.
또한 삭제 기능은 데이터베이스를 따로 백업해두지않은 이상 복원할 수 없기 때문에 사용시 신중해야한다.
> ALTER TABLE [테이블명] DROP [삭제할 필드명];
<필드 디폴트값 삭제>
> ALTER TABLE [테이블명] ALTER [필드명] DROP DEFAULT;
<필드명 수정>
필드명을 수정하는 ALTER문은 기존 테이블에 존재하는 필드의 이름을 바꿀 수 있다.
필드명을 변경하면서 타입 또한 변경이 가능하다. 타입 변경시 타입명 옆에 '(길이)'로 필드의 길이를 제한할 수 있다.
ex) 'INT(10)'로 설정하면 변경한 필드는 int형에 길이는 10으로 제한된다는 의미이다.
> ALTER TABLE [테이블명] CHANGE [변경할 필드명][새로운 필드명][타입];
<필드 순서 수정>
> ALTER TABLE [테이블명] MODIFY (COLUMN) [순서 변경할 필드명] [타입] AFTER [순서 변경할 필드 앞에 오는 필드명];
> ALTER TABLE [테이블명] MODIFY (COLUMN) [순서 변경할 필드명] [타입] FIRST;
<필드 디폴트값 수정>
> ALTER TABLE [테이블명] ALTER (COLUMN) [디폴트값을 수정할 필드명] SET DEFAULT [디폴트값];
<필드 타입 수정>
> ALTER TABLE [테이블명] MODIFY [타입을 변경할 필드명][변경할 타입];
2. 레코드(Record)
레코드(record)란 데이터베이스에서 하나의 단위로 취급되는 자료의 집합을 말한다.
하나의 레코드는 DB table에서 가로 방향으로 한 줄로 나타낸다.
줄, 행(行, row) 또는 튜플(tuple)이라고도 한다.
데이터베이스에서 한 건의 자료를 구성하는 레코드를 엔티티(entity)라고 한다.
각각의 레코드를 다른 레코드와 구별하기 위해 키(key) 값을 사용한다.
레코드의 반대말은 필드(Field)이다.
레코드(record)는 SQL에서 행(row) 또는 튜플(tuple)이라고 불린다.
레코드 기능
<레코드 삽입> -INSERT
INSERT문에서 중요한 부분은 컬럼명의 개수와 데이터값의 개수가 일치해한다.
또한 각 컬럼에 지정된 데이터 타입과 데이터값의 타입이 일치해야하며, 컬럼의 순서와 삽입할 데이터값의 순서도 일치해야한다.
만약 특정 컬럼의 데이터값을 NULL 혹은 비워두고싶다면, 데이터값을 NULL로 지정해주거나 INSERT문에서 특정컬럼명을 제외하고 작성해주면 된다.
> INSERT INTO [테이블명] (컬럼명1, 컬럼명2 ...)
VALUES (삽입할 데이터값1, 삽입할 데이터값2...);
<레코드 삭제> -DELETE
레코드를 삭제하는 DELETE문에선 WHRER문을 이용하여 특정 레코드를 지정해줘야한다.
조건을 지정하지않으면 해당 테이블에 있는 모든 레코드가 삭제되기 때문에 주의해서 사용해야한다.
또한 삭제 기능은 데이터베이스를 따로 백업해두지않은 이상 복원할 수 없기 때문에 사용시 신중해야한다.
> DELETE FROM [테이블명] WHERE [조건];
<레코드 수정> -UPDATE
레코드를 수정하는 UPDATE문은 단일 레코드만 변경할 시 WHERE문을 이용하여 특정 레코드를 지정하여 사용하면 되고, 전체 수정시엔 WHERE문을 사용하지않고 변경할 컬럼과 데이터값만 지정하여 사용하면 된다.
수정 기능 또한 삭제 기능과 같이 변경시 복원할 수 없기 때문에 사용시 신중해야한다
> UPDATE [테이블명] SET [컬럼명] = [변경할 데이터값1], ... WHERE [조건];
<레코드 조회> -SELECT
레코드를 조회하는 SELECT문은 여러 조건들을 이용하여 원하는 내용만 조회할 수 있다.
해당 테이블의 전체 내용을 조회할 땐, 컬럼명을 '*'으로 지정해주면 된다. DISTINCT는 중복되는 내용을 제거하고 출력해주는 조건이다.
GROUP BV는 컬럼들을 그룹으로 묶으서 사용하는 조건으로 컬럼별 개수를 파악할 수 있고, HAVING은 GROUP BY 사용시 조건을 지정할 수 있다.
ORDER BY는 지정된 컬럼을 기준으로 레코드를 정렬하는 조건으로써 ASC는 오름차순으로, DESC는 내림차순으로 정렬해준다.
> SELECT [DISTINCT] [컬럼명1,...]
FROM [테이블명1,...]
WHERE [조건]
GROUP BY [컬럼명1,...]
HAVING [조건]
ORDER BY [컬럼명1] ASC/DESC, [컬럼명2] ASC/DESC;