1주차 (등장배경, 핵심 용어, MySQL서버 접속, 실습)
초기DB
특징 : 파일단위 저장, LAN으로 서버파일 접근,
단점 : 각 응용프로그램을 독립적으로 처리(중복 저장), 데이터를 별도의 파일로 관리(종속성), 동시에 조작(일관성 훼손)
↓
DBMS (데이터 소유 - 서버, 데이터 요청 - 클라이언트)
단점 보완 : 데이터 표준화, 무결성 유지(중복성 해결), 서버가 파일 처리(일관성, 유지, 복구, 접근제어 - 종속성 해결)
구분 | 파일 시스템 | DBMS |
데이터 중복 | 데이터를 파일 단위로 저장하므로 중복 가능 | DBMS를 이용하여 데이터를 공유하기 때문에 중복 가능성 낮음 |
데이터 일관성 | 데이터의 중복 저장으로 일관성이 결여됨 |
중복 제거로 데이터의 일관성이 유지됨 |
데이터 독립성 | 데이터 정의와 프로그램의 독립성 유지 불가능 |
데이터 정의와 프로그램의 독립성 유지 가능 |
관리 기능 | 보통 | 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 등을 수행 |
프로그램 개발 생산성 | 나쁨 | 짧은 시간에 큰 프로그램을 개발할 수 있음 |
기타 장점 | 별도의 소프트웨어 설치가 필요 없음 (운영체제가지원) | 데이터 무결성 유지, 데이터 표준 준수 용이 |
데이터베이스 용어
용어 | 특징 |
RDB (관계형 데이터베이스) | 여러 개의 테이블이 특정 관계로 이루어져 있는 구조를 가진 데이터 베이스 |
Entity (엔티티) | 독립적으로 존재하며 고유하게 식별이 가능한 실세계의 개체(사람, 장소, 사물..) |
Entity Set (엔티티 집합) | 동일한 속성의 엔티티 집합. 교집합으로 표현될 수도 있다. |
스키마 |
|
외부 스키마(사용자 관점) | 하나의 DB에 여러 개의 외부 스키마 존재 |
개념 스키마(조직 관점) | 개체간의 관계 및 제약 조건, 접근 권한, 보안 등을 정의 (하나의 DB에 하나의 개념 스키마) |
내부 스키마(저장 장치 관점) | 레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의 |
표 (Table용어) |
|
Relation | 관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위 |
Attribute | TABLE의 열 (FIELD, COLUMN) |
Tuple | TABLE의 행 (RECORD, ROW) |
Domain | Attribute이 가질 수 있는 값의 집합 |
Degree | Attribute (열)의 개수 |
Cardinality | Tuple (행)의 개수 |
Attribute (속성) 그리고 Degree (차수) = 4 | |||||
스키마 Schema | 도서번호 | 도서이름 | 출판사 | 가격 | |
도메인 Domain | INT | CHAR(20) | CHAR(15) | INT | |
Tuple Cardinality = 3 |
각 Instance | 1 | 축구의 역사 | 굿스포츠 | 7000 |
2 | 축구 아는 여자 | 나무수 | 13000 | ||
3 | 축구의 이해 | 대한미디어 | 20000 |
테이블 만들기
int | 주 정수 데이터 (-2^31 ~ 2^31) |
bigint | int의 범위를 초과하는 데이터 (-2^63 ~ 2^63) |
float(n) | 부동 소수점 숫자 데이터: n-자리의 소수점 표시 (0 < n < 53) |
char(n) | 고정 크기 문자열 데이터: n 바이트의 문자열 (1 < n < 8000) |
varchar(n) | 가변 크기 문자열 데이터: n-바이트 이하의 문자열(1 < n < 8000 or n < 2^31 ) 이 경우 varchar(max) |
datetime | 소수 자릿수 초가 있는 24시간제 기준의 시간과 결합된 날짜를 정의 |
BIT, BINARY, BLOB, BOOL |
테이블 문법 | |||
INSERT INTO | 데이터를 입력하는 구문 | UPDATE | 데이터를 수정하는 구문 |
SELECT | 데이터를 읽어오는 구문 | WHERE | 데이터 필터하는 조건절 |
DELETE | 데이터를 삭제하는 구문 | SET | 수정할 컬럼을 지정,어떤 값을 할당할지 정의 |
2주차 (테이블 스키마, INDEX & KEY)
테이블 생성 예제
/*테이블 만들기*/
CREATE TABLE account(nickname VARCHAR(30) NOT NULL PRIMARY KEY,
address VARCHAR(100),
manner_point INT,
reg_date DATETIME); /*칼럼명 자료형 속성*/
/*----------------------------------------------------------*/
/*데이터 삽입*/
INSERT INTO account (nickname, address, manner_point, reg_date)
VALUES ('김영진','서울',100,'2023-03-04 10:10:10');
NULL != ' ', 0 (다른 개념임)
WHERE, UPDATE
where에서 사용하는 조건 | |
<> | != | ^ | 모두 ≠을 나타내는 기호 |
BETWEEN A AND B | A와 B의 사이 값 불러오기 |
LIKE | 특정 문자열이 들어간 값 불러오기 |
IN | 2개 이상의 조건 중 하나라도 만족하는 값 불러오기 |
AND | 모든 조건을 만족하는 값 불러오기 |
OR | 하나의 값이라도 만족하는 값 불러오기 |
IS NULL/ IS NOT NULL |
컬럼 값이 NULL인 값 불러오기 / NULL이 아닌 값 불러오기 |
NOT | 조건이 아닌 것 |
SELECT product FROM market
WHERE reg-date BETWEEN '2023-03-01 00:00:00' AND '2023-03-31 23:59:59'
AND ((price BETWEEN 1000 AND 100000 AND product LIKE '_')OR price >= 200000);
UPDATE market SET (amount = amount - 2)
WHERE reg_date BETWEEN '2023-02-02 00:00:00' AND '2023-02-28 23:59:59' AND amount <10;
테이블 스키마 바꾸기(ALTER TABLE)
/*새 column 추가*/
ALTER TABLE table_name
ADD column_name datatype;
/*삭제*/
DROP column_name;
/*이름 변경*/
RENAME column_name to new_name;
/*데이터타입 변경*/
MODIFY COLUMN column_name new_datatype;
정보처리문제(객관식)
데이터 베이스의 생성 및 변경, 제거
SELECT UPDATE INSERT DELETE 등
데이터베이스 안의 값들을 변경, 수정, 입력.
CREATE DROP ALTER 등
데이터베이스에 접근하거나 객체에 권한을 주는 역할, 접속 권한 등을 수정.
GRANT REVOKE 등
무결성 제약조건 (개체 - 기본키P, 참조 - 외래키F, 도메인 - D)
동일해야 한다.
DISTINCT : 중복된 값은 한 번만 출력
SELECT DISTINT DEPT FROM STUDENT; // 해당 학과가 몇 종류 있는지 출력
DEPT = 학과명
슈퍼키 : 투플을 유일하게 식별할 수 있는 하나의 속성(유일성) 혹은 속성의 집합
후보키 : 투플을 유일하게 식별할 수 있는 속성의 최소 집합(최소성)
복합키 : 2개 이상의 속성으로 이루어진 키
기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키
외래키 : 다른 릴레이션의 기본키를 참조하는 속성을 말함
대체키 : 기본키로 선정되지 않은 후보키
대리키 : 마땅한 기본키가 없을 때는 일련번호 같은 가상의 속성
기본키의 조건
- 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 함.
- NULL 값은 허용하지 않음.
- 키 값의 변동이 일어나지 않아야 함.
- 최대한 적은 수의 속성을 가진 것이라야 함.
- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함.
테이블 용어
Relation = Table 정보를 구분하여 저장하는 기본 단위
Attribute(속성, 열) = Field, Column . ------ Degree : Attribute열의 개수 -- Domain : Attribute가 가질 수 있는 값의 집합
모든 속성값은 원자 값을 가짐(중복X, 모두 다른 값을 가져야 한다.)
Tuple(행) = Record, Row ------- Cardinality : Tuple행의 개수
스키마(DB데이터 구조, 제약조건 정의)
외부 스키마( 사용자 )
개념 스키마 (조직 전체 관점)
RDB :
여러 개의 테이블이 특정 관계로 이루어져 있는 구조를 가진 데이터 베이스
Entity :
사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 개체
Entity set :
동일한 속성을 가진 엔티티들의 집합. 엔티티 집합에 속한 요소들이 여러 엔티티 집합에 속할 수도 있다
인덱스 추가 삭제 명령어
LIKE '%신%'
-->신이라는 글자가 포함된 모든 데이터, %앞 뒤 문자 상관 없이
DROP : 테이블 지우는 명령어
GROUP BY -- HAVING
ORDER BY : 정렬
UPDATE -- SET
IS NOT NULL
INDEX는 유저가 직접 생성
VIEW - 삽입, 갱신, 삭제에 제약 (보안적인 측면이 강함)
CREATE, REPLACE (테이블 수정이란 문법 다름)
CASCADE 연쇄(연결된 모든 것을 연달아 처리)
CHECK제약 조건의 정의 - 과제?
BETWEEN A AND B -- A와 B모두 포함
주관식 코드
테이블 만들기
CREATE TABLE account(nickname VARCHAR(30) NOT NULL PRIMARY KEY,
manner_point INT,
reg_date DATETIME);
address VARCHAR(100),
테이블 데이터 삽입
INSERT INTO table_name(column1, column2, column3, …)
VALUES (value1, value2, value3, …);
-- 입력하는 값과 열의 개수와 일치하면 column1…은 생략해도 된다
INSERT INTO table_name
VALUES (value1, value2, value3, …);
SELECT column1, column2, …
FROM table_name
WHERE condition;(범위 제한, 없으면 모든 값)
-- 모든 열을 불러오고 싶으면
SELECT * FROM table_name;
UPDATE table_name
SET column1 = value1, column2 = value2, …
WHERE condition;
-- 조건절 없으면 모든 값 변환
DELETE FROM table_name WHERE condition;
-- 조건 없으면 전부 삭제
select문
SELECT seller from market WHERE reg_date < '2023-01-01 00:00:00' AND price >= 10000;
'computing' 카테고리의 다른 글
20250417_java7 (0) | 2025.04.17 |
---|---|
20250410_java6 (1) | 2025.04.10 |
20250407DB_부속질의 (0) | 2025.04.07 |
20250403_java5 (0) | 2025.04.03 |
java중간고사 정리 (0) | 2025.04.03 |