달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  



 

 

Database(DB; 데이터베이스)

https://codedragon.tistory.com/6837

 

 

 

 

데이터베이스 종류

https://codedragon.tistory.com/7404

 

 

 

 

 

 

파일시스템의 문제점

https://codedragon.tistory.com/4407

 

 

 

 

 

자료(data) vs 정보(information)

https://codedragon.tistory.com/4037

 

 

 

 

 

 

ER 다이어그램(ERD; E-R Diagram)

https://codedragon.tistory.com/6526

 

 

 

 

ER 다이어그램 작성 지침

https://codedragon.tistory.com/9512

 

 

 

 

 

DATA Query 예시1

table 만들어서 컬럼을 추가하고 data 검색 삭제후 table 삭제하는 일련의 과정에 대한 쿼리문 예시입니다.

단계

쿼리문

1

id, dept, address Column 있는 student table 제작

CREATE TABLE student;

2

name 컬럼 추가

ALTER TABLE student (ADD) name;

3

id 0001 Row 검색

SELECT name FROM student WHERE id='0001';

4

id 0001 Row 삭제

DELETE FROM student WHERE id='0001';

5

student table 삭제

DROP TABLE student;

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

2019. 10. 21. 00:30

MariaDB Development/Database



 

 


MariaDB

·         MySQL 동일한 소스 코드를 기반으로 합니다.

·         오라클 소유의 현재 불확실한 MySQL 라이선스 상태에 반발하여 만들어졌으며 GPL v2 라이선스를 따릅니다.

·         MySQL API 명령과 라이브러리 바이너리를 사용할 있어 MariaDB 교체하는 것도 가능성합니다.

 

 

https://en.wikipedia.org/wiki/MariaDB

https://ko.wikipedia.org/wiki/MariaDB

 

 

https://mariadb.org/


 


Posted by codedragon codedragon

댓글을 달아 주세요



 

일반적인 DBMS 선정 기준

DBMS(Data Base Management System) 선정하고 설치계획을 수립시 고려할 사항

http://codedragon.tistory.com/5376

 

 

 

 

 

 

 

DBMS 접속 예시 - Mysql Workbench

Mysql Workbench 접속 화면입니다.

MySql DBMS 선택하고, Mysql Workbench Connection 필요한 부분입니다.

 


 

항목

설명

Hostname

연결하고자 하는 Database Ip Address기술

Port

Mysql 경우에는 3306

Username

Database 등록된 User ID

 

https://codedragon.tistory.com/3014

https://codedragon.tistory.com/3017

 

 

 

 

 

 

 

보고서를 작성 예시

설치된 DBMS 대하여 아래에 제시된 내용의 보고서를 작성하시오

- -

1) DBMS IP ADDRESS

2) DBMS PORT 번호

3) DBMS 테이블스페이스 목록

4) 계정 정보(3 이상)

 

DBMS

DBMS IP ADDRESS

DBMS 서비스명

DBMS  PORT번호

테이블스페이스

구분

테이블스페이스

TBSP

계정명

계정 PWD

oracle

xxx.xxx.xxx.xxx

http

1521

system

system

sys

pwd1234

oracle

xxx.xxx.xxx.xxx

http

1521

system

sysaux

system

pwd1472

oracle

 

xxx.xxx.xxx.xxx

em

1158

default

test_tb

honggd

qwe1598

oracle

xxx.xxx.xxx.xxx

em

1158

temp

temp_testtb

hanadul

asd2479

 

 

 

 

 

 

QUERY 연습 1

사용자(honggildong) 계정에 대한 잠금/잠금해제에 관련된 DCL문을 작성

사용자 계정 잠금

ALTER USER honggildong ACCOUNT LOCK;

사용자 계정 잠금해제

ALTER USER honggildong ACCOUNT UNLOCK;

 

 

'test1234'라는 비밀번호를 부여한 사용자(honggildong) 계정 생성

CREATE USER "honggildong" IDENTIFIED BY "test1234";

 

 

 

생성한 "honggildong" 사용자에 대하여 connect role resource role 정의된 권한을 부여한다.

GRANT connect, resource TO "honggildong";

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

데이터베이스 사용자 계정

데이터베이스 사용자 계정 생성, 사용자 권한 설정, 데이터베이스 사용자 계정의 종류

 

·         테이블스페이스 생성은 테이블, 인덱스, 등의 객체를 저장할 있는 하나 이상의 물리적 데이터 파일로 구성되며, DDL 사용하여 생성한다.

