━━━━ ◇ ━━━━
정보보안실무/데이터베이스

[MariaDB] Key와 View 테이블

728x90
반응형

Key의 종류
1. 후보기 (Candidate Key) 
· 튜플을 식별하기 위해 사용하는 속성들의 부분집합
· 모든 relation은 꼭 하나 이상의 후보키를 가진다. 
· 유일성(key로 하나의 튜플을 유일하게 식별)과 최소성(꼭 필요한 속성만의 구성) 만족
ex) 학번, 주민번호, ID

2. 기본키(Primary Key)
· 후보키 중 선택한 메인키
· Null값 X (개체 무결성)
· 동일한 값 중복 X (개체 무결성)
ex) 학번, 주민번호, ID

3. 대체키(Alternate key)
· 후보키 중 기본키를 제외한 나머지
· 보조키라고도 부른다. 
ex) 주민번호를 기본키로 정의하면 학번과 ID는 대체키가 된다. 

4. 슈퍼키(Super Key)
· 유일성 만족  but 최소성 불만족
ex) 학번 + 주민번호 + 성명 = 슈퍼키 
여기서 성명은 단독적으로 유일성 있는 키로 사용 불가

5. 외래키(Foreign Key)
· 참조되는 relation의 기본키와 대응되어 relation 사이의 참조 관계 표현
· 외래키로 지정하며 참조 테이블 기본키에 없는 값은 사용할 수 없다.(참조 무결성)

 

1. 데이터베이스 생성

먼저 Centos7 리눅스 환경 MariaDB에서 Dbtest 데이터베이스를 생성 후 Student와 teacher 테이블을 하나씩  만든다. 

Dbtest 데이터베이스에서
create table Student(Name varchar(8), Date int(4), Phone int(12));
create table teacher(Name varchar(8), Phone int(12), Addr varchar(6));
desc Student; 데이터 확인
desc teacher;

 

create table information (Name varchar(8) not null, Phone int(12), Addr varchar(12), ID int(4) primary key);
desc information;


not null이라고 설정했기 때문에 no라고 표현이 되어있다.
primary key는 데이터를 유일하게 인식할 수 있는 고유한 값을 나타낸다.

 

alter table information add Age int(4); (필드추가하기)
desc information;

alter table information add Addr_2 varchar(11) after Addr; (필드 위치 지정 추가하기)
desc information;

alter table information add ID_Num int(16) first; (맨 처음에 주민번호 필드가 위치하게 만들기)
alter table information modify Name varchar(8) first; (Name 필드를 가장 첫번째로 이동시키기)

 

alter table information modify ID int(4) after Name; (Name 뒤로 ID 이동시키기)
alter table information change Age Age_1 int(5); (필드 이름 및 데이터 바꾸기)

이름, 데이터 형 따로 바꿀 수 있음
alter table information drop ID_Num; (열 삭제)
desc Student;

 


2. Key 값 및 기타 설정

alter table information add ID int(3) primary key first;
alter table information change Age_1 Age int(4) not null;
insert into information values (1, ‘Park’, 12345678, ‘Daegu’, ‘Dong-gu’, 20);
insert into information (ID, Name, Age) values (2, ‘Hong’, 27); (특정 열이 두 개 이상일 때)
select Name, Age from information; (NameAge 필드만 보고싶을 때 )
update information set Phone = 87654321; (값이 잘못들어가서 모든 데이터를 수정 해야할 경우)
update information set Phone = 12345678 where Age = 20; (특정 데이터만 수정할 때)
insert into information values (3, ‘Park’. 12345687, ‘Daegu’, ‘Buk-gu’, 20);
update information set Phone = 43215678 where Addr = ‘Daegu’;
이렇게 입력하면 데이터가 대구인게 1, 3이기 때문에 둘 다 폰 넘버가 바뀌게 된다.
update information set Phone = 43215678 where Addr_2 = ‘Dong-gu’;
delete from information where name = ‘Hong’; (하나의 데이터만 삭제하고 싶을 때)
delete from Student (모든 데이터를 삭제하고 싶을 때)

 

 


3. View 테이블

★view 테이블
-      뷰란 하나의 가상테이블이다.
-      뷰는 실제 데이터가 하드웨어에 저장되는 것은 아니지만 뷰를 통해 데이터를 관리
-      뷰는 복잡한 Query를 얻을 수 있는 결과를 간단한 Query로 얻을 수 있게 한다.
-      한 개의 뷰로 여러 테이블에 대한 데이터 검색 가능
-      특정 평가 기준에 따른 사용자 별로 다른 데이터를 액세스 할 수 있도록 한다.
★ view테이블의 사용목적
보안성, 편의성, 속도 향상, 활용성, 임시적인 작업
select를 통해서 만들어진 테이블과 같다. (관리자가 만들 수 있음)
create view infor_new as select Name, Phone, Age from information;
이름, , 나이만 들어가 있는infor_new 라는 가상의 테이블이 생성된다.
select * from infor_new;  뷰이름을 적고 뷰 안에 있는 것을 보여주는 명령어
create view infor_new1 as select * from information where Name = ‘park’;
drop view infor_new1 (만들어진 뷰 삭제하기)

 

 

뷰 타입의 테이블만 출력해서 보는 방법


information_schema 에서 실행하기
728x90
반응형
COMMENT