티스토리 뷰
■DB(Database)
데이터가 모여 있는 기지.
추상적인 용어.
■DBMS(Database Management System)
DB를 관리할 수 있는 구체적인 시스템
오라클, 마리아DB, MySQL, MS-SQL, MongoDB, ...
오라클 : 대기업, 대규모 프로젝트, 비쌈, AS 엄청남, 괴물단체
MySQL : 무료, 첫째딸
마리아DB : 둘째딸, MySQL과 명령어 똑같음.
MS-SQL : 오래된 프로젝트
MongoDB : single page application(spa) 채팅, SNS 많이 쓰임. 1등, 스키마가 없음(NO-SQL). 텍스트로 데이터 교환
회사가 커져서 스키마를 만듦 >> 몽구스
■오라클 DBMS 버전
i : internet
g : grid(실무에서 80%)
c : cloud(20%, 대기업, 강소기업)
■cloud, blockchain
cloud : 하나의 서버에서 여러 개 분리 가능, 협업할 때 내가 수행한 명령어가 다른 곳에 반영됨.
MSA : micro system architect, 실리콘밸리에서 개발, 하나의 서비스를 하나의 프로젝트
프로젝트 1개당 서버1개
pc 1대당 서버1개
프로젝트 이후에 서버배포까지 할 예정, 리눅스 기본 개념이 있어야 함. 아니면 복붙.
■오라클 DBMS 설치 - 11G
압축 해제 > DISK1/setup.exe 실행 > Next > I Agree.. 체크 > Next > Next > 비밀번호 1234
> Next > 정보 확인 후 Intall > Finsh
-----------------------------------------------------
■계정
sys : 모든 권한을 가지고 있는 최상위 계정(admin), 비밀번호 찾을 때만 씀
system : 일반 계정들을 관리하는 계정
일반 계정 : 스키마를 관리하는 계정(hr, scott, ...(default 계정))
■스키마
정리가 잘 되어 있는 표들의 묶음 혹은 상태
dba -> db만 관리하는 사람, system 사용
■일반 계정 접속(hr)
cmd 접속 > squlplus system/1234 > 비밀번호 : 1234
SQL > show user
USER is "SYSTEM"
SQL > alter user hr account unlock; //계정 lock를 푸는 명령어
SQL > alter user hr identified by hr; //(hr자리에는 변경할 비밀번호 작성)
SQL > conn hr/hr
SUQ > show user
USER is "HR"
---------------------------------------------------------
■통합개발환경
IDE 설치 - DBeaver
https://dbeaver.io/download/
windows 64bit(zip) - 무설치 버전 설치
압축 해제 후 DBeaver.exe 실행
Sample Database는 만들지 않는다.
■New Connection
host(서버의 IP주소) : localhost
Database : XE
username : hr
password : hr
■Edit Driver Settings
Libraries 탭 클릭
> 기존에 있는 라이브러리 전체 삭제
> Add File
> C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar 추가
> 확인
Test Connection 클릭 > Connected 성공
-----------------------------------------------------------------
■DBMS의 소통방식
사용자 | |||
↕ | (사용자 작업) | ↕ | |
고객관리 응용 프로그램 | 주문관리 응용 프로그램 | ||
↕ | (개발자 작업) | ↕ | |
DBMS |
================================================================
■RDBMS(관계형 데이터베이스 시스템)
테이블끼리 서로 관계를 맺는다.
■오라클은 무조건 대문자로 쓴다, 언더바 표기법
Table A(User) | Table B(Order) | ||||||
번호(PK) | 이름 | 나이 | 아이디(UK) | 주문번호(PK) | 번호(FK) | 날짜 | 상품수량 |
1 | 이영지 | 25 | leeyj | 08230101 | 3 | 2022-08-23 | 2 |
2 | 이은지 | 30 | leeji | 08130055 | 2 | 2022-08-13 | 1 |
3 | 안유진 | 21 | anyou | 07281103 | 2 | 2022-07-28 | 3 |
이러한 구조를 가지는 것을 Table, Relation(오라클), Class라고 부른다.
■COLUMN(열, 속성, 필드)
공통된 값들의 주제, 집합.
■ROW(행, 레코드, 튜플)
하나의 정보
(제약조건)
■PRIMARY KEY(PK)
고유한 값.
각 행의 구분점으로 사용된다.
중복이 없고 NULL값도 허용하지 않는다.
■FOREIGN KEY(FK), 외래키
다른 테이블의 PK를 외래키라고 함.
보통 테이블끼리 관계를 맺을 때 사용한다.
중복이 가능하다. NULL도 가능하다.
■UNIQUE KEY(UK)
NULL은 허용하지만 중복을 허용하지 않는다.
■조합키(복합키)
하나의 테이블에서 2개 이상 컬럼에 PK를 줄 수 있다.
각 컬럼의 데이터는 중복이 허용되지만, 조합 시 중복은 허용하지 않는다.
NULL도 허용되지 않는다.
1 A
1 B
2 A
2 B
3 C
-------------------------------------------------------
■컴파일 언어(자바) VS 스크립트 언어(DBMS의 SQL문)
- 컴파일 언어(일괄처리) 파일단위로
웹은 컴파일 언어가 효율적
JAVA, C
파일 단위로 해석한다(일괄처리).
빈번한 수정 시 비효율적이다(수정이 거의 없을 때 효율적이다).
- 스크립트 언어(개별처리) 한줄,라인단위로
빅데이터, AI는 스크립트 언어가 효율적
HTML, CSS, JS, SQL
한 줄 단위로 해석한다(개별처리).
빈번한 수정 시 효율적이다.
SQL문(쿼리문) - DDL, DML, DCL, TCL
"날려봐~ 안날라가네~"
▶DDL(Data Definition Language) 데이터를 정의하는 언어
테이블을 조작, 제어 관련 쿼리문
1.CREATE : 테이블 생성
CREATE TABLE [테이블명]([컬럼명][자료형(용량] [제약조건],...); // []는 쓰지 않고 ()는 써야 함.
2.DROP : 테이블 삭제
DROP TABLE [테이블명];
3.ALTER : 테이블 수정
ALTER TABLE [테이블명];
- 테이블명 수정
RENAME TO [새로운 테이블명];
- 컬럼 추가
ADD([새로운 컬럼명][자료형(용량)];
- 컬럼명 변경
RENAME COLUMN [기존 컬럼명] TO [새로운 컬럼명];
- 컬럼 삭제
DROP COLUMN [컬럼명];
- 컬럼 수정
MODIFY([기존 컬럼명][자료형(용량));
4.TRUNCATE : 테이블 내용 전체 삭제
TRUNCATE TABLE [테이블명];
■자료형(TYPE) : 용량은 항상 넉넉하게 주도록 한다.
숫자
NUMBER(자릿수) : 정수, 소수점 자릿수는 0으로 설정된다.
NUMBER(자릿수, 소수점 자릿수) : 실수
문자열
CHAR(용량) : 고정형 EX.주민번호, FALG상태(0,1,-1)
CHAR(4)에 'A'를 넣으면 A^^^ 빈 자리가 공백으로 채워진다.
: 형식을 정한 날짜, 주민등록번호, 사업자 등록번호처럼 글자 수가 절대 변하지 않는 값을 넣는다.
VARCHAR(용량), VARCHAR2(용량) : 가변형
값의 길이만큼 공간이 배정된다. 글자 수에 변화가 있는 값을 넣는다.
VARCHAR2만 쓰면 된다. VARCHAR는 연구중이다.
날짜
DATE : FORMAT에 맞춰서 날짜를 저장하는 타입
------------------------------------------------------------
자바와 단축키는 동일함.
-- 한줄 주석 >> 쓰지 말자.
/*범위 주석*/ >> 사용하기
엔티티 관계도 ERD
'2022 > dbms' 카테고리의 다른 글
day05[MySQL] (0) | 2022.08.30 |
---|---|
day04[DCL,VIEW,JDBC] (0) | 2022.08.27 |
day03[TCL,정규화,NULL,SUB_QUERY,JOIN] (0) | 2022.08.27 |
day02[무결성,모델링,DML] (1) | 2022.08.27 |
DBeaver 22.1.5 단축키 (0) | 2022.08.25 |