Database SQL/Oracle

[DB#08]테이블 생성 실습문제

양동민 2020. 11. 17. 05:37

[문제]

다음 데이터를 music이라는 이름으로 만들어서 저장해보세요.

저장할 데이터는 음원사이트에서 사용할 데이터입니다.

-음원 고유번호 : A00135 와 같은 모양의 일련번호 데이터

-음원 제목

-아티스트

-조회수

-좋아요 수

-재생 수 : 처음에 만들지 말고 나중에 추가

-인기순위 : 처음에 만들지 말고 나중에 추가

 

+수업중 추가내용)date 발매일

 

[풀이]

음원고유번호의 형태 ->A00135는 문자열이다. 때문에 varchar2(6) 으로 한다.

음원 제목의 형태 -> 일반적으로 음원사이트에서 가장 긴 음원 제목을 찾아본다 varchar2(150) 대략 이정도

아티스트 -> 요즘은 피처링도 많고 해서 길기 때문에 찾아보고 varchar2(100) 대략 이정도

조회수 -> 보통 몇 십억 뷰도 나오기 때문에 10자리를 할 순있지만 언젠간 넘을 수 있기에 number(19)로 했다.

좋아요 수 -> 위와 같은 이유로 number(19)로 했다.

재생 수 -> 같은 이유이다. number(19)

인기순위 -> 인기순위는 보통 길어도 999 이상은 본적이 없는 것 같아 number(3) 세자리로 마무리했다.

 

+수업중 추가내용)발매일은 date만 해주면된다. 괄호 노필요 

 

 

다음은 컬럼명을 한글에서 영어로 설정해준다.

차례대로 serial, title, artist, click, up, play, rank, +수업중 추가내용)release

+)당연히 조회수를 view로 설정할 수 있는데, 예약어 중 view가 있기 때문에 (create, alter 와 같이) 다른걸로 한다.

(like 도 있음)

 

create table music(serial varchar2(6), title vachar2(150), artist varchar2(90), click number(19), up number(19), play number(19), rank number(3)); 이 맞지만 재생 수와 인기순위는 나중에 추가하라고 하였기 때문에 빼고,

 

create table music(serial varchar2(6), title vachar2(150), artist varchar2(90), click number(19), up number(19)); 

alter table music add(play number(19), rank number(3)); 라고 해주면 된다.

 

+수업중 추가내용)alter table music add(release date);

 

입력해주면 Table altered. 라는 문구가 나오고, 자세히 테이블을 보려면 desc music;을 입력해주면 되는데 

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 SERIAL                                             VARCHAR2(6)
 TITLE                                              VARCHAR2(150)
 ARTIST                                             VARCHAR2(90)
 CLICK                                              NUMBER(19)
 UP                                                 NUMBER(19)
 PLAY                                               NUMBER(19)
 RANK                                               NUMBER(3)

RELEASE                                            DATE

이렇게 창에 표시된다.

 

 

[정답]

 

create table music(serial varchar2(6), title vachar2(150), artist varchar2(90), click number(19), up number(19)); 

입력 후 

alter table music add(play number(19), rank number(3)); 

입력

 

 

 

 

 

+)

byte length calculator 라고 구글링하면 UTF-8 string length & byte counter 사이트가 있다.(mothereff.in)

들어가면 드래그해서 복사해서 창에 넣으면 바로 몇바이트인지 추출해준다.

 

+) varchar 외에 char라는 문자열이 있는데, char는 고정형태이다. 데이터베이스는 매우 크기때문에 성능이 중요한데, 처리속도를 빠르게하기 위해선 절대값 즉, 고정되어있는 ()내에 숫자가 있으면 더 빨리 처리할 수 있다고 한다.

때문에 위에 음원고유번호와 같이 확실한 값, 실생활로 예를 들면 날짜나 전화번호같은 경우엔 varchar말고 char로 해주는게 좋다.

char 고정문자열 : 언제나 같은 크기

varchar2 가변문자열 : 최대치만 정해져있고 최소치는 자유

 

number 외에 또 다른 것은 date이다. 이 4개로 모든 데이터를 다 저장한다고 기억하면 된다.

데이터 베이스는 사이트 하나 정해서 이 사이트의 정보를 저장하려면 db가 어떻게 생겼을까, 데이터를 어떻게 정리했을까를 고민해보며 추리하면 정말 좋은 연습법이 될 것이다.

'Database SQL > Oracle' 카테고리의 다른 글

[DB#10]Oracle SQL Developer 실행  (0) 2020.11.17
[DB#09]테이블 생성 실습문제2  (0) 2020.11.17
[DB#08]테이블 제어  (0) 2020.11.17
[DB#07]테이블 제어(Table CRUD)  (0) 2020.11.17
[DB#06]사용자 권한  (0) 2020.11.17