-
[SISS/웹 스터디] 2학기 5주차 스터디 - MySQL24-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. 테이블 분리하기
- 데이터 입력
- 기존 테이블은 이름 변경
- SQL문 정리 → https://opentutorials.org/course/3161/19521
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주
- 관계형 데이터베이스 다루기
'24-2 SISS > 웹' 카테고리의 다른 글
[SISS/웹 스터디] 2학기 7주차 스터디 - MySQL + PHP (1) 2024.11.09 [SISS/웹 스터디] 2학기 6주차 스터디 - MySQL + PHP (0) 2024.11.03 [SISS/웹 스터디] 2학기 4주차 스터디 - MySQL (1) 2024.09.29 [SISS/웹 스터디] 2학기 3주차 스터디 - PHP (0) 2024.09.22 [SISS/웹 스터디] 2학기 2주차 스터디 - PHP (0) 2024.09.14