본문 바로가기

데이타베이스41

[mysql8] Ubuntu22에 mysql8 파일로 설치하는 방법 Ubuntu22에 mysql을 설치 할 때 보통 apt 를 이용하는데 인터넷이 연결되지 않는 환경에서 mysql을 설치해야 하는 경우가 있습니다. Ubuntu 22 기준에서 먼저 설치 파일을 다운로드 합니다. 다음의 사이트에서 DEB Buldle 을 다운로드 합니다. https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Version: 8.2.0 Innovation 8.0.35 5.7.44 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Serve.. 2023. 11. 13.
[MySQL] 외래키 제약으로 인한 오류가 발생할 때 체크 끄는 방법 Cannot change column used in a foreign key constraint 오류 처리 테이블의 칼럼 속성을 수정할 때 Cannot change column used in a foreign key constraint 오류가 발생하는 경우가 있습니다 이 오류가 발생하는 경우는 수정하고자 하는 테이블의 속성에 연결되 외부키의 속성이 변경되지 못해서 발생합니다. 이 경우 다음과 같이 해당 옵션을 끄고 작업을 처리할 수 있습니다. SET FOREIGN_KEY_CHECKS = 0; -- 수정 SET FOREIGN_KEY_CHECKS = 1; 2022. 12. 29.
[mariadb] DB: Index column size too large. The maximum column size is 767 bytes. 오류 수정 방법 마리아DB에서 테이블을 만들 때 다음과 같은 오류가 발생하는 경우가 있습니다. DB: Index column size too large. The maximum column size is 767 bytes. 기본 DB의 인덱스 크기가 767 byte 까지만 가능한데, DB의 언어 설정이 utf8인경우 1글자당 3byte, utf8mb4일 경우 4byte 가 필요하기 때문에 varchar(255) 인경우 4byte * 255 = 1020 byte 가 되어 오류가 발생합니다. https://www.popit.kr/mysql-index-column-size-too-large-error/ mysql에서 Index column size too large. 에러 메시지에 대한 처리 | Popit MySQL에 테이블을.. 2021. 7. 1.
[mariadb] mariadb the server time zone value 'kst' is unrecognized or represents more than one time zone 오류 마리아 DB 를 설치하고, 접속할 때 이런 오류가 발생하는 경우가 있습니다. 이는 타임존이 설정되지 않아서 발생하능 오류입니다. mariadb the server time zone value 'kst' is unrecognized or represents more than one time zone 이때는 마리아 DB 설정에 타임존을 추가합니다. /etc/my.cnf 설정에 다음의 값을 추가합니다. [mysqld] default-time-zone='+9:00' 2021. 4. 12.
[mariadb] 마리아 DB 설치 와 한글 설정 CentOS에서 마라이 DB를 설치하고, 한글 설정을 하는 방법은 다음과 같습니다. 사용자, 데이터베이스를 생성하고 사용자에게 데이터베이스의 접근권한을 주는 방법은 다음과 같습니다. 주의할 점은 한글을 설정하기전에 생성한 데이터베이스와 테이블은 기존에 생성한 언어 설정을 가져가이 때문에 새로 생성하거나, 데이터베이스, 테이블의 언어 설정을 변경해야 합니다. 2020. 12. 23.
[postgres] 존재하는 테이블에 대해서 ERROR: relation "version" does not exist. 오류가 발생할 때 postgres에서 테이블 목록에 존재하는 테이블을 조회할 때 테이블이 존재하지 않는다고 나올때가 있습니다. postgres=> \dt List of relations Schema | Name | Type | Owner --------+---------------------------+-------+---------- public | VERSION | table | hiveuser -- 조회 안됨 postgres=> select * from VERSION; ERROR: relation "version" does not exist LINE 1: select * from VERSION; ^ -- 조회 됨 postgres=> select * from "VERSION"; VER_ID | SCHEMA_VERSIO.. 2020. 11. 2.
[MariaDB] CentOS에 MariaDB 설치 및 사용자 생성 방법 CentOS에서 마리아DB를 설치하고 사용자 권한을 설정하는 방법은 다음과 같습니다. 설치 sudo yum install mariadb-server # 시작 sudo systemctl start mariadb # 종료 sudo systemctl stop mariadb 사용자 권한 설정 CREATE USER 'user_name'@'%' identified by 'password'; CREATE USER 'user_name'@'localhost' identified by 'password'; CREATE DATABASE db_name; grant all privileges on db_name.* to 'user_na.. 2020. 10. 5.
[postgres] postgres 데이터베이스 명령어 postgres의 명령어를 알아보겠습니다. 사용자 목록 조회: \du postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- a | | {} h | | {} o | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} 데이터 베이스 목록 조회: \l postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privile.. 2020. 9. 13.
[MySQL][Error] Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 오류 MySQL 에서 파일의 데이터를 Load할 때 1290 에러가 발생하는 경우가 있습니다. MySQL 8에서는 로컬의 데이터를 입력할 때 보안상의 이유로 지정한 장소의 파일만 업로드가 가능합니다. 에러코드 Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 샘플 코드 # Load 가능한 폴더 확인 명령 SHOW VARIABLES LIKE 'secure_file_priv'; # 데이터 로드 명령 LOAD DATA INFILE "C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\sample.csv" .. 2019. 11. 19.
[ADsP] 데이터분석 준전문가(ADsP) 22회 시험 후기 이번 22회 시험에 아슬아슬하게 합격해서 ADsP 22회 시험 후기 및 ADsP 자격증 공부방법을 정리하였습니다. 시험 준비 데이터분석 준전문가 시험은 데이터 이해, 데이터 분석 기획, 데이터 분석 3과목으로 구성되어 있습니다. 21회 시험부터 기출 경향이 바뀌어서 기존 기출문제와 출제되는 문제의 경향이 다르기 때문에, 기출문제만 봐서는 합격이 어렵습니다. 기출문제와 비슷한 문제가 거의 나오지 않기 때문에 통계학과 데이터베이스에 대해 잘 모르시는 분은 한달 정도 공부하는 것이 좋을 것 같습니다. 공부방법은 1장 데이터 이해는 데이터, 데이터베이스, 데이터사이언스, 빅데이터의 개념에 대해서 알아두는 것이 좋습니다. 2장 데이터 분석 기획은 방법론에 관한 내용이 많아서 외워야하는 부분이 많습니다. 그래서 시.. 2019. 10. 2.
[ADsP] 국가 공인 데이터 분석 준전문가 자격 시험 일정 및 개요 데이터 분석 준전문가 자격시험을 준비하게 되면서 자격증 관련 기본 사항과 관련 정보를 정리하였습니다. 2019년 시험일정 시험 과목및 내용 출제 문항 및 배점 데이터 분석 준전문가 자격증 안내 => 바로가기 데이터 자격 시험일정 => 바로가기 2019. 3. 2.
[mysql][snippet] Load Data를 이용하여 파일 데이터 입력 MySQL에서 벌크 데이터를 테이블에 입력하는 방법으로 LOAD 명령을 제공한다. 상세한 내용은 아래의 공식 홈페이지에서 확인할 수 있다. 간단하게 데이터를 입력하는 방법은 다음과 같다. MySQL의 기본 구분자인 탭으로 칼럼이 구분되어 있는 데이터 파일이 있다고 하면 다음과 같이 입력하면 된다. - bukl.csv 파일을 db1.table2 테이블에 입력LOAD DATA LOCAL INFILE 'bulk.csv' INTO TABLE db1.table2; https://dev.mysql.com/doc/refman/5.7/en/load-data.html 2017. 8. 24.
[DB] NL(Nested Loop)조인, 소트머지 조인(SMJ), Hash 조인 비교 - 랜덤 액세스 위주의 조인 - 한레코드씩 순차적으로 진행 - 테이블의 크기가 작을수록 좋음 - 온라인 프로그램에서 사용할 때 좋음 - Driving 테이블의 크기가 가장 많은 영향을 준다. - 조인하기전에 정렬 - 넓은 데이터 처리에 유리함 - 정렬에 필요한 데이터가 많아지면 메모리대신 디스크를 사용하므로 성능이 떨어질 수 있음 - 조인 조건의 인덱스 유무에 영향을 받지 않지만 Sort 가 필요하다. - 한쪽 테이블의 크기가 작을수록 좋음 - NL의 랜덤액세스, SMJ의 정렬작업에 대한 부담으로 등장 - 인덱스를 사용하지 않음, 인덱스 대신 Hash 함수를 사용 - 동등조인(=) 에서만 사용 - 수행 빈도가 높은 OLTP성 작업에서는 불리함 - 수행 빈도가 낮고, 쿼리 수행시간이 오래 걸리는, 대용량 .. 2017. 3. 28.
[MySQL] Cannot convert value '0000-00-00 00:00:00' from column 12 to TIMESTAMP 오류 처리 Cannot convert value '0000-00-00 00:00:00' from column 12 to TIMESTAMP. MySQL과 JDBC 를 이용하여 DB의 데이터를 처리하다보면 위와 같은 오류를 보는 경우가 있다. 원인은 MySQL의 timesamp 값이 '0000-00-00 00:00:00'이 입력되고, 이를 Java 형식으로 변환하는 과정에서 Java의 Date 값은 '0000-00-00 00:00:00' 을 지원하지 않기 때문에 발생한다. MySQL은 날짜형식을 입력하는 중 변환과정에서 오류가 발생하면 '0000-00-00 00:00:00' 으로 입력하고,Warn 을 발생시킨다. 이 때문에 Java 변환 과정에서 오류가 발생한다. 이를 해결하는 방법은 JDBC 연결 옵션에 zeroDa.. 2017. 3. 10.
[mysql] datetime 객체사이의 시간차 계산을 위한 TIMESTAMPDIFF() 함수 DB에 저장된 datetime 객체사이의 시간차를 계산하기 위해서는 TIMESTAMPDIFF() 함수를 이용하여 계산 할 수 있다. 함수의 사용방법은 다음과 같다. * unit에는 SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR 를 입력할 수 있다. mysql> select TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2) > from tbl; select id ,TIMESTAMPDIFF(SECOND, created_time, end_time) as a1 ,TIMESTAMPDIFF(MINUTE, created_time, end_time) as a2 ,TIMESTAMPDIFF(HOUR, created_time,.. 2017. 1. 20.
[mysql] 쉘 스크립트에서 mysql 쿼리 실행하기 쉘 스크립트에서 mysql 쿼리를 실행하는 방법은 두가지 방법이 있다. 첫번째는 -e 옵션을 이용하여 처리하는 방법이 있다. mysql -e "select * from TABLE;"mysql -Bse "select * from TABLE;" [user ~]$ mysql -e "select * from TABLE;"+--------+----------------+-----------------------------+| VER_ID | VERSION | COMMENT |+--------+----------------+-----------------------------+| 1 | 0.1.0 | TEST |+--------+----------------+-----------------------------+ .. 2017. 1. 17.
[MySQL][shell] 쉘 스크립트에서 mysql 명령어 사용하기 쉘 스크립트에서 mysql 명령어를 사용하는 방법은 -Bse 옵션이나, -e 옵션을 이용하면 된다. 사용하는 방법은 두개의 옵션이 동일하다. 하지만 결과가 아래와 같이 약간 다르게 나타난다. 결과값 방법에 따라 사용하면 되겠다. mysql -e "select * from TABLE;"mysql -Bse "select * from TABLE;" [user ~]$ mysql -e "select * from TABLE;"+--------+----------------+-----------------------------+| VER_ID | VERSION | COMMENT |+--------+----------------+-----------------------------+| 1 | 0.1.0 | TEST |.. 2016. 11. 7.
[MySQL] 원격 서버에 접속하기 위한 명령어 원격지에 생성된 mysql 서버에 접속하기 위한 명령어는 다음과 같다. -h : 서버 주소-P : 서버 포트-u : 사용자명-p : 사용자 암호 mysql [db_name] : 지정한 db를 use 하는 상태로 접속. mysql -hDB_URL -PDB_PORT -uDB_USER_NAME -pDB_USER_PASSWORD DB_NAME 2016. 11. 7.
[MySQL] 파일의 데이터 테이블에 입력하기(load data) MySQL 에서 파일의 데이터를 테이블에 입력하는 명령은 load data 를 이용한다. 아래와 같이 사용하면 된다. -- DB 이용 use test; -- 테이블 생성 create table import_table ( id varchar(20), name varchar(200), cnt numeric ); -- 파일의 데이터 테이블로 입력 load data local infile 'C:\\Users\\ADMIN\\Desktop\\preload_appid.log' into table test.import_table; -- 조회 select * from import_table; 2015. 9. 14.
[SQLD] 2015.09.05 18회 SQLD 시험 후기 일단 시험문제는 인터넷에서 구할 수 있는 기출문제와 유사하게 나왔다. 공부를 하지 않으면 어려울 수 있으므로 되도록 2주 전부터 공부를 하는게 좋다. http://wiki.gurubee.net/pages/viewpage.action?pageId=27426887 위의 연구회의 정리자료를 정독하고, 연습문제는 꼭 풀어보도록 하자. 연습문제에서 그대로 출제 된게 몇문제 있었다. 즉, 연습문제와 비슷한 형태로 나오므로 문제 유형을 파악하면 떨지 않고 시험을 칠 수 있다. http://bysql.net/index.php?mid=W201102S 여기의 연습문제도 꼭 풀어보자. 정규화, 조인(NL, SMJ, Hash) 관련 문제는 꼭 나오므로 차이를 꼭 외워서 가야한다. 1차, 2차, 3차 정규화의 차이과 조인간의 .. 2015. 9. 8.
[SQLD] SQLD & SQLP 정리 조인 NL 조인 - 랜덤 액세스 위주의 조인 - 한레코드씩 순차적으로 진행 - 테이블의 크기가 작을수록 좋음 - 온라인 프로그램에서 사용할 때 좋음 - Driving 테이블의 크기가 가장 많은 영향을 준다. SMJ - 조인하기전에 정렬 - 넓은 데이터 처리에 유리함 - 정렬에 필요한 데이터가 많아지면 메모리대신 디스크를 사용하므로 성능이 떨어질 수 있음 - 조인 조건의 인덱스 유무에 영향을 받지 않지만 Sort 가 필요하다. Hash 조인 - 한쪽 테이블의 크기가 작을수록 좋음 - NL의 랜덤액세스, SMJ의 정렬작업에 대한 부담으로 등장 - 인덱스를 사용하지 않음, 인덱스 대신 Hash 함수를 사용 - 동등조인(=) 에서만 사용 - 수행 빈도가 높은 OLTP성 작업에서는 불리함 - 수행 빈도가 낮고, .. 2015. 9. 4.
[SQLD] SQLD 공부를 위한 참고 자료 및 사이트 DB가이드넷 - 데이터모델링의 이해 구루비 SQLP 연구회 - http://wiki.gurubee.net/pages/viewpage.action?pageId=27426887 BySQL넷 SQLD 연구회 - http://bysql.net/index.php?mid=W201102S SQL 전문가 되어보기 WikiDocs - https://wikidocs.net/book/159 2015. 8. 21.
[오라클] 오라클 11g Expressing 버전 설치후 시작하기 오라클 11g 버전 설치후 사용자를 생성하고 DB 에 접속하는 방법은 다음과 같다. 1. 시스템 권한 접속 * 패스워드는 설치시에 입력한 패스워드 connect system/password; 2. tester 유저 생성 * 패스워드는 따로 설정 create user tester identified by password; 3. tester 유저에게 권한 생성 * 권한 생성 grant dba, resource, connect to tester; 4. tester 유저로 접속 connect tester/password; 사용중인 데이터베이스명 확인 select name from v$database; [참고] http://stackoverflow.com/questions/27357493/how-to-create.. 2015. 8. 21.
[개념] 뷰머징 사람의 눈으로 볼 때는 쿼리를 블록화하는 것이 더 읽기 편하지만 최적화를 수행하는 옵티마이저의 시각에서는 더 불편하다. 그러므로 옵티마이저는 쿼리 블록을 풀어내려는 습성을 갖는다. 쿼리 블록을 풀어내어서 기존의 쿼리와 합쳐서 최적화를 진행하는 것이다. 오라클 힌트: merge, no_merge 뷰안에 rownum을 사용하면 뷰머징을 방지하는 효과가 있다. 2015. 8. 21.
[MySQL] 시작시간과 종료시간의 차이 비교 함수, TIMEDIFF 시작시간부터 종료시간까지의 경과시간(elapsed)를 확인하기 위한 TIMEDIFF 함수 사용 select start_time, end_tiem, timediff(start_time, end_time) from table ; -- result 2015-08-02 00:50:14 | 2015-08-02 09:04:05 | 08:13:51 2015-08-03 00:49:30 | 2015-08-03 08:39:50 | 07:50:20 2015-08-04 00:54:36 | 2015-08-04 08:54:46 | 08:00:10 2015-08-05 00:48:21 | 2015-08-05 01:22:44 | 00:34:23 2015. 8. 5.
[ORACLE] 파티션(Partiton) 파티션(Partition) 파티셔닝은 테이블 또는 인덱스 데이터를 파티션 단위로 나누어 저장하는 것을 말한다. 테이블을 파티셔닝하면 파티션 키에 따라 물리적으로는 별도의 세그먼트에 데이터를 저장하며, 인덱스도 마찬가지다. - 관리적 측면: 파티션 단위 백업, 추가, 삭제 변경 - 성능적 측면: 파티션 단위 조회 및 DML 수행, 경합 및 부하 분산 테이블 파티션 - Range 파티션: 파티션 키 값의 범위를 이용하여 파티셔닝 - Hash 파티션: 파티션 키값을 해쉬처리하여 파티셔닝 - List 파티션: 파티션 키를 지정하여 파티셔닝 - Composite 파티션: 주파티션, 서브파티션을 지정하여 복합적으로 파티셔닝 CREATE TABLE sales ( prod_id NUMBER(6) , cust_id NU.. 2015. 8. 4.
[ORACLE] Index Scan 종류 Index Range Scan 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔하는 방식 B-Tree 인덱스의 가장 일반적이고 정상적인 액세스 방식 인덱스를 스캔하는 범위를 얼마만큼 줄일 수 있느냐와 테이블로 액세스하는 횟수를 얼마만큼 줄일 수 있느냐 인덱스를 구성하는 선두 컬럼이 조건절에 사용되어야 index Range Scan 가능 Index Range Scan 과정을 거쳐 생성된 결과집합은 인덱스 컬럼 순으로 정렬, order by 연산을 생략하거나 min/max값을 빠르게 추출 가능 between, like, 부등호 조건 처리 Index Full Scan 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식 최적의 인덱스가 없을 때.. 2015. 8. 4.
[ORACLE] 인덱스 인덱스 테이블 내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조 데이터와 무관하게 생성 및 삭제를 독립적으로 할 수 있다. 자동 인덱스: 프라이머리 키 또는 UNIQUE 제약조건에 의해 자동적으로 생성되는 인덱스 수동 인덱스: create index 명령을 실행해서 만드는 인덱스 논리적 인덱스: 단일, 복합, 유일, 비유일, 함수 기반 인덱스 물리적 인덱스: B-Tree, Bitmap, IOT 인덱스 등 인덱스 칼럼의 선정기준 - 하나의 칼럼에 독립적인 인덱스를 선정하는 경우, 양호한 분포도를 가져야 함 - 결합 인덱스의 첫번째 칼럼이 조건절에 없다면 인덱스는 사용되지 않으므로, 결합 인덱스의 순서는 '='로 사용되는 것을 먼저 쓰고 다음으로 분포도가 좋은것을 사용 - 인덱스 머지가 발.. 2015. 8. 4.
[SQL] 조인 조인 두 개 이상의 테이블을 연결하여 데이터를 조회하는 것 - 등가 조인: 테이블간에 동일한 조건을 이용하여 처리, = 연산자 사용 - 비등가 조인: 테이블간에 동일하지 않은 조건을 이용하여 처리, between, 등의 연산자를 이용하여 처리 - 아웃 조인: 조인 조건을 만족하지 않는 경우에도 결과를 봐야 하는 경우 사용 - 셀프 조인: 자기자신의 정보를 이용하여 조인 처리 카테시안 프로덕트(Cartesian Product) 조인 조건을 생략하거나, 잘 못 설정하여 테이블 간의 모든 데이터가 연결되는 것 SET 연산자 조인을 사용하지 않고 두 개 이상의 테이블의 연관된 데이터를 조회해 오는 방법 - UNION: 테이블 간의 합집합, 중복데이터 제거, 자동으로 정렬 작업 처리 - UNION ALL: 테이블.. 2015. 8. 3.
DBMS의 공집합과 집합함수 DBMS의 공집합과 집합함수 데이터베이스의 조회조건에 해당하는 값이 하나도 없는 경우를 공집합이라고 한다. 집합함수의 경우 공집합의 경우에 NULL을 반환한다. - 집합함수: count, sum, avg, max, min Toad 같은 툴을 이용하여 쿼리를 날리면 공집합과 NULL값 반환의 구분이 어려운데, CLI를 이용하면 공집합의 경우 Empty Set을 반환하는 것으로 확인 가능하다. MySQL에서 비어 있는 테이블을 이용하여 쿼리를 날릴경우 아래와 같은 결과를 확인할 수 있다. mysql> select * from employee; Empty set (0.00 sec) mysql> select emp_id from employee where 1=2; Empty set (0.00 sec) mysql.. 2015. 7. 27.