·         데이터베이스의 모든 테이블, 인덱스, 등과 같은 객체의 사용자는 기본적으로 시스템에서 생성되며, 데이터베이스관리자는 추가적으로 사용자 계정을 DDL 통하여 생성할 있다.

·         특정 유형의 SQL문을 실행할 있는 권리나 다른 사용자의 객체를 사용할 있는 권리를 권한 (privilege)이라 하며, 이를 시스템 권한과 객체 권한이라고 한다.

·         데이터베이스의 사용자 계정 권한들을 시스템적으로 설정하기 앞서 데이터베이스관리자는 데이터베이스 객체에 대한 사용자 계정과 권한들에 대한 조사를 통해 명세서를 명확히 작성하여 이를기준으로 관리할 있도록 해야 한다.

http://codedragon.tistory.com/4292

http://codedragon.tistory.com/4328

http://codedragon.tistory.com/4377

 

 

 

 

 

QUERY 연습 1

1) 테이블스페이스의 용량을 확인하는 쿼리문을 작성하시오

SELECT * FROM dba_data_files;

또는

SELECT 테이블스페이스관련정보컬럼리스트.... FROM dba_data_files;

 

 

 

2) 테이블스페이스를 생성하는 쿼리문 작성하시오

CREATE TABLESPACE udata1

DATAFILE '/u02/app/oracle/oradata/orcl/udata1a.dbf'

SIZE 11256K

AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED

UNIFORM SIZE 1M ;

 

AUTOEXTEND 으로 테이블 스페이스 자동 설정(생성한 데이터파일이 채워졌을 경우 자동으로 데이터 파일을 확장하는 방법)

 

 

Extent

·         Extent Segment 할당된 연속적인 블록으로 Database Storage 할당의 논리적인 단위 입니다.

·         Segment Data 넣기 위해 적어도 하나 이상의 Extent 생성되어야 합니다.

 

UNIFORM

·         테이블스페이스가 동일한 크기의 익스텐트로 구성되도록 지정합니다. 크기는 기본적으로 바이트 단위로 지정

·         익스텐트 크기를 KB 또는 MB 단위로 지정하기 위해서는 K 또는 M 사용하여 지정 합니다

·         옵션을 사용하게 되면, DEFAULT Storage 절을 사용할 없습니다.

 

 

 

 

 

QUERY 연습 2

사용자 계정을 생성하여 권한을 부여하고 회수하는 쿼리문 예시입니다.

 

. 사용자 계정을 만들기.

( 테이블스페이스는 이미 만들어져 있다고 가정)

계정명

계정명: sampleuser

패스워드: sample12#$

default 테이블스페이스

디폴트 테이블스페이스명: test_tbs

temporary 테이블스페이스명: imsi_test_tbs

테이블스페이스 사용량

50MB

(System sysaux 테이블스페이스는 사용할 없다)

 

 

CREATE USER sampleuser IDENTIFIED BY "sample12#$"

DEFAULT TABLESPACE test_tbs

TEMPORARY TABLESPACE imsi_test_tbs

QUOTA 0 ON system

QUOTA 0 ON sysaux

QUOTA 50MB ON test_tbs;

 

 

 

. 사용자 권한 주기

.에서 생성한 사용자에 대하여 connect, resource, dba권한 부여

GRANT connect, resource, dba TO "sampleuser";

 

 

 

. 사용자 권한 회수

나항에 부여된 권한 dba권한 회수

REVOKE dba FROM sampleuser;

 

 

 

. 사용자 정보 보기

데이터 딕셔너리를 이용한 사용자 정보 보기 쿼리문 작성

 

SELECT * FROM all_users;

 

 

 

Posted by codedragon codedragon

댓글을 달아 주세요



 

데이터 딕셔너리(Data Dictionary; DD)

https://codedragon.tistory.com/4327

 

 

 

 

 

데이터 딕셔너리/뷰와 쿼리문

구분

쿼리문

특정 테이블의 구조 알아보기

DESC[RIBE] 테이블명;

현재 접속한 사용자가 소유한 모든 테이블의 정보를 조회할 있는

USER_TABLES

현재 사용자가 소유한 모든 테이블의 정보 접근 권한을 부여받은 계정의 객체를 조회할 있는

ALL_TABLES

현재 사용자가 접근할 있는 테이블의 컬럼 정보

ALL_COLUMNS

