24-2 SISS/웹

[SISS/웹 스터디] 2학기 5주차 스터디 - MySQL

noname64 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주