- Navicat, DataGrip 등과 같은 시각화 도구가 없는 경우 명령줄을 통해 데이터베이스를 보고 조작해야 합니다.
- MysSQL, Redis, PostgreSQL, ClickHouse의 일상적인 사용에서 기록을 정리하기 위해 많은 명령을 사용합니다!
I. MySQL 관련 터미널 명령
MySQL 서비스 시작 및 중지, 연결
#
#windows명령줄 명령 시작 및 중지, 명령 관리자 수동 시작 및 중지
#관리자 권한으로 cmd를 실행하고 다음 명령을 입력합니다.
net start mysql
net stop mysql #mysql 서비스 중지
#linux시작 및 중지
systemctl start mysqld 또는 서비스 mysqld 시작
systemctl stop mysqld 또는 서비스 mysqld 중지
systemctl restart mysqld 또는 서비스 mysqld 재시작
ps -ef | grep mysqld #MySQL 서버 시작 여부 확인
#mysql
mysql -u 사용자 이름 -p
일반적으로 사용되는 SQL 명령
show databases; #모든 데이터베이스 쿼리
USE 데이터베이스 이름;#지정된 데이터베이스로 전환
select database(); #데이터베이스의 현재 사용 현황 보기
select user(); #현재 사용자 쿼리
select version(),current_date; #현재 mysql 버전 및 현재 날짜 표시
select now(); #쿼리 시간
exit; 또는 종료; #현재 연결 닫기
###데이터베이스 작업
create database 데이터베이스 이름;
drop database 데이터베이스 이름;
###
show tables; #지정한 데이터베이스의 모든 테이블을 표시하며, 이 명령을 사용하기 전에 사용 명령을 사용하여 조작할 데이터베이스를 선택해야 합니다.
drop table tb_name; #
delete from tb_name; #
show create table ; #테이블의 빌드 문 보기
describe table_name; 또는 desc 테이블 이름; #테이블에 대한 자세한 설명, 테이블 구조 및 필드 표시
#데이터 테이블 속성, 속성 유형, 기본 키 정보, NULL 여부, 기본값 및 기타 정보를 표시합니다.
show columns from ;
#기본 키를 포함한 데이터 테이블의 상세 인덱스 정보 표시
show index fromM ;
alter table 테이블 이름 추가/수정/변경/삭제/이름 바꾸기...; #테이블 구조 수정
create table table_name (column_name column_type);
create table if not exists '_tbl'(
'_id' INT UNSIGNED AUTO_INCREMENT,
'_title' VARCHAR(100) NOT NULL,
'_author' VARCHAR(40) NOT NULL,
'submission_date' DATE,
PRIMARY KEY ( '_id' )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
###
#데이터가 문자형인 경우 "value"와 같이 작은따옴표 또는 큰따옴표를 사용해야 합니다.
insert into 테이블 이름(열1),column2,...) values(value1,value2,...);
insert into table_name ( field1, field2,...fieldN )
values
( value1, value2,...valueN );
update table_name set field1=new-value1, field2=new-value2 [where clause];
delete from table_name [where clause];
select * from 테이블 이름 where 조건;
데이터 가져오기 및 내보내기
공통 가져오기 및 내보내기
#전체 데이터베이스의 백업 복구
mysqldump -u 사용자 이름 -p 데이터베이스 이름> /back/backup.sql
mysql -u 사용자 이름 -p 데이터베이스 이름< /back/backup.sql
#단일 데이터베이스의 일부 테이블 백업 및 복원
mysqldump -u 사용자 이름 -p 데이터베이스 이름 테이블 이름[표 2 표 3] > C:\Users\87\backup.sql
mysql -u 사용자 이름 -p 데이터베이스 이름< C:\Users\87\backup.sql
일반적인 내보내기 방법
[root@localhost ~]# mysqldump -help
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
모든 라이브러리, 라이브러리의 모든 테이블, 특정 테이블/라이브러리의 일부 테이블, 테이블 데이터, 테이블 구조
1) DB 수준
#구조 및 데이터를 포함한 모든 데이터베이스의 모든 데이터 내보내기
mysqldump -u 사용자 이름 -p -A> 내보낸 파일 이름
#모든 DB 구조만 내보내기
mysqldump -u 사용자 이름 -p -A -d> 내보낸 파일 이름
#테이블 구조가 아닌 모든 DB 데이터만 내보냅니다.
mysqldump -u 사용자 이름 -p -A -t> 내보낸 파일 이름
#여러 데이터베이스 구조 및 데이터 내보내기
mysqldump -u username -p db1 db2[db3 ...] -A > filename.sql
#구조 및 데이터를 포함한 단일 데이터베이스의 모든 데이터 내보내기
mysqldump -u 사용자 이름 -p 데이터베이스 이름> 내보낸 파일 이름
#단일 데이터베이스의 구조만 내보내기
mysqldump -u 사용자 이름 -p 데이터베이스 이름 -d> 내보낸 파일 이름
#단일 데이터베이스 데이터만 내보내기
mysqldump -u 사용자 이름 -p 데이터베이스 이름 -t> 내보낸 파일 이름
2) 테이블 수준
#테이블 구조 및 데이터를 포함한 테이블/여러 테이블 내보내기
mysqldump -u 사용자 이름 -p 데이터베이스 이름 테이블 이름[표 2 표 3] > 내보낸 파일 이름
#테이블 데이터가 아닌 테이블 구조만 내보내기, '-d' 추가”명령 매개변수
mysqldump -u 사용자 이름 -p 데이터베이스 이름[ ...] -d > filename.sql
#테이블 구조 없이 테이블 데이터만 내보내기, '-t' 추가”명령 매개변수
mysqldump -u 사용자 이름 -p 데이터베이스 이름[ ...] -t > d:/user.sql
mysqldump -u root -p db1 student course > C:\Users\87\backup.sql
일반적인 가져오기 방법
- 방법 1 시스템 명령줄 방법
mysql -u 사용자 이름 -p<
- 방법 2 mysql 명령줄 소스 방법
mysql -u 사용자 이름 -p
mysql>use mydb
mysql>source /back/backup.sql
구체적인 예
1) 모든 데이터베이스 가져오기
- mysql명령줄: mysql>source /back/backup.sql
- 시스템 명령줄: mysql -u 사용자 이름 -p < /back/backup.sql
2) 단일 데이터베이스 가져오기
- mysql 명령줄을 입력합니다:
mysql>사용 mydb mysql>소스 /back/backup.sql
- 시스템 명령줄:
mysql -u 사용자 이름 -p 데이터베이스 이름 < C:\Users\87\backup.sql
3) 단일 데이터베이스에서 여러 테이블 가져오기
- mysql 명령줄을 입력합니다:
mysql>사용 mydb mysql>소스 /back/backup.sql
- 시스템 명령줄:
mysql -u 사용자 이름 -p 데이터베이스 이름 < C:\Users\87\backup.sql
4) 여러 데이터베이스 가져오기
- mysql명령줄: mysql>source /back/backup.sql
- 시스템 명령줄: mysql -u 사용자 이름 -p < /back/backup.sql
Redis 관련 터미널 명령
Redis 시작 및 중지, 연결
#redis서비스 시작
#설치 디렉터리 입력 설정 파일 방식으로 시작하기
cd /usr/local/src/redis/redis-7.0.4/ #먼저 설치 디렉터리로 전환
redis-server redis.conf #구성 파일을 사용하여 Redis 시작하기
#또는 루트 디렉터리에서 직접
/usr/local/src/redis/redis-7.0.4/redis-server /usr/local/src/redis/redis-7.0.4/redis.conf
#클라이언트 연결 redis 서비스
redis-cli -h host -p port
#로컬 redis의 경우 포트 번호가 6379인 경우 redis-cli를 사용하여 직접 연결할 수 있습니다.
redis-cli
#redis 서비스 중지
# 법칙 1 시스템 명령줄, 정상 종료, 데이터 보존
redis-cli -a password shutdown
#방법 2 redis 명령줄 redis-cli redis 서비스에 접속한 후 redis 명령줄에 shutdown을 입력합니다.
.1:6379> shutdown
#Act II 강제 프로세스 종료, 정전, 비정상 종료, 손쉬운 데이터 손실
ps -ef | grep redis-server
kill -9 redis_pid
Redis일반적인 명령
#기본 명령
ping #하트비트 명령, PONG 응답이 표시되면 클라이언트와 Redis 연결이 정상임을 의미합니다.
select 1 //데이터베이스 전환. 라이브러리 1로 전환: 대상 라이브러리 구독을 선택합니다. redis에는 기본적으로 16개의 라이브러리가 있고, 구독은 0부터 시작하며, 기본값은 라이브러리 0입니다.
dbsize #현재 데이터베이스 크기, 즉 키의 개수를 확인합니다.
shutdown #redis 서비스 닫기
quit 또는 종료#현재 연결 닫기
flushdb #현재 라이브러리의 모든 데이터 지우기
flushall #모든 라이브러리 데이터 비우기
#key관련 작업 명령
keys * #모든 키 가져오기
keys pattern #주어진 패턴과 일치하는 모든 키 찾기
set key value
get key
exists key #주어진 키의 존재 여부 확인
type key #키에 저장된 값의 타입을 반환합니다.
del key1 key2 ... #이 명령은 키가 존재하는 경우 키를 삭제하는 데 사용됩니다.
unlink key #비차단 삭제를 선택하면 처음에 삭제되지 않고 이후에만 삭제됩니다;
move key db #현재 데이터베이스의 키를 지정된 데이터베이스 db로 이동합니다.
rename key newkey #키 이름 수정;
expire key1 seconds #키 만료 시간 설정
ttl key #주어진 키의 남은 생존 시간을 초 단위로 확인합니다. -2는 이미 만료되었음을 의미하며 -1은 만료되지 않음을 의미합니다.
persist key #키의 만료 시간을 제거하면 키가 유지됩니다.
randomkey #현재 데이터베이스에서 임의의 키를 반환합니다.
PostgreSQL 관련 터미널 명령
PostgreSQL 서비스 시작 및 중지, 연결
환경 변수를 설정하지 않은 경우 pgsql bin 디렉터리로 이동해야 합니다.
#Windows
#"시작”메뉴에서 "PostgreSQL” 폴더에서 'pgAdmin” 애플리케이션에서 애플리케이션 아이콘을 클릭하여 PostgreSQL을 시작합니다.
포스트그레스큐엘 디렉토리 입력
.\bin\pg_ctl -D data -l logfile start
.\bin\pg_ctl -D data -l logfile stop
로컬 서비스로 등록한 후 net start xx를 통해 서비스를 바로 시작할 수 있습니다.
#Linux
su - postgres
/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile
#지정된 서버의 데이터베이스에 연결
psql -h IP -p port -U 사용자 이름 -d 데이터베이스 이름 -W
일반적으로 사용되는 SQL 명령
select version(); #버전 정보 표시
\l #모든 데이터베이스 나열
\c database_name #지정된 데이터베이스로 전환
#현재 사용 중인 데이터베이스 보기
select current_database();
\c #현재 데이터베이스 이름 및 사용자 표시
\conninfo #클라이언트 연결 정보 표시
\du #모든 사용자 표시
\dn #데이터베이스에 스키마 표시
\encoding #문자 집합 표시
#데이터베이스 만들기
creadb database db_name owner 사용자 인코딩 UTF8;
drop database db_name;
\d #데이터베이스의 모든 테이블 나열
\dt #데이터베이스의 모든 테이블 나열
\d [table_name] #지정된 테이블의 구조 표시
\di #데이터베이스의 모든 인덱스 나열
\dv #데이터베이스의 모든 보기 나열
drop table tb_name; #테이블 삭제
#데이터 삽입
insert into table_name(column1,column2,...) values(value1,value2,..)
alter table [ ] drop column [ ]; #테이블의 필드 삭제
\i testdb.sql #SQL 파일 실행
\x #확장 표시 결과 정보, MySQL의\G
\o /tmp/test.txt #다음 SQL 실행 결과를 파일로 가져옵니다.
\? #모든 명령 도움말
\h #sql명령 도움말
\q #연결 종료
데이터 백업 및 복구
#데이터 내보내기
#단일 테이블 데이터 내보내기
pg_dump -h ip -p port -U 사용자 이름 -t 테이블_name -f backup.sql database_name #sql복사 모드의 ClickHouse 데이터
pg_dump -h ip -p port -U 사용자 이름 -t 테이블_name -f backup.sql --column-inserts database_name #sql삽입 모드의 데이터, 느린 속도, 포스트그레SQL이 아닌 데이터베이스로 쉽게 가져오기.
pg_dump -h ip -p port -U 사용자 이름 -t 테이블_name --column-inserts database_name > backup.sql #-f xx.sql,다음 명령도 사용할 수 있습니다.> xx.sql
#여러 테이블 데이터 내보내기
pg_dump -h ip -p port -U 사용자 이름 -t tb_name1 -t tb_name2 -f backup.sql database_name
#전체 데이터베이스 내보내기
pg_dump -h ip -p port -U 사용자 이름 -f 백업.sql database_name
#테이블 데이터가 아닌 테이블 구조만 내보내기
pg_dump -h ip -p port -U 사용자 이름 -f 백업.sql -s database_name
#데이터만 내보내기, 테이블 구조는 내보내지 않음
pg_dump -h ip -p port -U 사용자 이름 -f 백업.sql -a database_name
#데이터 가져오기 SQL 파일 실행
psql -h IP -p port -U 사용자 이름 -W -d db_name < dump/save.sql
psql -h ip -p port -U postgres -d db_name -f xxx.sql
pg_dump 공통 매개변수
\-h host,데이터베이스 호스트 이름 또는 IP를 지정합니다.
\-p port,포트 번호 지정
\-U user,연결에 사용할 사용자 이름 지정
\-W,메시지에 따라 비밀번호 입력
dbname,연결할 데이터베이스의 이름(실제로는 백업할 데이터베이스의 이름)을 지정합니다.
\-a,-데이터 전용, 데이터만 내보내기, 테이블 구조는 내보내지 않음
\-c,-clean, 테이블 삭제와 같이 이 데이터베이스 개체를 정리하는 문을 생성할지 여부
\-C,-create, 데이터베이스 생성 문을 출력할지 여부
**-f** file,-file=file,출력 파일 또는 디렉토리 이름을 지정하고 지정된 파일로 출력합니다.
\-n schema,-schema=schema,스키마와 일치하는 스키마의 내용만 덤프합니다.
\-N schema,-exclude-schema=schema,스키마와 일치하는 스키마 콘텐츠 덤프하지 않기
\-O,-no-owner, 내보낸 개체의 소유권을 설정하지 않음
\-s,-스키마 전용, 개체 정의 스키마로만 연결되며 데이터를 내보내지 않습니다.
**-t** table,-table=table,일치하는 테이블, 뷰, 시퀀스만 덤프, 여러 -t를 사용하여 여러 테이블을 일치시킬 수 있으며, 특정 테이블을 지정하지 않으면 전체 데이터베이스로 내보내집니다.
\-T table,-exclude-table=table,일치하는 테이블을 덤프하지 마세요.
-삽입, 삽입 명령 양식을 사용하여 데이터를 내보내려면 기본 복사 방식보다 훨씬 느리지만 PostgreSQL이 아닌 데이터베이스로 데이터를 가져오는 데 사용할 수 있습니다.
**--column-inserts**,내보낸 데이터에는 명시적인 열 이름이 있는 열로 내보낼 수 있습니다.`INSERT` 명령 양식 데이터 덤프
데이터베이스 이름은 마지막에 넣으며 기본값은 시스템 변수 PGDATABASE로 지정된 데이터베이스입니다.
ClickHouse 관련 터미널 명령
클릭하우스는 대소문자를 구분합니다.
ClickHouse 서비스 시작 및 중지, 연결, 백업 복구
#서비스 시작
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
systemctl restart clickhouse-server #서비스 재시작
service clickhouse-server restart #서비스 재시작
systemctl stop clickhouse-server #서비스 중지
#click-client
clickhouse-client --user 계정 --비밀번호 비밀번호
#내보내기 데이터는 txt, csv, json 형식으로 내보낼 수 있습니다.
clickhouse-client -u [ ] -h [IP] -d [데이터베이스 이름] --password [ ] --query="select * from database.table FORMAT CSV" > 파일 경로 및 파일 이름
#파일 가져오기
clickhouse-client -u [ ] -h [IP] -d [데이터베이스 이름] --password [ ] --query="insert into database.table FORMAT CSV" < 파일 경로 및 파일 이름
일반적으로 사용되는 SQL 명령
#데이터베이스 보기. 참고: 데이터 테이블에서 작업할 때 데이터베이스 이름을 지정하지 않으면 기본 라이브러리로 작업합니다.
show databases;
#버전 정보 보기
select version();
#현재 사용 중인 데이터베이스 보기
select currentDatabase();
#엔진으로 데이터베이스 보기
show create database db_name;
create/drop database db_name;
#데이터베이스 전환
use db_name;
#클릭하우스 명령줄 종료
quit/exit;
#데이터베이스의 모든 테이블 나열
show tables;
#테이블 구조 보기
desc table_name;
#
drop table if exists table_name;
#테이블 구조 변경
alter table [database.]table add|drop|clear|comment|modify column ...
#
alter table tb1 add column age UInt32 default 0;
#
drop column [if exists] ;
#2000-09-19 데이터의 사용자 테이블에서 생년월일 삭제하기
alter table user delete where bornDate<='2000-09-19 00:00:00';
#테이블 데이터 비우기
truncate table table_name;
select * from table_name where ...;





