일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 월간결산
- 블로그
- tensorflow
- 텐서플로
- 파이썬 시각화
- MySQL
- python visualization
- 매틀랩
- 리눅스
- Google Analytics
- Visualization
- matplotlib
- 독후감
- 딥러닝
- Linux
- 티스토리
- MATLAB
- 한빛미디어
- 서평단
- 서평
- Ga
- 한빛미디어서평단
- SQL
- Tistory
- 시각화
- Python
- Blog
- Pandas
- 통계학
- 파이썬
- Today
- Total
목록MySQL (48)
pbj0812의 코딩 일기
0. 목표 - MySQL의 ROLLBACK 명령어 실습하기 1. 실습 1) 테이블 생성 CREATE TABLE pbj_db.user ( ID INT PRIMARY KEY, Name VARCHAR(30) ); 2) 데이터 삽입 INSERT INTO pbj_db.user(ID, Name) VALUES(1, 'a'); INSERT INTO pbj_db.user(ID, Name) VALUES(2, 'b'); INSERT INTO pbj_db.user(ID, Name) VALUES(3, 'c'); 3) 트랜잭션 실행 START TRANSACTION; 4) 세이브 포인트A 지정 SAVEPOINT A; 5) 데이터 삽입 INSERT INTO pbj_db.user(ID, Name) VALUES(4, 'd'); 6) 세..
0. 목표 - MySQL 내에서의 외래키 지정 및 테스트 1. 실습 1) user 테이블 생성 - ID를 pk로 지정 CREATE TABLE pbj_db.user ( ID INT PRIMARY KEY, Name VARCHAR(30) ); 2) 데이터 삽입 INSERT INTO pbj_db.user(ID, Name) VALUES(1, 'a'); INSERT INTO pbj_db.user(ID, Name) VALUES(2, 'b'); INSERT INTO pbj_db.user(ID, Name) VALUES(3, 'c'); 3) 데이터 확인 SELECT * FROM pbj_db.user; - 결과 4) order 테이블 생성 - order_id 를 pk로 지정 - ID를 외래키로 지정(user테이블의 ID와 ..
0. 목표 - MySQL exception을 통한 예외처리 1. 실습 1) 에러 확인을 위한 프로시저 생성 - pbj_db.abcdefghijklmnop 테이블에 현재 시각을 입력하고 출력하는 프로시저 - 실제로 위 테이블은 존재하지 않음 DELIMITER $$ CREATE PROCEDURE pbj_db.exception_test() BEGIN INSERT INTO pbj_db.abcdefghijklmnop(datetime) ( SELECT NOW() ); END $$ DELIMITER ; 2) 에러 확인 call pbj_db.exception_test(); - 결과(1146 에러 발생) 3) 프로시저 삭제 DROP procedure pbj_db.exception_test; 4) 예외처리한 프로시저 생성..
0. 목표 - UPSERT를 이용하여 값을 업데이트하기 1. 실습 1) 테이블 생성 CREATE TABLE pbj_db.upsert_test ( id INT, myname VARCHAR(32) ); 2) 유니크 키 할당 - 이 과정을 생략할 경우 UPSERT 방식이 작동하지 않음 ALTER TABLE pbj_db.upsert_test ADD UNIQUE (id); 3) UPSERT 구문 - pbj_db.upsert_test 테이블에 1, 'a'를 넣고 만약 존재한다면 1, 'abc'로 업데이트 INSERT INTO pbj_db.upsert_test values(1, 'a') ON DUPLICATE KEY UPDATE id=1, myname='abc'; 4) 확인 SELECT * FROM pbj_db.up..
0. 목표 - 외부 csv 파일을 테이블에 넣기 1. 실습 1) 데이터 준비 - import_test.csv 파일 준비 2) 테이블 생성 - 위 파일에 맞게 생성 CREATE TABLE pbj_db.import_test ( id INT, name VARCHAR(32) ); 3) import - 좌측 db명 -> 테이블 -> 오른쪽 클릭 -> Import Wizard 4) csv 경로 설정 5) 존재하는 테이블에 넣을 것인지 새로 생성할 것인지 선택 6) 칼럼 선택 - Next 계속... 7) 확인 SELECT * FROM pbj_db.import_test; - 결과 2. 참고 - How to Import CSV file in MySQL Table by using MySQL Workbench - MySQL..
0. 목표 - ROLLUP 을 사용한 카테고리별 합계 구하기 1. 실습 1) 테이블 생성 CREATE TABLE pbj_db.rollup_test ( year INT NOT NULL, country VARCHAR(32) NOT NULL, product VARCHAR(32) NOT NULL, profit INT NOT NULL ) ENGINE = INNODB; 2) 데이터 삽입 INSERT INTO pbj_db.rollup_test(year, country, product, profit) VALUES(2000, 'Finland', 'Computer', 1500); INSERT INTO pbj_db.rollup_test(year, country, product, profit) VALUES(2000, 'Fin..
0. 목표 - 업데이트 구문 실습 1. 실습 1) 테이블 생성 CREATE TABLE pbj_db.update_test ( id INT NOT NULL, body VARCHAR(32) NOT NULL ) ENGINE = INNODB; 2) 데이터 삽입 INSERT INTO pbj_db.update_test(id, body) VALUES(1, 'a'); INSERT INTO pbj_db.update_test(id, body) VALUES(2, 'b'); INSERT INTO pbj_db.update_test(id, body) VALUES(3, 'c'); 3) 데이터 확인 SELECT * FROM pbj_db.update_test; - 결과 4) 업데이트 실행 UPDATE pbj_db.update_test ..
0. 목표 - SP를 이용하여 주기적으로 현재 시각을 테이블에 저장하기 1. 실습 1) 테이블 생성 CREATE TABLE pbj_db.sp_test ( datetime datetime ) ENGINE = INNODB; 2) 프로시저 생성 - sp_test 테이블에 현재 시각 삽입 DELIMITER $$ CREATE PROCEDURE what_time_is_it_now() BEGIN INSERT INTO pbj_db.sp_test(datetime) ( SELECT NOW() ); END $$ DELIMITER ; 3) 프로시저 구동 CALL what_time_is_it_now(); 4) 확인 SELECT * FROM pbj_db.sp_test; - 결과 5) 스케쥴 이벤트 생성 - 10초에 한 번씩 실행..
0. 목표 - 아래와 같은 데이터에 country 별 profit 순대로 랭크 생성 1. 쿼리 작성(8버전 이후부터 가능) 1) 데이터 삽입 - 링크 참고 2) 본문 - contry 별 profit 순으로 정렬 이후 ROW_NUMBER을 생성 SELECT year, country, product, profit, ROW_NUMBER() OVER(PARTITION BY country ORDER BY profit) AS rnum FROM pbj_db.window_test; - 결과 2. 참고 - Oracle의 그룹별 번호 매기기와 같은 기능 구현하기
0. 목표 - with recursive 구문을 통한 구구단 작성 1. 실습 - MySQL 8 이상만 가능 1) WITH RECURSIVE를 이용 2) gugu 라는 테이블이 n을 가지게 함. 3) n의 기본값을 1로 주고, n이 9보다 작다면 n을 +1씩 늘림(n이 9까지 증가) => 이렇게 되면 gugu 테이블에는 1, 2, 3, 4, 5, 6, 7, 8, 9의 값이 저장되게 됨. 4) cross join 을 걸어 모든 경우의 수를 구함 => 즉, 1, 2, 3, 4, 5, 6, 7, 8, 9 x 1, 2, 3, 4, 5, 6, 7, 8, 9 의 수가 나오게 됨. WITH RECURSIVE gugu(n) AS ( SELECT 1 union all SELECT n+1 from gugu where n <..