본문 바로가기
SQL

RDBMS 기본 개념과 사용법

by JoyfulS 2019. 9. 26.

 

정보시스템 구축 단계

- 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

- 분석단계에선 시스템 분속 또는 요구사항 분석으로 현재 우리가 '무엇을' 할 것인지 결정, 중요한 단계

- 설계는 주로 시스템 설계 또는 프로그램 설계로, 우리가 구축하고자 하는 시스템을 '어떻게' 할 것인지 결정

- 분석과 설계의 과정이 전체 공정이 50% 이상을 차지한다고 볼 정도로 중요하다.

 

데이터베이스 구축 절차

- 데이터베이스 생성 -> 테이블 생성 -> 데이터 입력 -> 데이터 조희/활용

 

테이블의 구조와 관련용어

 

 

-------- 책 '이것이 MySQL이다' 3장 일부를 명령어만으로 'MariaDB'에서 시도해봄 --------

 

# 데이터베이스 생성
# '쇼핑몰'(ShopDB) 데이터베이스 생성, 테이블 생성

create schema shopdb;

use shopdb;
# create table shopdb.memberTshopdbBL ( ... );
create table memberTBL(
memberID char(8) not null,
memberName char(5) not null,
memberAddress char(20)
);

create table productTBL(
productName char(4) not null,
cost int not null,
makeDate date,
company char(5),
amount int not null
);

show tables;
desc memberTBL;
desc productTBL;

create table `my testTBL`(id int); # 띄어쓰기가 들어간 이름을 사용하려면  ` 백틱키를 이용
drop table `my testTBL`;
-- 이 부호는 주석 달 때 사용 --

/* 블록 주석

이 안에 입력하는 내용들도 모두 주석

*/

 


# 행 데이터 입력

insert into memberTBL(memberID, memberName, memberAddress) values
('Dang', '당탕이', '경기 부천시 중동'),
('Jee', '지운이', '서울 은평구 증산동'),
('Han', '한주연', '인천 남구 주안동'),
('Sang', '상길이', '경기 성남시 분당구');

select * from memberTBL;

insert into productTBL(productName, cost, makeDate, company, amount) values
('컴퓨터', 10, '2017-01-01', '삼성', 17),
('세탁기', 20, '2018-09-01', 'LG', 3),
('냉장고', 5, '2019-02-01', '대우', 22);

select * from productTBL;

# view 뷰 사용법
create view uv_memberTBL
as
select memberName, memberAddress from memberTBL;
-- 뷰의 실체는 select문이다.

select * from uv_memberTBL;


# stored procedure 스토어드 프로시저 : SQL문을 하나로 묶어서 편리하게 사용하는 기능

-- 회원 테이블 '당탕이'의 정보와 제품 테이블의 '냉장고'의 정보를 동시에 조회 --
select * from memberTBL where memberName = '당탕이';
select * from productTBL where productName = '냉장고';
-- 두 쿼리를 하나의 스토어드 프로시저로 만들기 --
delimiter //
create procedure myProc()
begin
select * from memberTBL where memberName = '당탕이';
select * from productTBL where productName = '냉장고';
end //
delimiter ;

# 만들어둔 스토어드 프로시저 실행 : call 스토어드프로시저이름()
call myProc() ;


# trigger 트리거
-- 테이블에 부착되어 테이블에 insert, update, delete 작업이 발생되면 실행되는 코드
-- 데이터 삭제 후엔 그 데이터에 대해 알 수 없기 때문에 삭제 전 다른 곳에 복사해두면 되는데
-- 매번 수작업으로 할 경우 깜박 잊을 수 있으므로 '자동으로' 해주는 기능 
-- -> trigger의 대표적 용도

insert into memberTBL values ('Figure', '연아', '경기도 군포시 당정동');
select * from memberTBL;

update memberTBL set memberAddress = '서울 강남구 역삼동' where memberName = '연아';
select * from memberTBL;

delete from memberTBL where memberName = '연아';
select * from memberTBL;
-- 이 경우엔 '연아'가 회원이었다는 사실을 증명할 방법이 없음. 기록 없음.

-- 다른 테이블에 지워진 데이터와 더불어 지워진 날짜까지 기록하기
create table deletedMemberTBL (
memberID char(8),
memberName char(5),
memberAddress char(20),
deletedDate date -- 삭제한 날짜
); # 지워진 데이터를 보관할 테이블

delimiter //
create trigger trg_deletedMemberTBL -- 트리거 이름
after delete -- 삭제 후에 작동하게 지정
on memberTBL -- 트리거를 부착할 테이블
for each row -- 각 행마다 적용
begin
-- old 테이블의 내용을 백업 테이블에 삽입
insert into deletedMemberTBL
values(old.memberID, old.memberName, old.memberAddress, curdate() );
end //
delimiter ;

-- 트리거 작동 확인해보기
select * from memberTBL;
delete from memberTBL where memberName = '당탕이';
select * from memberTBL;
select * from deletedMemberTBL;

 

 

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

 

사용한 기본 명령어 정리

# create schema 데이터베이스_이름 ;

# create table 테이블_이름(칼럼들 입력) ;

# create view 뷰_이름 as select 특정칼럼, 특정칼럼2, ... from 테이블_이름 ;

# drop schema 데이터베이스_이름 ;

# drop table 테이블_이름 ;

# use 데이터베이스_이름 ;

# show tables ;   show databases ;

# desc 테이블이름 ;  = describe 테이블이름 ;

# insert into 테이블_이름(칼럼 콤마로 구분하여 순서대로 입력)

          values (넣을 데이터 콤마로 구분하여 순서대로 입력), ( ), ( ), ... ;

# select * from 테이블_이름 (where ~) ;

# update 테이블_이름 set 특정칼럼 = 새로 넣을 데이터 where ~ ;

# delete from 테이블_이름 (where ~) ;

# 주석 :  '-- '로 한줄 주석, '/* 내용 */'로 블럭(여러줄) 주석

 

* SQL은 일반적으로 대소문자 구분 X,

  but 전체 대문자 또는 소문자로 통일하는 것이 구문을 일기 쉽게 하고 DBMS의 성능에도 약간 도움이 된다

'SQL' 카테고리의 다른 글

SQL 02. DML 기본 명령어  (0) 2019.09.27
SQL 01. DDL 기본 명령어  (0) 2019.09.27
SQL의 분류 : DML / DDL / DCL / TCL  (0) 2019.09.26
SQL 설치  (0) 2019.09.26
SQL과 NoSQL  (0) 2019.09.25

댓글