본문 바로가기

Database

MySQL과 모바일 웹으로 만나는 데이터베이스의 정석 (1)


1. 서론

naver edwith에서 부산대학교 김연정 교수님의 데이터베이스 이론 강의와 함께 MySQL과 모바일 웹으로 만나는 데이터베이스의 정석 (박성진) 책을 같이 공부했다.

 

전자인 인터넷 강의는 100% 이론 강의이며 후자인 책의 경우는 절반은 실습, 절반은 이론으로 이루어져 있다. 블로그에 정리한 이론 내용은 모두 인터넷 강의의 내용이며, 책의 내용은 실습과정만 기록하려고 한다. 쓸데없는 서론이긴 한데 아무튼 이제 MySQL을 가지고 실습을 진행한다는 이야기다.

 

MySQL 설치에 관한 글은 따로 작성하지 않을 것이며 딱 한가지 다른 사람들에게 말하고 싶은 것은 아래 두 가지 설치 버전(웹 설치, 설치 파일 설치) 중 아래 것으로 다운받아야 한다는 것이다. windows10의 경우 밑에 것을 다운받으면 환경 변수 설정 및 워크벤치 configuration 설정을 건드리지 않아도 된다. (나는 포트 설정부터 서비스 등록 등 이상한 오류를 많이 겪다가 아래 것으로 재설치 했다. 설치 매니저가 서로 다르다!)

 

다른 글들을 통해 다음과 같이 워크벤치에 적절히 잘 접속했다면 실습준비는 끝난 것이다. 

 

워크벤치

 

이제 실습 내용을 작성해보자.

 

select user();

 

위의 코드를 입력한 뒤 커서를 해당 줄에 놓고 Ctrl + Enter를 누르면 스크립트가 실행된다. 현재 접속한 계정의 정보가 나타난다.

 

이제 본격적으로 앞으로 계속 사용할 DB를 만들어보자. 이름은 univDB이다.

2. DB 및 테이블 생성

-- 현재 존재하는 database 출력. information_schema, mysql 등의 기본 시스템 데이터베이스가 나옴
show databases;

-- univDB라는 데이터베이스 생성
create database if not exists univDB;

-- 지금부터 univDB 사용
use univDB;

-- 학생 테이블을 생성하는데 스키마와 제약조건은 다음과 같다.
create table 학생
	( 	학번 char(4) not null,
		이름 varchar(20) not null,
        주소 varchar(50) null default '미정',
        학년 int not null,
        나이 int null,
        성별 char(1) not null,
        휴대폰번호 char(14) null,
        소속학과 varchar(20) null,
        primary key (학번));

-- 과목 테이블을 생성하는데 스키마와 제약조건은 다음과 같다.
create table 과목
		(	과목번호 char(4) not null primary key,
			이름 varchar(20) not null,
            강의실 char(3) not null,
            개설학과 varchar(20) not null,
            시수 int not null);


-- 수강 테이블을 생성하는데 스키마와 제약조건은 다음과 같다.
create table 수강
	(	학번 char(6) not null,
		과목번호 char(4) not null,
		신청날짜 date not null,
        중간성적 int null default 0,
        기말성적 int null default 0,
        평가학점 char(1) null,
        primary key(학번, 과목번호) );
        
       

 

3. 데이터 입력

-- 여기부턴 학생, 과목, 수강 테이블을 채워넣는 작업이다.
insert into 학생
values('s001', '김연아', '서울 서초', 4, 23, '여', '010-1111-2222', '컴퓨터');
insert into 학생
values('s002', '홍길동', DEFAULT, 1, 26, '남', NULL, '통계');
insert into 학생
values('s003', '이승엽', NULL, 3, 30, '남', NULL, '정보통신');
insert into 학생
values('s004', '이영애', '경기 분당', 2, NULL, '여', '010-4444-5555', '정보통신');
insert into 학생
values('s005', '송윤아', '경기 분당', 4, 23, '여', '010-6666-7777', '컴퓨터');
insert into 학생
values('s006', '홍길동', '서울 종로', 2, 26, '남', '010-8888-9999', '컴퓨터');
insert into 학생
values('s007', '이은진', '경기 과천', 1, 23, '여', '010-2222-3333', '경영');

insert into 과목
values('c001', '데이터베이스', '126', '컴퓨터', 3);
insert into 과목
values('c002', '정보보호', '137', '정보통신', 3);
insert into 과목
values('c003', '모바일웹', '128', '컴퓨터', 3 );
insert into 과목
values('c004', '철학개론', '117', '철학', 2);
insert into 과목
values('c005', '전공글쓰기', '120', '교양학부', 1);

insert into 수강
values ('s001', 'c002', '2019-09-03', 93, 98, 'A');
insert into 수강
values ('s004', 'c005', '2019-03-03', 72, 78, 'C');
insert into 수강
values ('s003', 'c002', '2017-09-06', 85, 82, 'B');
insert into 수강
values ('s002', 'c001', '2018-03-10', 31, 50, 'F');
insert into 수강
values ('s001', 'c004', '2019-03-05', 82, 89, 'B');
insert into 수강
values ('s004', 'c003', '2020-09-03', 91, 94, 'A');
insert into 수강
values ('s001', 'c005', '2019-09-03', 74, 79, 'C');
insert into 수강
values ('s003', 'c001', '2019-03-03', 81, 82, 'B');
insert into 수강
values ('s004', 'c002', '2018-03-05', 92, 95, 'A');        


-- 여기부턴 잘 만들어졌는지 확인하는 작업!

-- univDB 다시 가져오기
use univDB;

-- database에 univDB가 생겼는지 확인!
select database();

-- univDB가 가지고 있는 table들 확인
show tables;

-- 학생 table의 스키마 확인
desc 학생;