(학) (공) (디)

01.12(2일차)

만석이 2024. 1. 12. 21:47

1교시

---릴레이션(테이블)---
- 표(테이블)을 릴레이션이라 부름
- DB에서 정보를 구분하여 저장하는 기본 단위
- 동일한 DB 내에서는 같은 이름을 가진 릴레이션이 존재할 수 없음
- 행과 열로 표현


---애트리뷰트(속성)---
- 테이블(릴레이션)의 속성 / 하나의 열은 하나의 속성 정보를 표시
- 테이블 내부에 저장될 데이터(튜플)들의 이름을 의미
- 내가 저장하고 싶은 데이터(튜플)의 항목
- 레코드들을 설명해준다.


---차수(degree)---
한 릴레이션에 들어 있는 애트리뷰트의 수


--- 튜플(tuple, 레코드, 데이터)---
- 릴레이션의 각 행
- 한 마디로 릴레이션에 실제적으로 들어 있는 값(데이터)
- 한 릴레이션의 포함된 튜플의 개수는 계속 변함


---도메인(Domain)---<타입과 옵션?>
- 릴레이션의 포함된 각각의 속성들이 가질 수 있는 값들의 집합
- 릴레이션의 저장되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리하기 위해 사용
- EX) 성별 -> ‘남’, ‘여’ 만 저장(‘남‘, ‘여‘가 도메인, 그 외의 것은 저장 X)



 ---스키마---
- DB의 구조와 제약 조건
- DB 구성 시 데이터가 갖는 값의 제약 조건
- 튜플의 형태 또는 모양 / 외부, 개념, 내부로 나뉨(추후에 다시 설명)


---숫자형 자료형---

- INT=INTEGER(정수형)
• 일반적인 숫자 자료형
• 부호가 있는 경우 -> -2147483648 ~ 2144483647
• 부호가 없는 경우 -> 0 ~ 4294967295
• 4byte 크기를 가진다


- FLOAT(실수형)
• 최소 +_1.175494351E-38 ~ 최대 +_3.402823466E_38
• 4byte 크기를 가진다


DOUBLE(실수형)
• 최소 ±1.7976931348623157E-308 ~ 최대 ±2.2250738585072014E+308
• 8byte 크기를 가진다


---문자형 자료형-----

CHAR
• CHAR(0)도 지원
• CHAR(N)에서 실제 값이 N만큼의 글자 수보다 작을 때 남는 자릿수는 공백
• 지정한 크기만큼 공백을 붙여 모두 사용(저장)
• 1부터 최대 255의 자릿수를 지원, CHAR(N)에서 N으로 지정한 용량만큼 byte 사용
• “입력한 글자 수“ byte 사용


VARCHAR(효율이좋다)
• 저장할 수 있는 길이(N)은 1 ~ 255 글자 수 지정
• VHACHAR(N)에서 사용한 길이까지 저장 / 남는 자리 사용 X
• CHAR 형보다 기억 장치를 효율적으로 사용



긴 글 일때 사용
--------------------------
- BLOB
• 최대 65535개의 문자를 저장
• “지정한 용량“ + 2 byte 용량 사용

- TEXT
• BLOB과 같음
-----------------------------



---날짜형 자료형------

DATE
• ‘1001-01-01’ ~ ‘9999-12-31’ 저장 가능
• 저장 용량은 3byte
• ‘YYYY-MM-DD’와 같은 형식
• Y  연도 / M  월 / D  일


DATETIME
• 날짜와 시간을 같이 저장
• ‘1001-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ 저장 가능
• 저장 용량은 8byte
• ‘YYYY-MM-DD HH:MM:SS’와 같은 형식
• HH  시간 / MM  분 / SS  초


TIMESTAMP
• ‘1970-01-01 00:00:00’ 이후부터 초를 숫자로 저장하는 자료형
• 저장 용량은 4byte
• 약 40억 초를 저장할 수 있음(2037년 까지)
- TIME
• ‘`838:59:59’ ~ ‘838:59:59’ 저장 가능
• 저장 용량은 3byte
• ‘HH:MM:SS’ 같은 형식
 

 YEAR
• 연도만 저장하는 자료형
• YEAR(N)와 같은 형식
• N은 2와 4를 지정할 수 있음
• N이 2인 경우에 값의 범위는 70 ~ 69
• N이 4인 경우에 값의 범위는 1970 ~ 2069
• 저장 용량은 1byte


---문제1---

테이블이름 :d4

속성6개
at1(int)
at2(date)
at3(float)
at4(varcher(20))
at5(char(20))
at6(text)


#Day2라는 데이터가 있으면 삭제하고 없으면 실행문을 스킵하겠다.
drop database if exists days2;

2교시

---auto_increment---
숫자 값이 자동으로 들어올 때 마다 1씩 증가



- 옵션의 종류
• NOT NULL : NULL값(아무것도 없는 값)이 들어가지 않아야 함
• UNIQUE : 유니크한 값(해당 테이블에서 하나인)이 들어가야 함
• PRIMARY KEY : NOT NULL과 UNIQUE의 조합 / 기본 키라고 부름
• FOREIGN KEY : 다른 테이블과 매치되는 데이터를 찾기 위한 참조 키 값
• CHECK : 값이 정해진 조건에 충족하는지 체크
• DEFAULT : 아무것도 쓰지 않으면 DEFAULT로 정해진 값을 갖는다


 #첫번째 실습
    drop table d13;
    create table d13(
    id int primary key auto_increment,
    name varchar(20) not null,
    age int check(age>1 and age<151) not null,
    weight float,
    height float,
    email varchar(30) default"NoEmail");    
    select*from d13;
    insert into d13(name,age,height) values('a',100,1.23);

3교시

#열삭제
    alter table d14 drop email;
    
     #열추가
    alter table d14 add sample int ;
alter table d14 add age int check(age>1 and age <151) ;

     #이름변경
    alter table d14 rename column id2 to id;
    
     #데이터 타입변경
    alter table d14 modify column id int not null;

#이름과 타입 전부 변경
    alter table d14 change name email varchar(20) not null;

#테이블명 변경 
alter table d15 rename to d14;

  #기본키 추가
    alter table d14 add primary key(id);
    #기본키 삭제(notNull값은 남아있다)
    alter table d14 drop primary key;


#실습2
 create table member(
id int primary key auto_increment,
    name varchar(10) not null,
    age int check(age>0 and age<151)not null,
    email varchar(20) default"NoEmail" );
    
    # 실습3
create table order_product(
orderno int primary key auto_increment,
    product varchar(10) not null,
    price int check(price>0) not null ,
    member_id int,
    foreign key(memer_id) references member(id));    
    
    #실습4
create table teacher(
id int primary key auto_increment,
    name varchar(10) not null,
    skil varchar(10) default"None" not null,
    email varchar(30) default"Noemail" not null);
    
#실습5
create table lecture(
id int primary key auto_increment,
    name varchar(20) not null,
    t_id int,
    n_student int not null,
    foreign key(t_id) references teacher(id));
    
     #실습6
create table student(
id int primary key auto_increment,
    name varchar(10) not null,
    l_id int,
    tel varchar(20) default"NoTel" not null,
    foreign key(l_id) references lecture(id));