1.mysqclient * 파이썬에서는 MySQL 서버와 통신할 수 있는 파이썬용 데이터베이스 커넥터의 종류가 여러가지 있음 * 가장 많이 사용되는 커넥터는 PyMySQL,mysqlclient가 있음 * 사용법은 비슷하나 속도가 빠른 mysqlclient를 권장하고 있음 2. cursor 생성하기 * 하나의 DataBase Connection에 대하여 독립적으로 SQL문을 실행할 수 있는 작업환경을 제공하는 객체 * 하나의 connection에 동시에 한 개의 cursor만 생성할 수 있으며, cursor를 통해 SQL문을 실행하면 실행결과를 튜플 단위로 반환 3.SQL문 결과 가져오기 * fetchall(): 한번의 모든 tuple을 가져옴 . 검색결고가 매우 크다면 메모리 오버헤드(메모리가 꽉 차는것..
인덱스(index) - 테이블의 동작속도(조회)를 높여주는 자료구조 - MYI(MySQL Index)파일에 저장 - 인덱스를 설정하지 않으면 Table full Scan이 일어나 성능이 저하되거나 장애가 발생할 수 잇음 - 조회속도는 빨라지지만 update,insert,delete의 속도는 저하될 수 있음 - MySQL에서는 primary key,unique 제약조건을 사용하면 해당 컬럽에 index가 적용됨0 - 인덱스는 하나 또는 여러 개의 컬럼에 설정할 수 있음 - where 절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하면 성능에 아무런 효과가 없음(where절을 위함) - 가급적 update가 안되는 값을 설정하는 것이 좋음 -> 성능상 update가 자주되는 것을 설정하면 MYI 파일과 값 모..
사용 테이블 1.Product 2.Product_new 트렌젝션(Transaction) ●분할이 불가능한 업무처리의 단위 ●한꺼번에 수행되어야 할 연산 모음 ex) 은행의 전산 트랜젝션 안의 문구는 하나의 명령어 처럼 처리되며 마지막에 처리를 한번더 할 수 있어 유용하다. 예시를 보자 start transaction 블록안의 명령어들은 하나의 명령어 처럼 처리됨 .... 성공하던지, 실패하던지 하나의 결과가 됨 문제가 발생하면 rollback; 정상적인 처리가 완료되면 commit; 문법 commit : 모든 작업들을 정상 처리하겟다고 확정하는 명령어로써, 해당 처리 과정을 DB에 영구적으로 저장 rollback: 작업 중 문제가 발생되어 트렌젹션의 처리 과정에서 발생한 변경사항을 모두 취소하는 명령어 ..
사용 테이블 뷰(view) - 가상의 테이블을 생성 - 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음 ※뷰를 만드는 이유 - SQL 코드를 간결하게 만들기 위함 - 삽입, 삭제, 수정 작업에 제한 사항을 가짐 - 내부 데이터를 전체 공개하고 싶지 않을 때 1.생성하기 ●문법 create view 뷰이름 as 쿼리 ..... 예시 create view vw_member as select userid, username, hp, gender from member; 문제 member 의 userid, username, hp 와 profile의 mbti를 출력하는 view 를 만들고 select 할 수 있는 melon 계정을 생성 풀이 create view vw_memberprof..
DAY 13 2023.03.21 MySQL에 사용자 설정을 알아보겠다. 사용자 추가, DB권한 부여 등 을 알아보겠다. ●사용자 설정 1. 사용자 추가하기 MySQL은 DB를 사용자를 나누고 각각의 권한을 부여하고 관리할 수 있다. 오늘은 그 설정과 권한에 대해 알아보겠다. 로컬(내컴퓨터)에서 접속 가능한 사용자 추가하기 ●문법 create user '사용자명'@localhost' identified by '사용자 비밀번호'; 예시 create user 'apple'@localhost' identified by '1111'; 설정후 MySQL에서 접속하는 방법을 알아보자 1.workbench 접속 2. (+) 버튼 후 connection name은 자유롭게, username은 사용자이름으로 설정한 이름으..
데이터 테이블 member orders 1.concat : 복수의 문자열을 연결해주는 함수 select concat('안녕','하세요') as concat; select address1,address2,address3 from member where userid='orange'; #이것을 하나의 컬럼으로 내보내고 싶다. select concat(address1,' ', address2,' ', address3) as 주소 from member where userid='orange'; 2.left,right : 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴 select left('ABCDEFGHIJKLMN',5); select right('ABCDEFGHIJKLMN',5); select userid,lef..
Day12 . 2023.03.20 테이블 값 member profile product product_new order 1.서브쿼리(sub Query) -다른 쿼리 내부에 포함되어 있는 select 문을 의미 -서브쿼리를 포함하고 있는 쿼리를 외부쿼리라고 부르고,서브쿼리는 내부쿼리라고도 부름 -서브쿼리는 괄호()로 감싸져서 표현 -서브쿼리는 메인쿼리 컬럼 사용이 가능하며,메인쿼리는 서브쿼리 컬럼을 사용하지 못함 -select,where,from, having 절 등에서 사용할 수 있음 select price from product where code='100001'; #100001코드의 상품 가격보다 크거나 같은 상품들의 모든 정보들을 보고싶다. select * from product where price..
Day12 . 2023.03.20 오늘부터는 제목의 KDT를 포함하지 않고 DAY별이 아닌 자료 파트별로 정리해 보겠다. KDT 과정을 수강하며 그날 배운 내용의 확인과 복습을 위해 꾸준히 글을 써보려고 한다. 사전적인 지식보단 알기 쉽게 풀어놓은 내용으로 구성하고자 한다. # 오늘 목표 :큰테이블을 작은테이블로 나누기 # 큰 테이블은 자주쓰는것,작은 테이블은 자주 안쓰는것 모아두는 형태로 #RDBMS 특징 -> 다른 테이블을 쪼개놓고 서로 연관성을 주어 연계 시킬 수 있다.(관계성이 있는 필드 끼리 연결해준다.) 테이블 값 member profile 1.조인 : 테이블을 합쳐서 표현 문법 select 필드명1,필드명2,..... from 테이블1[inner,left,right] join 테이블2 on ..