달력

11

« 2019/11 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30


 

 

Sample database with test suite

 

https://launchpad.net/


 

 

https://launchpad.net/test-db


 

https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-dump-files-1.0.5.tar.bz2

https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-code-1.0.6.tar.bz2

 

 

https://github.com/datacharmer/test_db




 

직접 다운로드

employees_db.zip

employees_db.z01

employees_db.z02

employees_db.z03

employees_db.z04

employees_db.z05

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

SQL(Standard Query Language)

·         SQL RDBMS 표준 언어

·         SQL문을 이용해서 단순한 쿼리뿐만 아니라 데이터 베이스 객체를 만들거나, 제거하고, 데이터를 삽입, 갱신, 삭제하거나 다양한 운영 관리 작업을 있습니다.

·         SQL문이 첫선을 보인 것은 1970년대 IBM 의해서이며, 이후 ANSI/ISO 표준으로 편입되어 여러 차례의 개량과 개발을 거쳤다.

·         https://codedragon.tistory.com/8225

 

 

 

 

SQL 종류

구분

설명

DDL

데이터와 구조를 정의하는 언어

DML

데이터의 검색과 수정을 위한 언어

DCL

데이터 베이스의 권한을 정의하는 언어

 

 

 

 

 

DDL 관련 SQL

SQL

설명

CREATE

데이터베이스 객체를 생성합니다.

DROP

데이터베이스 객체를 삭제합니다.

ALTER

기존에 존재하는 데이터베이스의 객체를 다시 정의하는 역할을 합니다.

 

 

 

 

 

 

DML 관련 SQL

SQL

설명

INSERT

데이터베이스 객체에 데이터를 입력합니다.

UPDATE

데이터베이스 객체에 데이터를 갱신합니다.

SELECT

데이터베이스 객체에 데이터로 부터 데이터를 검색합니다.

COMMIT

커밋 구문 전에 발생한 데이터베이스 액션을 영구히 저장합니다.

ROLLBACK

마지막으로 발생한 커밋 후의 데이터베이스 액션을 원시 데이터로 복구합니다.

 

 

 

 

DCL 관련 SQL

SQL

설명

GRANT

데이터베이스 객체에 권한을 부여

REVOKE

이미 부여된 데이터베이스 객체의 권한을 취소

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

 

시스템계정으로 로그인합니다.

sqlplus sytem/oracle_11g

 

 

오라클 데이타베이스명을 확인

SQL> SELECT name, DB_UNIQUE_NAME FROM v$database;

 

NAME      DB_UNIQUE_NAME

--------- ------------------------------

ORCL      orcl

 

SQL>

 

 

 

오라클 SID를 확인

SQL> SELECT instance FROM v$thread;

 

INSTANCE

--------------------------------------------------------------------------------

orcl

 

SQL>

 

 



Posted by codedragon codedragon

댓글을 달아 주세요



 

 

MySQL JDBC - download (다운로드)

 

 

MySQL 사이트에 접속합니다.

https://dev.mysql.com/downloads/connector/j/


 

 

 

"Select Operating System:" 항목에서 [Platform Independent] 선택합니다.


 

"Platform Independent (Architecture Independent), ZIP Archive" 항목의 [Download]버튼을 클릭합니다.


 

 

 

 

[No thanks, just start my download.]


 


 


 

 

 

 

 

직접 다운로드

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

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) 저장된다.

·         부적절한 데이터 입력방지를 위한 NOT NULL 제약조건은 반드시 (컬럼) 레벨에서만 정의가 가능하다.

·         NOT NUll, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK 등이 대표적인 제약조건의 유형들이다.

 

https://codedragon.tistory.com/4272

 

 

 

 

기본키(Primary key)

·         기본키 제약조건은 일반적으로 테이블의 행을 고유하게 식별하는 값을 가진 또는 조합을 말한다.

·         기본키 제약 조건에 포함되는 열에는 Null 값을 사용할 없다.

·         기본키 제약 조건을 지정하면 데이터베이스는 해당 열에 대해 고유 인덱스를 만들어 데이터 고유성을 적용한다.

·         쿼리에서 기본키 제약 조건을 사용한 열을 사용하는 경우 인덱스를 사용하여 빠르게 액세스할 있다.

https://codedragon.tistory.com/4534

https://codedragon.tistory.com/8065

 

 

 

 

외래키(FOREIGN KEY)

·         외래키 제약조건은 테이블의 데이터 연결을 설정하고 강제 적용하는 사용되는 열을 말한다.

·         외래키 테이블의 기본 값을 가지고 있는 열을 다른 테이블의 열이 참조할 테이블 간에 연결이 생성된다이때 번째 테이블에 추가되는 열은 제약 조건으로 생성된다.

·         외래키 제약 조건을 지정하면 데이터베이스는 해당 열에 대해 고유 인덱스를 만들어 데이터 고유성을 적용한다.

·          쿼리에서 제약 조건을 사용한 열을 사용하는 경우 인덱스를 사용하여 빠르게 액세스할 있다.

https://codedragon.tistory.com/4540

 

 

 

 

QUERY  연습 1

