1. 인터넷 쇼핑몰 구축 위한 '쇼핑몰' DB 생성 (1) MySQL 서버 연결 및 설정 ▷ Windows의 [시작] >> [M] >> [MySQL] >> [MySQL Workbench 8.0 CE] 클릭해 Workbench 실행 ▷ [MySQL Connections] 창에서 비밀번호 입력하여 접속 ▷ Workbench의 초기 창(기본적으로는 [Schemas] 탭 클릭해놓고 사용) ▷ Workbench 종료 → 설정 저장
(2) 스키마(Schema) 생성 ▷ MySQL에서는 스키마와 데이터베이스가 완전히 동일한 용어로 사용 ▷ Workbench의 [SCHEMAS]의 빈 부분 ▶ 마우스 오른쪽 버튼 클릭 후 [Create Schema](=Create Database) 선택 ▶ CREATE SCHEMA 'shopdb'문을 퀴러 창에서 입력하는 것과 동일한 작성 ▶ 이름 입력하면 DB 생성 ▷ 왼쪽 데이터베이스 목록에 shopdb 데이터베이스 확인 ▷ 아무것도 들어있지 않은 데이터베이스 생성
(3) 테이블 생성 ▷ 회원테이블, 제품 테이블 각 열의 영문 이름 및 데이터 형식 결정 ▶ 데이터베이스 모델링(특히 물리적 모델링) 시에 결정 ▷ 형식이 정해지면 Create Table 실행해 테이블이름, 열이름, 데이터형식 등 테이블 내용 입력 ▷ 생성된 SQL Query를 데이터베이스에 적용해 테이블 생성 완료 ▷ shopDB의 [테이블]에서 생성한 테이블 확인
2. 데이터 입력 - 행 데이터 입력 (1) 회원 테이블의 데이터 입력 ▷ Navigator의 [SCHEMAS]에서 [Shopdb] → [Tables] →[membertbl] 선택 후, 마우스 오른쪽 버튼을 클릭하고 [Select Rows - Limits 1000] 선택 ▷ 아래 그림의 회원 테이블 데이터 Grid에 입력 후 Apply 해 저장
(2) 제품 테이블의 데이터 입력 ▷ 동일한 방식으로 제품 데이터 입력 후 저장 ▷ 데이터를 삭제하려면 삭제할 행의 앞 부분에 마우스 대고 오른쪽 메뉴 Delete 사용해 삭
3. 데이터 활용 (1) 주로 SELECT문 사용해 데이터 활용(6, 7장) (2) 사용할 데이터 베이스 선택 ▷ SCHEMA에서 사용할 DB를 더블 클릭(진하게 색상이 변하면서 선택 됨) (3) SQL 실행법 ▷ 툴바의 <Execute the selected portion~~> 아이콘 클릭 ▷ ctrl + shift + enter ▷ Workbench 메뉴의 [Query] → [Execute(All or Selection)] (4) SQL은 대소문자 구별 없음 ▷ 읽기 편하게 예약어는 대문자 (쿼리 창에서 파란색으로 표시) (5) SELECT 열 이름 FROM 테이블 이름 [WHERE 조건] ▷ 모든 데이터 출력하기(열 이름 대신 '*') ▷ 열을 선택해 데이터 출력하기 (열 이름 나열) ▷ 특정 데이터를 만족하는 데이터 출력하기 (WHERE절에 조건 입력) (6) 새로운 테이블 생성 ▷ 테이블 이름에 space가 들어간 경우의 처리 (백틱[backtick]키 활용) ▷ Navigator 창에서 "Refresh All"의 중요성 ▶ 새로 테이블을 만든 뒤 개체가 보이지 않을 경우 필수로 실행할 것 (7) 테이블 삭제 ▷ DROP TABLE 테이블 이름
◎ table 생성 및 삭제
USE shopdb; -- 특정 데이터베이스 사용
-- 테이블의 구성요소 출력
select * from membertbl;
select * from producttbl;
-- membertbl 테이블의 memberName(한주연) 필터
select memberName, memberaddress from membertbl where memberName = "한주연";
-- 모든 테이블 확인
show tables;
-- 테이블 구조 확인(표 내용 모두 출력)
desc membertbl;
desc producttbl;
-- 테이블 삭제
drop table membertbl;
drop table producttbl;
-- 데이터베이스 삭제
drop database shopdb;
◎ table을 코드로 입력하는 방법
-- 데이터베이스들 확인
show databases;
-- 데이터베이스 생성
create database shopdb;
-- 데이터베이스 선택
use shopdb;
-- 테이블 확인
show tables;
-- 테이블 생성
create table membertbl (
memberID char(8) not null primary key,
memberName char(5) not null,
memberAddress char(20)
);
create table producttbl (
productName char(4) not null primary key,
cost int not null,
makeDate date,
company char(5),
amount int not null
);
insert into membertbl values('Dang', '당탕이', '경기 부천시 중동');
insert into membertbl values('Jee', '지운이', '서울 은평구 증산동');
insert into membertbl values('Han', '한주연', '인천 남구 주안동');
insert into membertbl values('Sang', '상달이', '경기 성남시 분당구');
insert into producttbl values('냉장고', '5', '2023-02-01', '대우', '22');
insert into producttbl values('세탁기', '20', '2022-09-01', 'LG', '3');
insert into producttbl values('컴퓨터', '10', '2021-01-01', '삼성', '17');
select * from membertbl;
select * from producttbl;
3. 테이블 외의 데이터베이스 개체의 활용
(1) 인덱스(Index)
▷ 9장에서 다룰 에정
▷데이터베이스 '튜닝'의 개념
▶ 데이터베이스 성능 향상
▶ 쿼리에 응답하는 시간 단축시키는 것
▷책 뒤에 붙어 있는 '찾아보기'(또는 색인)와 같은 개념
▷데이터의 양이 많을수록 효과적으로 작용
▶ 응답속도가 현저히 차이 나는 결과
▷테이블의 열 단위에 생성
▷인덱스 사용 전/후의 실행 계획 (Execution Plan) 비교
◎ indexTBL 테이블 생성 및 값 추가
-- indexTBL 테이블 생성 및 값 추가
create table indexTBL(
first_name varchar(14),
last_name varchar(16),
hire_date date
);
-- 인덱스 테이블에 employees 데이터베이스 내에 있는 employees 테이블예시 데이터를 500개 가져와서 넣기
insert into indextbl
select first_name, last_name, hire_date
from employees.employees
limit 500;
-- indextbl 선택
select * from indextbl;
-- indextbl의 first_name이 Mary만 필터
select * from indextbl where first_name = 'Mary';
-- 인덱스 생성 : first_name 기준으로 색인 생성
create index idx_indexTBL_firstname ON indexTBL(first_name);
-- indextbl의 first_name이 Mary 필터
select * from indextbl where first_name = 'Mary';
▷ 그냥 검색만하면 cost가 50.75가 나타나고 first_name 기준으로 색인을 생성하면 cost가 35가 나타납니다.
▷ 일반 검색에서 cost가 낮을수록 성능이 좋습니다.
◎ producttbl 테이블 지우기
USE shopdb;
select * from producttbl;
drop table producttbl;
show tables;
use world;
-- select * from producttbl;
◎ 뷰(View)
▷ 가상의 테이블
▷ 실제 행 데이터를 가지고 있지 않음
▶ 그 실체는 없는 것이며, 진짜 테이블에 링크Link된 개념
▶ 뷰를 SELECT(진짜 테이블의 데이터를 조회하는 것과 동일한 결과)
◎ 스토어드 프로시저(Stored Procedure)
▷ MySQL에서 제공해주는 프로그래밍 기능
▷ SQL문을 하나로 묶어 편리하게 사용하는 기능
▷ 다른 프로그래밍 언어와 같은 기능을 담당할 수도 있습니다.
▶ 실무에서는 SQL문(주로 SELECT)을 매번 하나하나 수행 X
▶ 스토어드 프로시저로 만들어 놓은 후 스토어드 프로시저로 호출
◎ 트리거(Trigger)
▷ 테이블에 부착되어 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생되면 실행되는 코드
▷ ex) 탈퇴회원 관리
▶ 회원 테이블에서 빼서 탈퇴한 회원 관리 테이블로 옮김
▶ 회원 정보 + 탈퇴한 날짜를 관리하는 새 테이블의 필요성
◎ 백업과 복원
▷ 백업 : 현재의 데이터베이스를 다른 매체에 보관하는 작업
▷ 복원 : 데이터베이스에 문제 발생시 다른 매체에 백업된 데이터를 이용해 원상태로 돌려놓는 작업
▷ 백업과 복원은 DBA(DataBase Administrator : 데이터베이스 관리자)가 해야할 가장 중요한 일
◎ 데이터베이스 백업
▷ 백업용 폴더 작성
▶ 실제로는 다른 디스크에 이루어져야 의미 있습니다.
▷ DB 백업
▶ DB내의 모든 트리거, 스토어드 프로시저까지 백업
▶ 백업 폴더에 백업파일 저장
◎ 데이터베이스 복구
▷ DB 삭제 같은 큰 사고를 인위로 발생시켜 실습
▷복원 후 데이터가 온전한지 check 하는 것이 중요합니다.
mysal 최고 관리자 root
리눅스 최고 관리자 root
윈도우 최고 관리자 administrator
평상시에는 최고 관리자 계정으로 접근 X
MySQL에서 실행하는 것에 대해서 잠깐 익혀보았습니다.
컴활1급 공부했었을때 잠깐 공부했던 액세스와 사용하는 구문이 비슷하다는 생각이 들었습니다.