목록SQL (24)
Don't forget to smile
GUI(Graphical User Interface) : 윈도우에 그래픽으로 제공되는 모든 화면을 통틀어서 이르는 말 tkinter : 엑셀, 한글, 크롬 등의 응용 프로그램과 비슷한 형태의 프로그램을 작성하도록 도와주는 라이브러리 1) 위 코드는 tkinter 라이브러리의 가장 기본적인 화면 구성을 나타낸 코드 Tk()는 기본이 되는 윈도우를 반환하며, mainloop() 함수 내에서 코드를 처리 2) title() 함수는 윈도우의 제목, geometry() 함수는 윈도우의 크기를 결정 1) 문자를 표현할 수 있는 위젯인 라벨(label)을 사용 가능 Label(부모윈도우, 옵션...) 형식으로 사용하며 반드시 pack() 함수를 사용해야 화면에 표시 2) 마우스로 클릭하면 지정된 작업이 수..
1) MySQL에서 soloDB라는 이름의 테스트용 데이터베이스 구축 2) Python을 실행하여 MySQL 연동 관련 모듈인 pymysql을 임포트한 후 데이터베이스와 연동 3) 이어서 데이터베이스에 SQL 문을 실행하는 통로인 커서를 선언한 후 커서를 통해 테이블 생성 이 때 커서이름.execute() 문법을 사용하여 원하는 SQL 문을 실행 3) 데이터 입력 역시 마찬가지로 커서이름.execute() 문법 사용 4) 데이터 입력을 완료하면 데이터베이서에 완전히 저장하는 커밋 작업을 수행해야 함 이후 연결된 데이터베이스를 close 명령을 통해 종료 1) 사용자가 직접 soloDB에 데이터를 입력하는 프로그램 생성 위 코드는 MySQL과 Python의 연동을 이용하여 Python을 통해 데이터..
파이썬(Python) : 프로그래머 귀도 반 로섬이 C언어를 기반으로 제작하여 1991년에 발표한 프로그래밍 언어 다른 프로그래밍 언어에 비해 직관적인 문법으로 배우기 쉬움 빅데이터, 인공지능, 웹 개발 등 다양한 분야에 이용 PyMySQL : MySQL에는 파이썬을 인식하는 기능이 없으므로 PyMySQL이라는 외부 라이브러리 필요 외부 라이브러리 : 프로그램이 제공하지 않는 기능을 외부 개발자가 만들어서 제공하는 추가 기능 1) http://www.python.org에 접속하여 최신 버전 파이썬 다운로드 2) 다운로드 받은 파일을 python.exe to PATH 옵션 설정 후 설치 3) 파일 다운로드 후 cmd 창에서 pip install pymysql 명령을 통해 PyMySQL 라이브러리..
트리거(Trigger) : INSERT, UPDATE, DELETE 문이 작동될 때 자동으로 실행되는 프로그래밍 기능 사용자가 추가 작업을 잊어버리는 실수를 방지하여 데이터의 무결성을 유지 트리거는 테이블에서 DML 문의 이벤트가 발생할 때 작동 1) 트리거 사용을 할 간단한 trigger_table 테이블 생성 2) DELETE 문이 작동한 후에 가수 그룹이 삭제되었다는 메시지를 출력하는 myTrigger 트리거 생성 3) DELETE 문에만 발동하는 트리거이기 때문에 위 코드처럼 INSERT 문과 UPDATE 문에는 반응하지 않음 4) DELECTE 문을 테이블에 적용하자 미리 만들어두었던 트리거가 정상적으로 작동 트리거는 단순 문자열 출력 뿐만 아니라 정보를 백업하는 용도로 사용 가능..
스토어드 함수 : MySQL에서 제공하는 내장 함수 외 직접 제작한 함수 스토어드 프로시저와 모양은 비슷하지만 RETURNS 예약어를 통해 하나의 값을 반환해야 함 커서 : 스토어드 프로시저 안에서 한 행씩 처리할 때 사용하는 프로그래밍 방식 스토어드 함수는 프로시저와 달리 SELECT 문으로 호출하며, 매개변수는 전부 입력 매개변수임 DELIMITER $$ CREATE FUNCTION 스토어드_함수_이름(매개변수) RETURNS 반환형식 BEGIN ~~ RETURN 반환값; END $$ DELIMITER ; 1) 우선 스토어드 함수 사용을 위해 함수 생성 권한 설정 2) 위 코드는 2개의 정수형 변수 number1과 number2를 입력 받아 정수 합계를 반환하는 코드 3) 위 코드는 정..
스토어드 프로시저(Stored Procedure) : SQL에 프로그래밍 기능을 추가하여 프로그래밍 언어와 비슷한 효과를 낸 것 DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름 (IN 또는 OUT) BEGIN ~~ END $$ DELIMITER ; CALL 스토어드_프로시저_이름(); 1) 앞서 작성한 스토어드 프로시저 문법대로 간단한 스토어드 프로시저인 user_proc을 작성 member 테이블에 모든 데이터를 출력하는 명령을 저장하였고, CALL user_proc으로 간단하게 실행 완료 2) 스토어드 프로시저의 삭제는 DROP PROCEDURE 문으로 간단하게 수행 가능 이 때 CREATE 문과 다르게 괄호를 붙이지 않음 스토어드 프로시저는 강화된 ..
CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 (열_이름) [ASC | DESC] DROP INDEX 인덱스_이름 ON 테이블_이름 1) 인덱스 실습을 위해 인터넷 마켓 데이터베이스를 초기화 2) SHOW INDEX 문으로 현재 생성된 인덱스를 검사하면 mem_id에 클러스터형 인덱스 1개만 생성된 모습 확인 3) SHOW TABLE STATUS 문을 이용해 인덱스의 크기 확인이 가능 입력된 데이터는 적지만 최소 단위가 1페이지이므로 그에 해당하는 16KB가 할당된 모습을 볼 수 있음 4) 이미 클러스터형 인덱스가 있으므로 addr의 중복을 허용하는 단순 보조 인덱스를 생성 그 결과, 새로 생성된 인덱스가 정상적으로 확인되는 것을 알 수 있음 단 이 인덱스는 Non_..
균형 트리(Balanced Tree) : 인덱스의 내부 구조로 나무를 거꾸로 표현한 자료 구조 따라서 트리의 제일 상단의 뿌리를 루트, 줄기를 중간, 끝에 달린 잎을 리프라고 함 노드(Node) : 균형 트리 구조에서 데이터가 저장되는 공간 노드는 개념적인 용어이며, MySQL에서는 주로 페이지라고 함 루트 노드 : 노드의 가장 상위 노드 리프 노드 : 가장 마지막에 존재하는 노드 중간 노드 : 루프와 리프 노드를 제외한 모든 노드 페이지 분할 : 균형 트리(인덱스)에서 데이터 변경 작업(INSERT, UPDATE, DELETE) 시 데이터가 나눠지는 현상 이 떄문에 인덱스가 있을 때 데이터 변경 작업은 오히려 느려지게 됨 인덱스 검색 : 클러스터형 인덱스 또는 보조 인덱스를 사용하..
인덱스(index) : 데이터를 빠르게 찾을 수 있도록 도와주는 도구 실무에서는 인덱스 없이 데이터베이스 운영 불가 인덱스는 제대로 만들면 SELECT 문 검색 속도가 매우 빨라지지만 추가적인 공간을 요구하기에 잘못 만들 경우 공간 낭비가 심해짐 클러스터형 인덱스(Clustered Index) : 기본 키로 지정 시 자동 생성되며 테이블에 1개만 생성 가능 보조 인덱스(Secondary Index) : 고유 키로 지정 시 자동 생성되며 여러 개 생성이 가능하지만 자동 정렬되지 않음 1) 인덱스는 테이블의 열 단위로 생성되며, 하나의 열에는 하나의 인덱스만 생성이 가능 위 코드의 경우 생성한 table1 테이블의 기본 키인 col1을 기준으로 인덱스가 생성되었음 이 인덱스는 클러스터형 인덱스이기..
뷰(view) : 데이터베이스 개체의 일종으로 테이블처럼 데이터를 지니지는 않았지만 SELECT 문으로 이루어져 접근 시 실행 바탕화면의 바로가기 아이콘과 비슷한 개념 단순 뷰 : 하나의 테이블과 연관된 뷰 복합 뷰 : 2개 이상의 테이블과 연관된 뷰 CREATE VIEW 뷰_이름 AS SELECT 문; 1) CREATE VIEW 명령을 통해 mem_id, mem_name, addr을 출력하는 SELECT 문을 뷰로 생성 뷰는 일반적으로 이름으로 구분할 수 있게 이름 앞에 v를 삽입 2) 뷰는 가상의 테이블이기 때문에 출력 역시 테이블과 동일하게 SELECT 문을 사용 3) 마찬가지로 테이블처럼 WHERE 문을 사용한 조건식 삽입도 가능 이처럼 뷰는 가상의 테이블 역할을 하기 때문에 보안성..