현재 사용자가 접근할 있는 테이블에 대한 제약조건 정보

ALL_CONS_COLUMNS;

현재 사용자가 접근할 있는 데이터베이스 내에 생성된 모든 테이블, , 동의어, 프로시저 등의 정보

ALL_OBJECTS

https://codedragon.tistory.com/4327

https://codedragon.tistory.com/5858

https://codedragon.tistory.com/4521

https://codedragon.tistory.com/4522

 

 

 

 

 

트랜잭션, 커밋, 롤백

트랜잭션이란 하나의 업무를 처리하기 위해 작은 단위 업무가 여러 존재할 , 단위 업무를 개별적으로 처리하지 않고 하나의 업무로 처리 하게끔 하는 것이다. 단위 업무를 처리하는 도중 오류가 발생했다면 롤백 (ROLLBACK) 명령어를 통해 시작 지점으로 돌아갈 있다. 만약 오류 없이 단위 업무가 정상적으로 종료 되었을 커밋 (COMMIT) 명령어를 통해 실행 결과를 데이터베이스에 반영할 있다.

https://codedragon.tistory.com/4247

https://codedragon.tistory.com/4513

https://codedragon.tistory.com/4514

 

 

 

 

QUERY 연습 1

아래 보기의 스키마를 반영하여 직원(emp) 테이블을 생성하는 SQL문을 작성하시오.

 

직원(emp) 테이블 스키마 

컬럼

조건

직원번호(emp_no)

NUMBER(8),

PK

직원이름(emp_name)

VARCHAR2(10),

NOT NULL

고용일(emp_hdate)

DATE,

시스템일자

부서장 직원번호(emp_mgr_no)

NUMBER(8),

FK,

emp_no

 

CREATE TABLE emp(

emp_no NUMBER(8) CONSTRAINT emp_pk PRIMARY KEY,

emp_name VARCHAR2(10) CONSTRAINT emp_name_nn NOT NULL,

emp_hdate DATE DEFAULT sysdate,

emp_mgr_no NUMBER(8) CONSTRAINT emp_mgr_fk REFERENCE emp(emp_no)

);

 

 

 

 

 

QUERY 연습 2

부서 평균 급여액이 8,000달러 이상인 부서만 조회하여

부서(deptno) 급여(salary) 총액, 평균 급여액을 구하는 SELECT 문을 작성하시오.

SELECT deptno,

SUM(salary)

ROUND(AVG(salary))

FROM emp

WHERE salary>=8000

GROUP BY deptno;

 

 

 

 

 

 

QUERY 연습 3

아래에 학생테이블(student) 있습니다.

2명의 학생정보를 입력(INSERT)하고, 등록금(fee_enter)에서 장학금(scholarship) 제외한 납부금액(total_fee) 계산하는 SQL문장 예시입니다.

 

BUNHO

NAME

E_NAME

TOWN

fee_enter

scholarship

total_fee

1

홍길동

Hong

순천

500

0

500

2

제갈공명

Je

서울

500

300

200

 

INSERT into student VALUES (1, '홍길동', 'Hong', '순천',500,0,0);

INSERT into student VALUES (1, '제갈공명', 'Je', '서울',500,300,0);

UPDATE student SET total_fee = ifnull(fee_enter, 0) - scholarship;

 

 

 

 

 

 

QUERY 연습 4

다음의 SQL 명령문을 순서대로 실행했을 데이터베이스에 영구적으로 반영되는 문장을 순서대로 완성하시오.

INSERT INTO emp(empno, ename) VALUES (999, 'Smith');

SAVEPOINT a;

DELETE emp WHERE empno = 202;

SAVEPOINT b;

UPDATE emp SET ename = 'Clark';

ROLLBACK TO SAVEPOINT a;

INSERT INTO emp(empno, ename) VALUES (8888, 'Tomas');

SAVEPOINT c;

DELETE emp WHERE empno = 100;

COMMIT;

 

영구적으로 반영되는 문장 (AUTO-COMMIT)

DELETE emp WHERE empno = 202;

UPDATE emp SET ename = 'Clark';

INSERT INTO emp(empno, ename) VALUES (8888, 'Tomas');

DELETE emp WHERE empno = 100;

 

 

 

 

 

QUERY 연습 5

MYSQL 데이터사전 스키마를 선택하여, 테이블목록조회, 테이블사양 조회, 테이블 컬럼 조회하는 쿼리문의 예시입니다.

 

 

