2023.11.16 3일차 회고

  • 3일차 공부

- 전날 수업내용을 복습

- DBMS(Database Management System) 공부

- MariaDB 특징 공부

- SQL문에 대한 전체적인 틀 공부

- 테이블(열, 행, 값) 공부

- 데이터베이스 구축 실습(mariaDB 및 workbench 설치)

(workbench 및 powershell 활용하여 SQL구문 실습)

- DDL-CREATE, ALTER, DROP 공부 및 실습

- DML-INSERT, UPDATE, DELETE, SELECT 공부 및 실습

- 프로그래머스 MySQL '어린동물찾기' 코딩테스트 풀이(SELECT문 관련)

 

금일부터 데이터베이스 공부를 시작하였다. 백엔드 개발자 필수 덕목이 자바 프로그래밍 능력, 스프링 부트 활용능력, DB 능력이라고 한다. 기존 엔지니어로서 DB를 다루었을 때에는 HeidiSQL로 DB를 많이 다루었기 때문에 SQL구문을 사용할 일이 거의 없었다. 그렇지만 백엔드 엔지니어로서 실력을 높이기 위해서는 SQL구문이 익숙해져야 한다는 생각이 들었다.오늘부터 8일동안 DB공부를 진행할텐데 이번 기회에 DB SQL 실력을 많이 올려야겠다.

 

자바 프로그래밍 공부까지 2주정도 시간이 남아서 자바 공부를 예습하는게 좋을것 같다는 생각이다. 자바 기초 문법 강의를 듣긴했지만 막상 프로그래머스 입문문제도 현재는 버겁다. 코테문제도 풀어보ㅗ고 자바 기초문법 또한 잊지 않게 예습하면서 꾸준히 공부해야겠다.

 

  • 3일차 공부 메모

2일차 수업 복습 진행

(3일차 수업 복습 완료)

 

DBMS란

  • Database Management System
  • 관계형 데이터 베이스 : Mysql, MariaDB, Oracle, Postgres 등
  • No SQL : MongoDB, Redis 등
  • 이중 우리는 관계형 데이터 베이스에 대한 학습을 할 예정
    • Mysql, Oracle, MariaDB
    • Oracle → 기본이 유료(성능은 제일좋다)
    • mysql → 무료, 상업용 유료, 완전한 오픈소스X
    • mariadb → 무료, 오픈소스
  • 관계형데이터베이스(RDB)
    • 서로 관계를 갖는 데이터들의 집합
    • 테이블, 행, 열 등의 구조로 데이터가 구조

MariaDB

  • MariaDB는 관계형데이터베이스
  • MariaDB는 MySQL의 포크(fork→복사본)로 2009년에 시작되었고, MySQL의 기본적인 특성 및 구조를 그대로 유지하면서 일부 차이점과 추가 기능을 포함
  • MariaDB의 특징
    • MariaDB는 완전한 오픈소스
      • 지속적인 발전 가능성
      • 사용자 입장에서 무료
    • 뛰어난 성능 및 최적화
    • 아직까지 높은 점유율은 아니지만, mysql의 오라클 인수 이후 비 오픈소스 됨에 따라 mysql의 자리를 대체할 것으로 예상

DBMS == 데이터베이스 매니지먼트 시스템

스키마 == 데이터베이스

한 스키마안에 여러가지 테이블이 들어갈 수 있음

세로 한줄 == 열 == 컬럼, 컬럼의 종류 = 속성

테이블 값 하나하나 == value == 값

 

SQL문

  • DBMS에서 사용하는 프로그래밍 language → SQL
  • CRUD(일반용어로도 사용된다)
    • Create, Read, Update, Delete의 약어
    • 데이터베이스 생성, 조회, 수정, 삭제를 의미
  • SQL 구문도 위의 목적에 맞게 크게 세 가지로 구분
    • DDL
      • Data Definition Language
      • 데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경
      • CREATE, ALTER, DROP
    • DML
      • Data Manipulation Language
      • 데이터베이스에 저장된 데이터를 처리하거나 조회
      • INSERT, UPDATE, DELETE, SELECT 등
    • DCL
      • Data Control Language
      • 사용자 권한 부여 등
      • GRANT, REVOKE 등

테이블

  • 열(column)
    • 열은 필드(field) 또는 속성(attribute) 이라고 정의할 수도 있음
    • 다만, 구체적으로는 속성은 컬럼의 성격 그 자체를 의미
    • 필드는 컬럼의 구체적인 데이터 하나하나의 개별 데이터 항목을 의미
  • 행(row)
    • 튜플(tuple) 또는 레코드(record)
  • 값(value)
    • 데이터라고도 칭함

PK를 지정하면 Notnull 하고 유니크가 설정된다.

FK(외래키)

 

=====데이터베이스 구축 실습=====

mariaDB 및 workbench 설치

  • mariaDB window download 경로

https://mariadb.org/download/?t=mariadb&p=mariadb&r=11.3.0&os=windows&cpu=x86_64&pkg=msi&m=blendbyte

  • workbench download 경로

https://dev.mysql.com/downloads/workbench/

 

DDL - CREATE

CREATE TABLE author(id INT, name VARCHAR(255),
email VARCHAR(255), password VARCHAR(255), test1 VARCHAR(255), PRIMARY KEY (id));
  • primary key를 걸게되는 컬럼에 대해서는 unique, not null 제약조건 부여
