728x90

데이터베이스 25

[sqlite3] 윈도우 10에 sqlite3 설치 및 환경변수 path 설정하기

오늘은 윈도우10 컴퓨터에 sqlite3를 설치하고 환경변수 path 설정하는 법에 대해서 설명드리도록 하겠습니다. 우선 sqlite3를 다운로드 받아야겠죠. www.sqlite.org/download.html SQLite Download Page Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Template (3) is used for precompiled bi ww..

[세이버메트릭스] MLB에서 2019까지 1000안타 이상 친 선수 중, 홈런을 2루타보다 더 많이 쳐낸 선수는? (sqlite3)

요즘 세이버메트릭스 관련해서 다시 읽고 있는 책이 있습니다. 바로, 벤저민 바우머와 앤드루 짐발리스트가 쓴 입니다. 저자들이 데이터베이스 활용 능력을 강조하는 부분에서 "MLB에서 1000안타 이상을 친 선수 중에서 2루타보다 홈런을 더 많이 쳐낸 선수들이 몇 명일까?"라는 질문을 던집니다. 만약 데이터베이스를 다룰 줄 모르는 사람이라면, 통산 1000안타 이상 친 선수를 통계 사이트에서 모두 찾아낸 다음에, 2루타와 홈런 갯수를 비교해야 할 것이라고 말합니다. 하지만 데이터베이스를 다룰 줄 안다면, 간단한 코드(query, 쿼리)로 쉽게 알아낼 수 있다고 말합니다. 즉, 야구 데이터 분석가를 꿈꾸는 사람이라면 데이터베이스를 다룰 줄 아는 것이 매우 유리하다는 것입니다. 저는 sqlite 레먼 데이터베이..

[MariaDB] LIKE를 사용하여 특정 문자열 검색하기

대부분의 웹사이트의 경우 검색기능을 제공하고 있습니다. 왜냐하면 수많은 데이터에서 내가 필요한 정보를 검색없이 찾아가는 것은 거의 불가능하기 때문입니다. 오늘은 테이블에서 특정 문자열이 포함된 행을 읽어서 보여주는 것에 대해 알아보도록 하겠습니다. 우선 다음과 같은 행들이 담겨져 있는 article이라는 이름의 테이블이 있다고 가정하겠습니다. 이 테이블에서 title 컬럼에 "코로나"라는 문자열이 담긴 행들을 읽으려면 다음과 같이 쿼리문을 작성해주면 됩니다. SELECT * FROM article WHERE title LIKE '%코로나%'; 이번에는 contents 컬럼에 "햄버거"라는 문자열이 포함된 행들을 읽어보겠습니다. 만약 title 컬럼 또는 contents 컬럼에 "코로나"가 포함된 행들을 ..

[MariaDB] GROUP BY 사용 예제(+ HAVING)

오늘은 group by와 having의 기능에 대해 알아보도록 하겠습니다. 다음은 예제를 위한 테이블입니다. 참고로 위 테이블을 만들고 행들을 쌓기 위해서 다음과 같은 쿼리들이 순차적으로 필요했습니다. 제가 만든 예제를 그대로 따라하고 싶은 분은 복사해서 붙여넣어주세요. CREATE TABLE student (id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL, grade VARCHAR(10) NOT NULL, PRIMARY KEY(id)); INSERT INTO student (name, grade) VALUES ('심교훈', 'C'); INSERT INTO student (name, grade) VALUES ('황병일', 'B'); INSER..

[python] 이번 달의 첫 시간과 마지막 시간을 알고 싶다면? 2021-01-01 00:00:00 과 2021-01-31 23:59:59

데이터베이스에서 현재 달의 데이터들을 읽어내고 싶다면, 이번달의 첫 시간과 마지막 시간을 알아야 합니다. 2021-01-01 00:00:00 2021-01-31 23:59:59 오늘은 위 두개를 알아내는 파이썬 코드에 대해 소개해드리도록 하겠습니다. 우선 로직(Logic)을 설명하겠습니다. 1) 현재 시간을 구한다. 2021-01-04 01:06:13.872087 2) 현재 달의 첫 시간을 찾아낸다. 2021-01-01 00:00:00 3) 거기에 한달을 더해서 다음 달의 첫 시간을 찾아낸다. 2021-02-01 00:00:00 4) 거기에서 1초를 빼서 이번 달의 마지막 시간을 찾아낸다. 2021-01-31 23:59:59 위 로직을 구현하는 파이썬 코드는 다음과 같습니다. 1 2 3 4 5 6 7 8..