구분

단계

쿼리문

1

데이터사전 스키마를 선택

use information_schema;

2

테이블목록 조회

show tables;

3

테이블사양 조회

desc tables;

4

테이블 컬럼 조회

desc columns;

 

 

Posted by codedragon codedragon

댓글을 달아 주세요


 

인덱스의 효율적인 활용 방법 

·         전체 데이터 중에서 10%~15% 이내의 데이터를 검색하는 경우에 적용하는 것이 효율적이다.

·         이상의 컬럼이 WHERE절이나 조인(join) 조건으로 자주 사용되는 경우 인덱스를 생성하는 것이 효율적이다.

·         테이블에 저장된 데이터 용량이 상당히 경우 인덱스를 활용하여 검색하는 것이 효율적이다.

·         인덱스를 통한 검색 속도의 증대를 이유로 모든 테이블에 대하여 인덱스를 생성하는 것은 비효율적이다.

 

https://codedragon.tistory.com/4352

 

 

 

 

 

 

인덱스 적용 기준, 인덱스 컬럼 선정, 설계시 고려사항

https://codedragon.tistory.com/4352

 

 

 

 

 

 

 

 

 

다중행 서브 쿼리

https://codedragon.tistory.com/4500

 

 

 

 

 

 

기존에 존재하는 테이블을 이용하여 새로운 테이블 생성

·         CREATE TABLE 테이블명 AS SELECT 컬럼리스트.... FROM 원본테이블명; 구문의 형식으로 만들 있다.

·         원본 테이블의 인덱스는 복사하지 않는다.

·         null not null 제약조건만 복사되며 다른 제약조건은 복사되지 않는다.

·         LONG 타입의 컬럼은 복사할 없다.

 

https://codedragon.tistory.com/4512

https://codedragon.tistory.com/4381

 

 

 

 

 

 

(role)

·         사용자가 데이터베이스에 접속할 있도록 기본적으로 미리 정의 되어 제공되는 롤이 있다.

·         DBA롤은 사용자들이 소유한 데이터베이스 객체를 관리하고 사용자들을 작성하고 변경, 제거할 있는 권한을 보유한 롤이다.

·         사용자 롤을 정의하기 위해서는 롤을 생성하고, 생성된 롤에 권한을 부여한다.

·         특정 사용자에게 적용된 롤을 회수하기 위해서는 REVOKE ROLE 구문을 사용하고 , 롤을 삭제하기 위해서는 DROP ROLE 구문을 사용한다.

 

https://codedragon.tistory.com/4375

 

 

 

 

 

 

데이터베이스 권한 종류

https://codedragon.tistory.com/4375

 

 

 

 

 

 

대표적인 시스템 권한

시스템 권한

설명

CREATE USER

새롭게 사용자를 생성하는 권한

DROP USER

사용자를 삭제하는 권한

DROP ANY TABLE

임의의 테이블을 삭제할 있는 권한

QUERY REWRITE

함수 기반 인덱스를 생성하는 권한

BACKUP ANY TABLE

임의의 테이블을 백업할 있는 권한

CREATE SESSION

테이터베이스에 접속할 있는 권한

CREATE TABLE

사용자 스키마에서 테이블을 생성할 있는 권한

CREATE VIEW

사용자 스키마에서 뷰를 생성할 있는 권한

CREATE SEQUENCE

사용자 스키마에서 시퀀스를 생성할 있는 권한

CREATE PROCEDURE

사용자 스키마에서 함수를 생성할 있는 권한

RESOURCE

·         객체를 생성, 변경, 제거 있는 권한

·         DDL, DML 명령어를 사용이 가능합니다.

CONNECT

·         데이터베이스에 연결할 있는 권한

DBA

·         데이터베이스 관리자 권한

https://codedragon.tistory.com/4312

 

 

 

 

 

 

QUERY 예시 1

employees 스키마에서 현재 부서에 해당하는 직원번호, 부서번호, 발령시작일 가지를 조회한 결과를 서브 쿼리의 활용하여 테이블(t_current_dept_emp) 생성하는 SQL문장 예시입니다.

CREATE table t_current_dept_emp

SELECT e.emp_no AS emp_no, d.dept_no AS dept_no, d.from_date AS from_date

FROM dept_emp d, employees e

WHERE d.emp_no = e.emp_no AND d.to_date > now();

 

 

 

 

 

 

QUERY 예시 2

