본문 바로가기

멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차/Database

1/26 수

728x90

수요일~~

 

SQL은 대소문자를 구별하지 않지만,

관용적으로 keyword는 대문자 / 식별자(사용자 정의 변수·함수·테이블·인덱스·뷰 이름)는 소문자를 이용

 

View : 실제 데이터를 가지고 있지 않은 가상의 테이블, 진짜 테이블에 링크된 개념, 뷰를 SELECT 하면 테이블의 테이터를 조회하는 것과 동일한 결과

CREATE VIEW shopdb.v_memberTBL                           -- View 생성
AS
	SELECT memberName, memberAddr FROM shopdb.membertbl; -- 링크할 테이블 지정
    
SELECT * FROM shopdb.v_memberTBL;                        -- View 생성 시 입력한 SELECT문 실행

DROP DATABASE shopdb;                                    -- schema 백업 후 삭제

 

백업

DB 백업

복원

DB 복원

데이터베이스 모델링 : 현 세계에서 사용되는 작업이나 사물들을 DBMS의 DB 개체로 옮기기 위한 과정

 

L자형 테이블은 공간의 낭비가 있으므로, 빈칸이 있는 곳과 없는 곳으로 테이블을 분리함

서로 밀접한 관계(Relation)가 있는 테이블들 중 주(master)가 되는 쪽은 부모, 상세(detail)는 자식으로 설정함

이러한 관계를 데이블의 1대다(1:N) 관계라고 지칭함

 

Key는 column에 설정함, 여러 종류(Primary, Foreign;외래 키)가 존재함

동일한 정보가 중복되는 것을 방지하기 위해, 구분자(기본 키; PK, Primary Key)를 설정함

PK : 각각의 record를 유일하게 식별함, column의 집합. Not Null(중복 안됨)·Unique 제약조건(값 있어야함)

FK : 외래 키를 가지고 부모 테이블로 가서 유일한 정보를 얻을 수 있음. Not Null but Not Unique 제약조건

PK가 반드시 table에 존재해야 하는 건 아니지만, PK를 설정한 column은 Index가 설정됨

 

PK를 기준으로 rows가 오름차순(사전식)으로 정렬되어 저장됨 → Clustered Index

Index  → Secondary Index, B-Tree 구성함

 

사용하고 있는 DB가 지정되어 있다면(USE 구문) 구문 쓸 때 schema. 쓰는 것 생략할 수 있음 or 마우스로 더블 클릭→좌측에 해당 schema가 볼드체로 바뀜

USE shopdb;                          -- 사용하고 있는 DB 지정하기
CREATE TABLE userTBL (
	userName VARCHAR(6) PRIMARY KEY, -- PK 설정하기
    userAddr VARCHAR(12),
    userMobile VARCHAR(11)
);

INSERT INTO userTBL VALUES('아이유', '서울', '1234');
INSERT INTO userTBL VALUES('김연아', '인천', '5678');
INSERT INTO userTBL VALUES('신사임당', '부산', '9011');

SELECT * FROM userTBL;               -- 조회하면 PK를 기준으로 rows가 오름차순으로 저장됨

-- 김연아	인천	5678
-- 신사임당	부산	9011
-- 아이유	서울	1234

DROP 구문은 주체(Schema, Table, Index, View)를 지울 때, DELETE는 특정 DB(row·record)를 지움

CREATE TABLE buyTBL (
	userName     VARCHAR(6) NOT NULL,
	productName  VARCHAR(10) NOT NULL,
	productPrice INT NOT NULL,
	buyAmount    INT NOT NULL,
	FOREIGN KEY(userName) REFERENCES userTBL(userName) -- FK 설정하기
);

INSERT INTO buyTBL VALUES('아이유', '냉장고', 1000, 2);
INSERT INTO buyTBL VALUES('김연아', 'TV', 2000, 1);
INSERT INTO buyTBL VALUES('신사임당', '컴퓨터', 3000, 3);
INSERT INTO buyTBL VALUES('홍길동', '냉장고', 1000, 2); -- 부모 Table에 존재하지 않으므로 추가할 수 없음

SELECT * FROM buyTBL;

DELETE FROM userTBL WHERE userName = '아이유';         -- parent row 안에 있으므로 지울 수 없음

SQL문은 크게 DML(Data Manipulation Language), DDL(Data Definition Language), DCL(Date Control Language)로 분류함

DML : Insert, Delete, Update, Select. C(reate)R(ead)U(pdate)D(elete) 작업

SHOW DATABASES;          -- 현재 사용가능한 모든 DB(Schema)를 출력
USE employees;           -- 번개 버튼 단축기는 Ctrl Enter
SHOW TABLES;             -- 현재 DB 안의 table을 조회
DESC employees;          -- table의 명세를 조회, =DESCRIBE

SELECT emp_no, first_name, hire_date FROM employees LIMIT 5;

SELECT emp_no AS '사번', -- 별칭; Alias
	   first_name AS '이름',
       hire_date AS '입사일'
FROM employees LIMIT 5;  -- 원하는 갯수만큼만 출력하라

번개 버튼(실행) 단축기는 Ctrl Enter이나 오류 발생할 수 있으니 그냥 버튼 누르자

 

데이터 타입
VARCHAR : 가변 문자열 타입, 저장되는 공간을 효율적으로 사용함
CHAR : 고정 문자열 타입, 공간을 효율적으로 사용하지는 못 하나 VARCHAR 보다 연산이 빠름

SMALLINT : 숫자 범위 -32768 ~ 32767, 정수

DROP DATABASE IF EXISTS sqldb;          -- sqldb가 있으면 지워라
CREATE DATABASE sqldb;
USE sqldb;
CREATE TABLE userTBL (
    userID     CHAR(8) PRIMARY KEY,     -- PK
    userName   VARCHAR(10) NOT NULL,
    birthYear  INT NOT NULL,
    userAddr   CHAR(2) NOT NULL,
    mobile1    CHAR(3),                 -- 휴대폰 앞자리
    mobile2    CHAR(8),                 -- 휴대폰 뒷자리
    userHeight SMALLINT,
    userDate   DATE
);

CREATE TABLE buyTBL (
    num          INT AUTO_INCREMENT PRIMARY KEY, -- 순번, PK
    userID       CHAR(8) NOT NULL,               -- FK
    productName  CHAR(6) NOT NULL,
    productGroup CHAR(4),
    productPrice INT NOT NULL,
    buyAmount    INT NOT NULL,
    FOREIGN KEY(userID) REFERENCES userTBL(userID)
);

 

1. 1/17 월 2. 1/18 화 3. 1/19 수 4. 1/20 목 5. 1/21 금
취업 특강 파이썬
환경 설정

(파이참, 아나콘다, 주피터 노트북)
파이썬
데이터 타입

(list, tuple)
파이썬
데이터 타입

(range, string, dictionary, set, bool)
파이썬
사용자 정의 함수,

객체지향,
사용자 정의 클래스
6. 1/24 월 7. 1/25 화 8. 1/26 수 9. 1/27 목 10. 1/28 금
파이썬
사용자 정의 클래스,

사용자 정의 모듈
DB(MySQL)
DBMS,
MySQL 환경 설정,
DB/테이블 생성,
DB 입력·활용,
Index
DB(MySQL)
View,
백업과 복원,
DB 모델링,
관계(PK, FK),
DML,
데이터 타입

DB(MySQL)
 

 

728x90

'멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차 > Database' 카테고리의 다른 글

1/28 금  (0) 2022.01.28
1/27 목  (0) 2022.01.27
1/25 화  (0) 2022.01.25