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; (Name과 Age 필드만 보고싶을 때 ) |
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
반응형
'정보보안실무 > 데이터베이스' 카테고리의 다른 글
[MariaDB] 테이블 조회, 정렬과 중복제거 (0) | 2023.05.06 |
---|---|
[MariaDB] 사용자 조회, 생성, 권한 부여 (0) | 2023.05.06 |
[MariaDB] 스키마(Schema)와 데이터베이스 언어 (0) | 2023.05.06 |
[MariaDB] 메모리 정보 조회 및 DB구현 (0) | 2023.05.06 |
평가.18 데이터베이스 (0) | 2023.04.16 |