일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 독후감
- Tistory
- 리눅스
- Linux
- SQL
- Python
- 블로그
- Ga
- 통계학
- 텐서플로
- 서평
- 딥러닝
- MATLAB
- tensorflow
- Google Analytics
- 매틀랩
- python visualization
- matplotlib
- 티스토리
- 파이썬
- Blog
- Visualization
- 월간결산
- 한빛미디어
- Pandas
- 한빛미디어서평단
- 서평단
- 파이썬 시각화
- 시각화
- MySQL
- Today
- Total
목록ComputerLanguage_Program/SQL (51)
pbj0812의 코딩 일기
0. 목표 - not in 과 left join 연산 시간 비교 실험 - index 변경 / 추가 1. 실습 준비 1) 데이터 및 테이블 생성 (링크) 2) index 확인 - 없음 SHOW INDEX FROM sql_test.df_a; SHOW INDEX FROM sql_test.df_b; 3) 테이블에 index 추가 ALTER TABLE sql_test.df_a ADD INDEX idx (a); ALTER TABLE sql_test.df_b ADD INDEX idx (a); 4) index 확인 - btree 형식 SHOW INDEX FROM sql_test.df_a; SHOW INDEX FROM sql_test.df_b; 2. 실습1 1) not in 을 통한 연산 - 0.084 sec / 0.0..
0. 목표 - not in을 통한 제거와 left join 이후 where 를 통한 제거간의 연산 시간 비교 실험 1. 실습 1) 데이터 생성 - df_a.csv : 10만 - df_b.csv : 1만 import pandas as pd a = [i for i in range(100000)] df_a = pd.DataFrame({'a': a}) df_a.to_csv("./df_a.csv") b = [i for i in range(10000)] df_b = pd.DataFrame({'a': b}) df_b.to_csv("./df_b.csv") 2) 테이블 생성 - Table Data Import Wizard를 통한 테이블 생성 및 삽입 - index 칼럼을 날리고 a만 가져옴 3) 데이터 확인 SELECT..
0. 목표 - MySQL 내 lock 실습 1. 실습 1) 테이블 생성 - InnoDB로 생성 CREATE TABLE pbj_db.lock_test ( ID INT PRIMARY KEY, Name VARCHAR(30) ) engine=InnoDB; 2) 데이터 삽입 INSERT INTO pbj_db.lock_test(ID, Name) VALUES(1, 'a'); INSERT INTO pbj_db.lock_test(ID, Name) VALUES(2, 'b'); INSERT INTO pbj_db.lock_test(ID, Name) VALUES(3, 'c'); 3) 트랜잭션 실행 START TRANSACTION; 4) lock 걸어주기 - ID 가 1인 행을 잠그기 SELECT * FROM pbj_db.loc..
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. 목표 - @rownum을 사용한 카테고리별 순서 매기기 * MySQL 8 이상이면 윈도우 함수 쓰는게 정신에 이로움 1. 실습 1) 테이블 생성 CREATE TABLE pbj_db.rownum_test ( id INT NOT NULL, body VARCHAR(32) NOT NULL ) ENGINE = INNODB; 2) 데이터 삽입 INSERT INTO pbj_db.rownum_test(id, body) VALUES(1, 'a'); INSERT INTO pbj_db.rownum_test(id, body) VALUES(1, 'b'); INSERT INTO pbj_db.rownum_test(id, body) VALUES(2, 'b'); INSERT INTO pbj_db.rownum_test(id, bo..