[MySQL] 테이블 전체 구조와 데이터 복사하기
·
Development/MySql
CREATE TABLE IF NOT EXISTS `복사 테이블` SELECT * FROM `원본 테이블`; 복사할 조건이 있을 경우 select * from 뒤에 where 절로 조건을 추가한다. 테이블 명에서 오류가 발생할 경우, use를 사용하여 데이터베이스를 선택한 후 실행한다. use [데이터베이스명]; USE [데이터베이스 이름]이란 사용할 데이터베이스를 선택하는 기능이다. 기본키(Primary Key), 인덱스(Index), Auto Increment는 제외하고 복사됨 똑같은 구조가 필요했기 때문에, 기존 생성된 테이블의 스크립트로 다시 테이블을 만들어 주었다. 임시로 table명을 생성한 후 기존에 생성한 테이블의 데이터만 입력하였다. INSERT INTO `복사 테이블` SELECT * F..
[MySQL] user 생성 및 권한 부여
·
Development/MySql
ip 주소가 변경되었을 경우, db에 접속이 안될 수 있다. host가 변경되어, 권한이 없기 때문이다. 쉘에서 mysql에 접속한 후 user를 생성한다. mysql 접속 # whereis mysql mysql: /usr/local/mysql # cd /usr/local/mysql # ./mysql -u root -p Enter password: 안될 경우, find / -name mysql 로 경로를 찾아서 실행한다. /usr/local/mysql/bin/mysql -u root -p 패스워드를 입력하여 mysql에 접속한다. use mysql; mysql로 데이터베이스를 변경 한뒤, user목록을 확인한다. select user,host from user; user 생성 create user 'us..
[MySql] DATETIME 값 수정하기(update)
·
Development/MySql
DATETIME 바꾸고 싶은 날짜를 형식에 맞게 텍스트로 업데이트 하면 된다. 0000-00-00 00:00:00 update 테이블명 set date = "2023-01-26 00:00:00"
MySQL 설치하기
·
Development/MySql
centOS7 부터는 데이터베이스가 MariaDB로 바뀌었다. 그래서 MySQL 을 yum 으로 바로 설치가 불가능하다고 한다. 의존성있는 관련 패키지 설치 # yum -y install gcc g++ libncurses5-dev libxml2-dev openssl libssl-dev curl libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libsasl2-dev autoconf libncurses5-dev MySQL 계정 만들기 # groupadd mysql # useradd -g mysql -s /bin/bash -m mysql cmake 설치 # yum -y install cmake MySQL 설치 # wget https://dev.mys..
mariaDB 삭제 후 mySQL 설치하기
·
Development/MySql
mysql 설치 버전확인해보니 mariaDB가 설치되어있는 것 같다. [root@localhost ~]# mysql --version mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1 예전에 설치해서 까먹고 있었는데, centOS7에는 DB가 mariaDB로 되어있어서 그런 것 같다. (확인해보니 버전이 centos7이었다.) 아래 URL 참고해서 MySQL을 재설치한다. https://dev-wisdom.tistory.com/123# MySQL 설치하기 centOS7 부터는 데이터베이스가 MariaDB로 바뀌었다. 그래서 MySQL 을 yum 으로 바로 설치가 불가능하다고 한다. 의존성있는 관련 패키지 설치 # yu..
[MySQL] 효과적인 대용량 데이터 처리 방법
·
Development/MySql
#20221220 DB 대용량 데이터를 어떻게 처리할지에 대해 고민이다. 일자별로 데이터가 누적되고, 조회도 매일 이루어진다. 조회 조건도 입력에 따라 수시로 변한다. range partition을 사용해볼까 고민 중 이다. MySQL RANGE Partitioning https://dev.mysql.com/doc/refman/8.0/en/partitioning-range.html MySQL :: MySQL 8.0 Reference Manual :: 24.2.1 RANGE Partitioning 24.2.1 RANGE Partitioning A table that is partitioned by range is partitioned in such a way that each partition contai..
date 조회 시 유의사항
·
Development/MySql
날짜 조회하다가, 늘 쓰던 between A and B를 사용하였는데 특정 날짜가 안나왔다. 상황 between A and B 사용 where date between '2021-10-01' and '2021-12-31' where date between '2021-10-01' and '2021-12-31' 이렇게 입력했더니 2021-10-01~2021-12-30 일자만 출력 되었다.. where date_format(sd_date,'%Y%m%d')=20211231 분명 조회했을땐 데이터가 있었는데 안나오길래 찾아본결과, 해당 date 칼럼은 datetime 형식으로, 내가 조회할때 시간을 입력하지 않아서 자동으로 00:00:00으로 된 것이다. 그래서 실제로 조회할때의 값은 2021-10-01 00:00..
MySQL 테이블 크기 확인하기
·
Development/MySql
테이블 데이터를 조회하다가, 특정 한 테이블만 속도가 너무느려서 크기를 확인하고자 알아본 쿼리이다. SELECT table_name, table_rows, round(data_length/(1024*1024),2) as 'DATA_SIZE(MB)', round(index_length/(1024*1024),2) as 'INDEX_SIZE(MB)' FROM information_schema.TABLES WHERE table_schema = 'DB_name' -- 조회할 DB 이름 입력 GROUP BY table_name ORDER BY data_length DESC LIMIT 10; -- 길이가 긴 것 부터 LIMIT 10개