ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SISS/웹 스터디] 2학기 5주차 스터디 - MySQL
    24-2 SISS/웹 2024. 10. 6. 12:00

    2학기 5주차 스터디 - MySQL

    : 5주차 09/30 ~ 10/06 [MYSQL] 09 ~ 21

     

    9. CRUD


    • Create, Read, Update, Delete

     

    10. INSERT


    • 데이터 추가(Create)
      • NOW() → 현재 시각
      // 테이블 구조 확인(describe)
      DESC 테이블명;
      
      // 데이터 추가
      INSERT INTO 테이블명 (컬럼1, ...) VALUES(데이터1, ...);
      
      // 입력한 것
      INSERT INTO topic(title, description, created, author, profile) VALUES('MySQL', 'MySQL is ...', NOW(), 'siss', 'sookmyung');
      INSERT INTO topic(title, description, created, author, profile) VALUES('ORACLE', 'ORACLE is ...', NOW(), 'siss', 'sookmyung');
      INSERT INTO topic(title, description, created, author, profile) VALUES('SQL Server', 'SQL Server is ...', NOW(), 'noname', 'dancingneko');
      INSERT INTO topic(title, description, created, author, profile) VALUES('PostgreSQL', 'PostgreSQL is ...', NOW(), 'noname2', 'bobakuri');
      INSERT INTO topic(title, description, created, author, profile) VALUES('MongoDB', 'MongoDB is ...', NOW(), 'noname3', 'sakusakupanda');
      

     

    • 데이터 읽기(Read)
    // 모든 데이터 읽기
    SELECT * FROM 테이블명;
    
    // 입력한 것
    SELECT * FROM topic;

    10. insert

     

    11. SELECT


    • 선택 출력
      • SELECT → 불러올 컬럼 선택
      • FROM → 특정 테이블로부터
      • WHERE → 특정 데이터를 가지고 있는
      • ORDER BY → 정렬
        • DESC → 내림차순
      • LIMIT → 불러올 데이터 최대 개수
      // 선택 출력
      SELECT 컬럼1, ... [FROM 테이블명] [WHERE 컬럼=데이터] [ORDER BY 정렬방법] [LIMIT 개수];
      
      // 입력
      SELECT id, title, created, author FROM topic WHERE author='noname' ORDER BY id DESC LIMIT 2;
      

    11. select

     

    12. UPDATE


      • UPDATE → 수정
      • SET → 변경할 컬럼과 내용
      • WHERE → 변경할 데이터
        • WHERE 설정하지 않을 경우 재앙이 찾아올 것(전부 같아짐) 수정
    // 수정
    UPDATE 테이블명
    	SET 컬럼명=변경값, ...
    	WHERE 키=키값;
    	
    // 입력한 값
    UPDATE topic SET author='noname4', profile='ryotese' WHERE id=2;

    12. update

     

    13. DELETE


    • 삭제
      • DELETE → 삭제
      • FROM → 테이블
      • WHERE → 데이터 삭제
    // 삭제
    DELETE FROM 테이블명 WHERE 키값=삭제데이터;
    
    // 입력(새로운 데이터를 추가하여 삭제함)
    DELETE FROM topic WHERE id=6;

    13. delete

     

    •  

    14. 수업의 정상


    • 관계형 데이터베이스 → 앞으로의 강의에서 “관계형”의 이유를 알아볼 것

     

    15. 관계형데이터베이스의 필요성


    • 관계형 데이터베이스의 필요성
      • 데이터가 중복될 경우
        • 중복 데이터를 모은 새로운 테이블을 만들어 새 테이블로의 연결을 통해 중복을 줄임(여러 테이블에 사용 가능)
        • 동일 값일 경우 동일함을 더욱 직관적으로 식별할 수 있음
        • (참고) MySQL을 이용하면 분산적으로 저장된 데이터를 한 번에 보는 것이 가능 → LEFT JOIN __ ON __ = __;

     

    16. 테이블 분리하기


    16. 테이블 분리하기

     

    17. JOIN


    • JOIN → 분리된 테이블을 하나의 테이블처럼 보여줌
      • 결합 고리 찾기 → topic의 author_id = author의 id
      • comment 테이블 생성 후 join
    // 입력(author_id와 id가 같은 것끼리 같은 행에)
    SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
    SELECT topic.id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
    SELECT topic.id AS topic_id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
    
    // table 'comment' JOIN
    SELECT * FROM comment LEFT JOIN author ON comment.author_id = author.id;
    
    // 원하는 컬럼만
    SELECT comment.id, description, name, profile FROM comment LEFT JOIN author ON comment.author_id = author.id;

    17. join

     

    18. 인터넷과 데이터베이스


    • 데이터베이스 서버
      • 인터넷
        • 컴퓨터 간 연결 및 상호작용
        • 정보 요청과 응답(클라이언트 - 서버)
      • MySQL
        • 설치 시 데이터베이스 클라이언트, 서버 파일이 설치됨(MySQL monitor를 통해 데이터에 접근)

     

    19. MySQL Client


    • MySQL monitor
      • 장점
        • MySQL 설치 시 자동 설치되므로 편리
        • 명령어를 통한 제어(CLI, 어디에서나 사용 가능)
      • 단점
        • 명령어를 모르면 사용 불가
    • 자신에게 맞는 클라이언트 찾기 → 검색
      • 무료/부분 무료/상업

     

    20. MySQL Workbench


    • 설치
      • 검색 → mysql workbench
      • 다운로드 → download now(운영체제 선택)

     

    • 비교 → 두 클라이언트 모두(모니터, 워크벤치) SQL문을 MySQL 서버로 전송함으로써 데이터베이스 서버를 제어
      • mysql monitor → 명령어를 통해 접근
      • workbench → 아이콘을 통해 접근
    -- ./mysql -> mysql monitor(클라이언트) 실행
    -- -uroot -> 사용자
    -- -p -> 비밀번호 입력
    -- -hlocalhost -> (생략 가능) 호스트가 로컬호스트(127.0.0.1)
    ./mysql -uroot -p -hlocalhost

    20. MySQL Workbench - 비교

     

    • 실행
      • create a new schema in the connected server → workbench
      • workbench/create a new table in the active schema in connected server/topic(테이블명 설정)
        • 옵션
          • PK → primary key
          • NN → not null
          • AI → auto increment
      • 생성한 테이블(topic)에 데이터 입력

    20. MySQL Workbench - 실행

     

    • 기타
      • performance → 사용자가 많을 경우 성능 확인 가능
      • data export → 데이터 이전 시 사용

     

    21. 수업을 마치며


    • 추가 학습 주제
      • 관계형 데이터베이스 다루기
        • 공식 언어(SQL)를 잘 익히자
      • 인덱스
        • 탐색을 효과적으로(성능 개선)
      • 모델링
        • 테이블 짜는 방법 익힐 필요성(다양한 데이터를 효율적(중복 없이, 좋은 성능)으로 저장하기 위함)
        • 정규화, 비정규화, …
      • 백업
        • 데이터 유실 위험에 대비
        • mysql dump, binary log, …
      • 클라우드
        • 서버 컴퓨터 임대(원격 제어를 통해)
        • DB 기능 자체에만 집중 가능(백업은 해줌)
        • AWS RDS, Google Cloud SQL for MySQL, AZURE Database for MySQL, …
      • 프로그래밍 언어
        • 데이터베이스를 부품으로하여 자신만의 서비스를 제작하기 위해 필요
        • Python mysql api, PHP mysql api, Java mysql api, …5주
Designed by Tistory.