230410 풀스택 28일차 - DB, 1차프로젝트 계획, sql

황인성·2023년 4월 10일
0
  1. 요구사항 명세서

  2. 수행계획서

  3. ERD설계

(기획 진행)

1차프로젝트 때는 시연은 DB로만 해도 충분

  1. 1차 DB회원, 데이터리스트 쯤

  2. 역량되시면 스캐너 => DB에 접근해서 불러오는 정도, 그게 힘들면 쿼리문 써서 디비 불러오는
    (수업때 선생님이 내용 다루실 예정)
    예)
    회원목록 보여주고
    id / 작가 / 명언

데이터가 어느경로로 접근해서 어떻게 쓰인다 정도

  1. 초급프로젝트 DB설계와 커멘드 앱(데이터 설계와 접근)
  2. 중급프로젝트 사용자단 서비스 구현(서비스)
  3. 최종프로젝트 관리자 서비스 구현(시스템)

우리조는 양식 나오고 DB설계 한 번같이 해보기로
실제 구현하는건 수업 진도 나가야 가능한 일이라

양식지는 구글독스로 전달해주실 예정이고

시연땐 mySQL CLI 창에서 시연할거라 쿼리문 사용해서 시연할거면 다 알고있어야됨
SQLyog를 사용하지 않을 계획임.

INNER JOIN

CREATE DATABASE a7;

USE a7;

CREATE TABLE emp (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),
    regDate DATETIME NOT NULL,
    `name` CHAR(100) NOT NULL,
    deptName CHAR(100) NOT NULL
);

CREATE TABLE dept (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),
    regDate DATETIME NOT NULL,
    `name` CHAR(100) NOT NULL UNIQUE
);


SHOW TABLES;

SHOW DATABASES;

USE a7;
SHOW TABLES;
DESC emp;
DESC dept;

INSERT INTO emp 
SET regDate = NOW(),
`name` = '홍길동',
deptName = '홍보';

INSERT INTO emp
SET regDate = NOW(),
`name` = '홍길순',
deptName = '홍보';

INSERT INTO emp
SET regDate = NOW(),
`name` = '임꺽정',
deptName = '기획';



INSERT INTO dept
SET regDate = NOW(),
`name` = '홍보';


INSERT INTO dept
SET regDate = NOW(),
`name` = '기획';

SELECT * FROM emp;
SELECT * FROM dept;


# 부서명 변경(홍보 => 마케팅)

UPDATE dept
SET `name` = '마케팅'
WHERE `name` = '홍보';

UPDATE dept
SET `name` = '홍보'
WHERE `name` = '마케팅';

UPDATE emp
SET `name` = '홍보'
WHERE `name` = '마케팅';

ALTER TABLE emp ADD COLUMN deptId INT UNSIGNED NOT NULL;

UPDATE emp SET deptId = 1 WHERE deptName = '홍보';

UPDATE emp SET deptId = 2 WHERE deptName = '기획';

ALTER TABLE emp DROP COLUMN deptName;

SELECT * FROM emp;
SELECT * FROM dept;

SELECT * 
FROM emp
INNER JOIN dept
ON emp.deptId = dept.id;

# ON키워드를 이용하여 사원테이블에 부서id값(emp.dpetId)과 부서테이블에 id값(dept.id)이 일치하는부분만 보여줘


SELECT emp.id AS `사원번호`, emp.name AS `사원이름`, dept.name AS `부서명` # Name으로 컬럼을 나타내주겠다.
FROM emp
INNER JOIN dept
ON emp.deptId = dept.id;

SELECT emp.id AS `사원번호`, emp.name AS `사원이름`, dept.name AS `부서명` # Name으로 컬럼을 나타내주겠다.
FROM emp
INNER JOIN dept
ON emp.deptId = dept.id
ORDER BY emp.id ASC;
# 순방향 정렬도 가능(DESC로 역방향 정렬도 가능.)

SELECT emp.id AS `사원번호`, emp.name AS `사원이름`, dept.name AS `부서명` 
FROM emp
INNER JOIN dept
ON emp.deptId = dept.id
ORDER BY `부서명`ASC, `사원이름` DESC
LIMIT 3;
# LIMIT문도 붙여서 사용 가능.

숙제(아래 내용을 차넘버, 차색깔, 차종 별로 데이터를 나열해보기)

CREATE DATABASE a9;
USE a9;

CREATE TABLE car (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),
    typeid INT NOT NULL,
    color CHAR(100) NOT NULL
    );
    
SELECT * FROM car;

INSERT INTO car
SET typeid = 2,
`color` = 'red';

INSERT INTO car
SET typeid = 1,
`color` = 'white';

INSERT INTO car
SET typeid = 5,
`color` = 'black';

INSERT INTO car
SET typeid = 3,
`color` = 'green';

INSERT INTO car
SET typeid = 4,
`color` = 'white';

DESC car;

CREATE TABLE `type` (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),    
    `name` CHAR(100) NOT NULL
    );
SELECT * FROM `type`;

DESC `type`;

INSERT INTO `type`
SET `name` = 'audi';

INSERT INTO `type`
SET `name` = 'bmw';

INSERT INTO `type`
SET `name` = 'benz';

INSERT INTO `type`
SET `name` = 'kia';

INSERT INTO `type`
SET `name` = 'tesla';

SELECT * FROM car
INNER JOIN `type`;

정답.

SELECT car.typeid AS `차넘버`, car.`color` AS `차색깔`, type.name AS `차이름` # Name으로 컬럼을 나타내주겠다.
FROM car
INNER JOIN `type`
ON car.id = type.id;
profile
문제 해결을 위해 끊임없이 파고드는 걸 좋아합니다.

0개의 댓글