코딩/python 2021.01.05 (2)

[MariaDB] 컬럼 순서 변경하기

오늘은 MariaDB 테이블 컬럼 순서를 변경하는 방법에 대해 알아보도록 하겠습니다. 우선 다음과 같은 테이블이 있다고 가정하겠습니다. SELECT * FROM article; article이란 이름의 테이블은 id, title, contents, created_at 총 4개의 컬럼으로 구성된 테이블입니다. 만약 created_at 컬럼을 title 컬럼 뒤에 위치하게 하려면 어떻게 해야할까요? 그 전에 각 컬럼의 특성을 살펴볼 필요가 있습니다. SHOW COLUMNS FROM article; 왜냐하면 자리를 옮기기 원하는 컬럼의 경우 컬럼의 특성을 똑같이 기입해줘야 하기 때문입니다. created_at 컬럼이 title 컬럼 뒤에 오게 하려면 다음과 같이 명령해주면 됩니다. ALTER TABLE art..

[MariaDB] 사용자에게 모든 권한 또는 CRUD 권한 부여하기

MariaDB에서 어디서나 원격 접속할 수 있는 kyohoonsim이란 사용자에게 test라는 이름의 데이터베이스에 관해서 모든 권한을 부여하고 싶다면, 다음과 같이 명령해주면 됩니다. GRANT ALL PRIVILEGES ON test.* TO 'kyohoonsim'@'%'; 만약 Create, Read, Update, Delete, 즉 CRUD에 대한 권한만 주려면 다음과 같이 명령해줘야 합니다. GRANT INSERT, SELECT, UPDATE, DELETE ON test.* TO 'kyohoonsim'@'%'; test 데이터베이스의 테이블 중에서 person이라는 테이블만 조회할 수 있는 권한을 주려면 다음과 같이 쿼리를 주면 됩니다. GRANT SELECT ON test.person TO '..

[MariaDB] 우분투 mariadb 포트 번호 변경하는 방법

MariaDB 서버의 포트 번호는 기본적으로 3306으로 설정되어 있습니다. 그런데 기본 포트번호로 설정해놓으면 보안적으로 그렇게 안전하다고 보긴 어렵기 때문에 바꿔주는 것이 좋습니다. 오늘은 이 포트 번호를 변경하는 법에 대해 소개해드리도록 하겠습니다. 그런데 그것과 관련된 설정 파일은 경우에 따라 경로와 이름이 다른 것 같더군요. 그래서 그 설정 파일을 찾아가는 방법에 대해 알려드리겠습니다. 구체적으로는 저와 다를 수 있지만 찾아가는 원리는 같으니 아래의 내용을 잘 참고해서 잘 찾아가시길 바랍니다. 먼저 MariaDB 서버가 있는 기기에서 /etc 폴더로 이동합니다. $ cd /etc ls -al로 목록을 보시면 mysql 폴더가 있는 것을 확인하실 수 있을 것입니다. 거기로 들어갑니다. $ cd m..

[MariaDB] 데이터를 insert한 시각을 저절로 기록되게 하려면?

테이블에 행을 추가한 시각을 기록하면 여러모로 유용할 때가 많습니다. 오늘은 데이터를 insert한 시각을 저절로 기록되게 하는 방법에 대해 알아보도록 하겠습니다. 글 제목과 내용을 담을 테이블을 하나 생성할 것인데, 글을 생성한 시각을 저절로 기록되게 하도록 해보겠습니다. CREATE TABLE article ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(30) NOT NULL, contents VARCHAR(500) NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id) ); 여기서 빨간색으로 강조한 부분이 insert한 시간을 저절로 넣기 위한 것입니다. 데이터의 타입은 DAT..