CREATE TABLE posts(**id INT PRIMARY KEY**, title VARCHAR(255), content VARCHAR(255), author_id INT, **FOREIGN KEY(author_id)**
REFERENCES author(id));
  • 외래키가 설정되면, post테이블 데이터의 생성, 삭제, 수정에 대해 제약이 발생
    • 만약 not null 조건이 있다면 author_id가 데이터는 post에 생성불가
    • author가 삭제될때 post에 데이터가 남아있으면 author 삭제불가
    • author의 id가 수정될 때 post에 데이터가 남아있으면 author수정 불가
  • 삭제 수정에 대해서는 기본적으로 제약(restrict제약)을 갖고있으나 옵션을 줘서 변경가능

DDL - ALTER

  • 테이블 정보 변경
  • 테이블 이름 변경
    • ALTER TABLE 테이블명 RENAME 새로운테이블명;
    • ALTER TABLE posts RENAME post;
  • 컬럼 추가 (Add)
    • ALTER TABLE 테이블명 ADD COLUMN 컬럼명 자료형 [NULL 또는 NOTNULL]
    • ALTER TABLE author ADD COLUNM role VARCHAR(50);
  • 필드타입 변경(Modify) 덮어쓰기가 됌으로 기본적인 제약조건도 넣어주어야 함.
    • ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 타입 [제약조건]
    • ALTER TABLE author MODIFY COLUMN name VARCHAR(100) NOT NULL;
  • 컬럼 이름 변경 ⇒content →contents
    • ALTER TABLE 테이블명 CHANGE COLUMN 기존컬럼명 새로운컬럼명 타입 [제약조건]
    • ALTER TABLE post CHANGE COLUMN content contents VARCHAR(255);
  • 컬럼 삭제 ⇒ test1 컬럼삭제
    • ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
    • ALTER TABLE author DROP COLUMN test1;

DDL - DROP

  • 테이블 삭제
    • DROP TABLE 테이블이름
  • 테이블의 데이터만을 지우고 싶을 때
    • DELETE FROM 테이블이름
    • TRUNCATE

DML - INSERT

  • INSERT
    • 테이블에 새로운 레코드를 추가
    • INSERT INTO 테이블이름(name, email, password, ..) VALUES(데이터값1, 데이터값2, 데이터값3,..)
    • 예제
      • insert into author(id, name, email) values(1, ‘kim’, ‘kim@naver.com’);
      • select * from author;
    • MariaDB에서 문자열은 쌍따옴표가 아닌, 따옴표(’)로 감싼다.
    • MariaDB에서 명령문은 대소문자를 구분X 그러나 대문자가 관례
      • 테이블명, 컬럼명은 소문자가 관례
      • 테이블명은 대소문자를 구분

===== INSERT 실습 =====

 

author 데이터 5개 추가

  • address는 데이터 넣지 말것

post 데이터 5개 추가

  • 2개는 저자가 있는 데이ㅓ터
  • 2개는 저자가 비어있는 데이터 → author_id에 NOT NULL 조건 없다는 사실 확인
  • 1개는 저자가 author테이블에 없는 데이터 추가 → 에러 발생 확인하기

DML - UPDATE

  • 테이블 레코드의 내용을 수정
  • UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, … WHERE 필드이름=데이터값
  • 만약 WHERE 절을 생략한다면, 해당 테이블의 모든 레코드값이 위 설정대로 수정되므로 유의
  • 예제
    • update author set email=’abc2@test.com’ where id=1;
  • 여기서 =의 쓰임새는 2가지
  • where문 뒤에 나오는 비교문은 java기준으로 ==로
  • 어떤 값을 set할때도 =을 사용하여 대입 (java =과 동일)

DML - DELETE

  • DELETE FROM 테이블이름 WHERE 필드이름=데이터값
  • WHERE 절을 생략하면, 해당 테이블에 저장된 모든 데이터가 삭제
  • 예시)
    • DELETE FROM author WHERE author_id=5;

===== DML - UPDATE, DELETE 실습 =====

  • author데이터 중 id가 4인 데이터를 email을 abc@naver.com, name을 abc로 변경
  • post에 글쓴적이 없는 author 데이터 1개 삭제
  • post에 글쓴적이 있는 author 데이터 1개 삭제 →에러 → 조치 후 삭제

테이블간에 참조관계를 잘 파악하는 것이 중요하다.

테이블간 구조화 하는것이 중요..!

DML - SELECT

  • SELECT * FROM 테이블이름 [WHERE 조건]
  • 모든 필드 선택
    • SELECT * FROM author;
  • 예제
    • select * from author where id=1;
    • select name, email from author where id=1;
    • select * from author where id >1;
    • select * from author where id > 1 AND name = ‘kim’;

'한화시스템 백엔드 SW교육' 카테고리의 다른 글

2023.11.20 5일차 회고  (3) 2023.11.21
한화시스템 BEYOND 캠프 3기 1주차 회고  (3) 2023.11.20
2023.11.17 4일차 회고  (2) 2023.11.17
2023.11.15 2일차 회고  (2) 2023.11.15
2023.11.14 1일차 회고  (4) 2023.11.14