오브젝트 조회, 테이블 조회, 컬럼 정보 조회 , 인덱스 조회, 조회 쿼리문 예시입니다.

조회 정보

예제

오브젝트 조회

SELECT object_name, object_type

FROM user_objects;

테이블 조회

SELECT table_name FROM user_tables;

SELECT * FROM tab;

컬럼 정보 조회

SELECT column_name, data_type, data_length, data_precision,

data_scale, nullable, data_default

FROM user_tab_columns

WHERE table_name = 'DEPT' ;

인덱스 조회

SELECT column_name, data_type, data_length, data_precision,

data_scale, nullable, data_default

FROM use_indexes

WHERE table_name = 'DEPT' ;

조회

SELECT text

FROM user_views

where view_name='EMP_vw';

https://codedragon.tistory.com/8067

 

 

 

 

QUERY  연습 2

1.아래의 조건에 맞는 테이블을 설계하고 데이터를 조작하여 테스트하는 쿼리문을 작성하시오

 

 

인사관리에 필요한 테이블(employees) 생성하기

컬럼

조건

사원번호

empno

PK

사원명

empname

Not Null

성별

gender

m 또는 w 값만 허용

부서코드

deptno

부서테이블과 관계 설정

메일주소

email

중복불허

휴대폰번호

phone

중복불허

학력

school

코드(학력테이블)

주소

address

-

 

 

 

인사 기본테이블(employees)  구성된 테이블 생성

CREATE TABLE employees(

empno NUMBER(4) PRIMARYKEY,

empname VARCHAR2(10) NOT NULL,

gender VARCHAR2(1) CONSTRAINT emp_gender_CK CHECK( gender IN('M', 'F') ),

gender VARCHAR2(10) constraint check_gender check( gender IN('남성','여성') ),

deptno VARCHAR2(10) NOT NULL FOREIGN KEY REFERENCES departments(deptno),

email VARCHAR2(10) UNIQUE,

phone NUMBER(4) UNIQUE,

school VARCHAR2(10),

address VARCHAR2(10)

);

 

 

부서테이블(departments)  생성하기

컬럼

조건

부서코드

(deptno)

PK

부서명

(deptname)

not Null

지역

(region)

-

부서 전화번호

(depttel)

-

 

CREATE TABLE departments(

deptno VARCHAR2(10) PRIMARYKEY,

deptname VARCHAR2(10)NOT NULL,

region VARCHAR2(10)

depttel VARCHAR2(10)

);

 

 

 

2. 테이블간의 관계도를 도식화하여 나타내시오


 

 

 

 

3. 인사기본테이블의 성별컬럼을 기준으로 B 트리 인덱스를 생성하려고 문제점을 설명하시오

사원정보 테이블에서 성별 컬럼의 데이터는 m w 값만을 가질 있으며, 카디널리티가 낮은 컬럼을 대상으로 때는 bitmap 인덱스를 생성하는 것이 효율적이다.

 

 

 

 

 

4. 사원번호와 사원명, 부서명, 메일주소, 휴대폰번호의 컬럼을 갖는 View(empl_view) 생성하시오

CREATE OR REPLACE VIEW empl_view

AS SELECT emp.사원명, dept.부서명, emp.메일주소, emp.휴대폰번호

FROM employees emp, department dept;

 

 

 

 

 

QUERY  연습 3

제약조건(Constraints) DB에서 데이터의 적정성과 무결성을 확보하기 위한 조건들을 의미합니다. 모든 제약조건들은 원본 데이터와 따로 데이터 사전(Data dictionary)에도 저장되며, 보통 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY< CHECK등이 대표적인 제약조건의 유형을 표시합니다.

ERD 보고 Table 생성하는 SQL 명령어 예시입니다.

 

테이블간의 관계(Relationship)


 

 

도서 테이블명: Book

컬럼명

제약조건

bookid

기본키(PK)

숫자(2)

bookname

가변문자열(40)

publisher

가변문자열(40)

price

숫자(8)

 

 

고객 테이블명: Customer

컬럼명

제약조건

custid

기본키(PK)

숫자(2)

name

가변문자열(40)

address

가변문자열(50)

phone

숫자(8)

 

 

주문 테이블명: Orders

컬럼명

제약조건

orderid

기본키(PK)

숫자(2)

cusid

외래키(FK)

숫자(2)

bookid

외래키(FK)

숫자(2)

salesprice

숫자(8)

orderdate

날짜

 

CREATE TABLE Book(

bookid NUMBER(2) PRIMARY KEY,

bookname VARCHAR2(40),

publisher VARCHAR2(40),

price NUMBER(2)

)

 

 

CREATE TABLE Customer(

custid NUMBER(2) PRIMARY KEY,

name VARCHAR2(40),

address VARCHAR2(50),

phone VARCHAR2(20)

)

 

CREATE TABLE Order(

orderid NUMBER(2) PRIMARY KEY,

cusid NUMBER(2) REFERENCES Customer(custid),

bookid NUMBER(2) REFERENCES Book(bookid),

saleprice NUMBER(8),

orderdate DATE

)

 

 

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

댓글을 달아 주세요