다음의 보기에서 제시된 개의 테이블을 조인하여 이름, 부서코드, 부서명을 직원테이블의 나이순으로 출력하는 SQL문을 작성 예시입니다.


 

SELECT s_emp.name, s_emp.dept_id, s_dept.dept_name

FROM s_dept, s_emp

WHERE s_dept.dept_id = s_emp.dept_id

ORDER BY s_emp.age;

 

 

 

 

 

 

QUERY 예시 3

사용자에게 권한을 부여하고 회수하는 명령어 예시입니다.

 

사용자 : sampleuser

접근 호스트 : localhost

대상 데이터베이스 : sakila

대상 테이블 : 모든 테이블

 

. 사용자 권한 주기

- SELECT, EXCUTE 권한을 sakila 테이블에 부여

GRANT SELECT, EXCUTE ON sakila.* TO 'sampleuser'@'localhost'

 

. 사용자 권한 회수

)항에 부여된 권한 EXCUTE 권한 회수 

 

REVOKE EXCUTE ON sakila.* FROM 'sampleuser'@'localhost'

 

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

ER 다이어그램(ERD; E-R Diagram)

·         1976년에 피터 (Peter Chen) 처음 제안하였습니다.

·         개념적 데이터 모델인 ER 모델을 표현하는 그래픽 방식의 표현 방법입니다.

·         ERD 업무 분석 결과로 도출된 실체(엔티티) 엔티티 간의 관계를 도식화한 것입니다.

·         ERD 요소들 연관성을 도식화하여 데이터베이스 관리자, 개발자, 사용자 모두 데이터의 흐름과 연관성을 공통적으로 쉽게 확인할 있습니다.

 

 

 

 

 

ER 다이어그램 - google image

http://bit.ly/31vdF5Z

 

 

 

 

 

ER 다이어그램 특징

특징

설명

다원 관계

다원 관계(n-ary Relationship) 표현

관계

(m : n) 관계 표현

다중 관계

다중 관계(Multiple Relationship) 표현

속성

관계 타입도 속성을 가질 있음

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

ER 다이어그램 작성 지침

·         개체 타입은 (Key) 속성 이외에 개체 타입을 설명하는 속성들을 가집니다.

·         다중치 속성은 별도의 개체 타입으로 분류해야 합니다.

·         개체 타입을 직접적으로 설명하는 속성들을 개체 타입과 연결해야 합니다

·         관계 타입은 일반적으로 독자적으로 존재할 없습니다.

·         속성(또는 속성 집합)에는 밑줄 표시해야 합니다.

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

물리적 모델링의 주요 업무

·         논리적 스키마(릴레이션 스키마) 기초로, DBMS 특성과 구현 환경 등을 고려해서 내부 스키마(물리적 데이터 구조) 정의합니다.

·         속성 , 테이블 칼럼의 데이터 타입과 크기, 제약조건 등을 정의합니다.

·         데이터 사용량의 예측을 통해서 역정규화 인덱스 설계 작업 수행합니다. (역정규화는 논리적 모델링 단계에서 수행할 있습니다.)

 


'Development > Database' 카테고리의 다른 글

ER 다이어그램(ERD; E-R Diagram)  (0) 2019.10.20
ER 다이어그램 작성 지침  (0) 2019.10.20
물리적 모델링의 주요 업무  (0) 2019.10.17
ADO.NET 아키텍쳐  (0) 2019.10.11
DIKW pyramid(DIKW 피라미드)  (0) 2019.09.28
Mybatis Parameters  (0) 2019.09.24
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

ADO.NET 아키텍쳐

데이터 제공자는 Connection, Command, DataReader, DataAdapter 클래스로 구성되어 있습니다.

 

구성클래스

설명

Connection

DB 대한 연결 제공

Command

DB 쿼리문 명령 수행

DataReader

DB에서 데이터를 읽어오는 고성능 스트림 제공

DataAdapter

DataSet DB 연결

 

 


 


'Development > Database' 카테고리의 다른 글

ER 다이어그램 작성 지침  (0) 2019.10.20
물리적 모델링의 주요 업무  (0) 2019.10.17
ADO.NET 아키텍쳐  (0) 2019.10.11
DIKW pyramid(DIKW 피라미드)  (0) 2019.09.28
Mybatis Parameters  (0) 2019.09.24
MySQL 설치 파일 Download - 5.7.x  (0) 2019.09.21
Posted by codedragon codedragon

댓글을 달아 주세요