Database와 MySql ( DataBase_2 )

송성원·2024년 1월 5일
1

Database

목록 보기
2/6
post-thumbnail
post-custom-banner

Database(데이터베이스, db)

SCHEMA(스키마)

  • SCHEMA(스키마): 데이터베이스(Database) 전체 또는 일부의 논리적인 구조를 표현하는 것으로 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다.

  • 누군가는 스키마를 db라고 하는 사람도 있고, 혼란스러운 경우도 존재...

    https://sidorl.tistory.com/10

  • 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합 ( * 메타데이터 : 데이터에 관련된 데이터)

  • 스키마를 상세하게 알아보니 이사이트에서 정리를 잘해놨기에 반복 정독해보길 바람

    https://www.hedleyonline.com/ko/blog/%EC%8A%A4%ED%82%A4%EB%A7%88/

db (생성, 삭제, 조회, 사용)

  • 보통 mysql 활성화 할때 : bin ./mysql -uroot -p (패스워드는 밑에서 입력)
  • 생성 : CREATE DATABASE (database 이름);
  • 삭제 : DROP DATABASE (database 이름);
  • 조회 : SHOW {DATABASES / SCHEMAS};
  • 사용 : USE (database 이름);

db Table (생성)

  • CREATE TABLE topic ( ;없으면 입력 안됨 )
    -> id INT(11) - 제일 많이 사용 NOT NULL AUTO_INCREMENT,
    -> title VARCHAR(100) - 100글자까지 NOT NULL,
    -> description TEXT NULL,
    -> created DATETIME NOT NULL,
    -> author VARCHAR(30) NULL,
    -> profile VARCHAR(100) NULL,
    -> PRIMARY KEY(id) -> 중복 x, id column은 다른 각각의 값들이 존재

  • Query OK -> table 생성 완료(제대로 작동)

빈번한 Error 발생

  • ERROR 1820: You must reset your password using ALTER USER statement .. statement

-> 해결방안 SET PASSWORD = PASSWORD('새로운 비밀번호') -> root 비밀 번호 변경

테이블 생성 후 데이터 (삽입, 읽기, 수정, 삭제)

  1. 삽입(insert)
  • DESC topic(테이블) - topic 테이블 보여준다.
  • INSERT INTO topic (title, description....), VALUES('MYSQL',MYSQL')
    -> topic의 field에 맞는 value값을 뒤에 적어준다.
  1. 읽기(READ)
  • SELECT * FROM topic; - topic으로 부터 모든 행을 출력
  • SELECT id, title, created,author FROM topic - topic으로 부터 나오지 않은 부분은 숨기고 적어논 id,title,created,author 출력
  • SELECT id, title FROM topic WHERE author='egoing' - author가 egoing인 부분만 출력
    • 뒤에 ORDER BY id DESC; (DESC에 따라서 큰순서 대로 출력 5, 2, 1)
    • 그 뒤에 LIMIT 2; - 두개만 제한해서 출력
  1. 수정(UPDATE)
  • UPDATE topic set description='ORACLE is ...', title = 'ORACLE' WHERE id=2
  • WHERE id =2 이기에 id=2인 줄에 있는 description,title을 수정했다.
  1. 삭제(DELETE)
  • DELETE FROM topic WHERE id = 5;(5인 row(행) 삭제)

관계형 데이터 베이스의 필요성 (Join)

  1. 데이터가 중복이 되면 개선이 필요하다는 것이다.
    행이 1억개인데 1000만개가 중복이 된다.. 문제가 있다. 유지보수가 훨씬 편하다...
    위에 표와 밑에 두개로 나누어진 표를 본다면 이해가 된다.
  • 기존의 표는 굉장히 직관적인 데이터를 볼 수 있다.
  • 테이블을 나누게 된다면 데이터를 볼때 비교해서 봐야되는 불편함이 있다.
  • 테이블을 분리하면 필요한 부분을 전체데이터에서 모두 찾아 바꿀필요가 없다.
  • 나누어진 테이블의 한부분을 바꿔 join한다면 위의 장점을 가질 수 있다.

테이블 결합(Join)

  • 밑의 두개의 table을 가지고 생각해본다.
  • SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id; ( SELECT id, title FROM 사용해서 특정 Column 결합 가능)
  • join문을 사용해서 topic에 있는 author_id와 다른 테이블인 author에서 author_id의 값이 같을경우로 하여 join을 하여 하나의 테이블을 생성한다.
  • 이러한 방식이면 위의 전체데이터 중 바꿔야 할 상당한 부분이 존재한다면 필요부분만 바꿔 이문제를 해결할 수 있다.
profile
개발에 도전하는 문과생입니다.
post-custom-banner

0개의 댓글