Programming/Database (데이터베이스)

[MySQL] MySQL이란? / 자주 사용하는 명령어

MOONCO 2021. 2. 12. 20:25

👉 MySQL이란? 

오픈소스 관계형데이터베이스 중의 하나로,

2021년 현재 가장 인지도가 높은 데이터베이스

👉 계정관련 명령어

 

mysql 접속

mysql -u root -p password

# -u : 사용자
# -p : 비밀번호 사용

 

계정 확인

select * from mysql.user;

 

( 대소문자 상관 없이 사용가능  \  대문자가 명령어, 소문자는 임의지정 )

새로운 계정 추가

CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

 

비밀번호 변경 ( 5.7 버전 이상 )

ALTER USER <사용자> IDENTIFIED WITH <인증플러그인> BY <비밀번호>;

# 초기 인증 플러그인 : mysql_native_password

flush privileges;

# 변경사항 적용

 

모든 권한 보기

SHOW GRANTS;

👉 DB관련 명령어

 

데이터베이스 확인

SHOW DATABASES;

 

새로운 데이터베이스 생성

CREATE DATABASE <DB>;

 

데이터베이스 접속

USE <DB>;

 

다른 유저에게 데이터베이스 권한 부여

GRANT ALL GRANT ALL ON database.* TO username@localhost;

 

데이터베이스 삭제

DROP <DB>;

👉 테이블 관련 명령

 

테이블 확인

SHOW TABLES;

 

새로운 테이블 생성

CREATE TABLE <테이블>(
  <필드> <타입>,
  <필드> <타입>
PRIMARY KEY(<필드>)
) ENGINE=<엔진>;

// 엔진은 선택사항

 

🚩 필드타입 정리

 

문자형

데이터 타입 설명
CHAR(10) 10자리 문자열 / 채워지지 않은자리 공백으로 채움
VARCHAR(20) 20자리 문자열 / 채워지지 않은자리 그대로 놔둠
TINYTEXT(10) 10자리 문자열 / 최대 255byte
TEXT(10) 10자리 문자열 / 최대 65535byte
MEDIUMTEXT(10) 10자리 문자열 / 최대 16777215byte
LONGTEXT(10) 10자리 문자열 / 최대 4294967295byte

 

숫자형

데이터 타입 설명
TINYINT(10) 10자리 정수 / 최대 1byte
SAMLLINT(20) 20자리 정수 / 최대 2byte
MEDIUMINT(10) 10자리 정수 / 최대 3byte
INT(10) 10자리 정수 / 최대 4byte
BIGINT(10) 10자리 정수 / 최대 8byte
FLOAT(10,0.5) 10자리 부동 소수점 / 최대 4byte
DOUBLE(10,0.5) 10자리 부동 소수점 / 최대 8byte
DECIMAL(10,0.5) 10자리 고정 소수점 / 최대 길이 + 1byte

 

날짜형

데이터 타입 설명
DATE 연도, 월, 일 형태의 날짜 / 3byte
TIME 시, 분, 초 형태의 시간 / 3byte
DATETIME 날짜 + 시간 / 8byte
TIMESTAMP 현재 ( 날짜 + 시간 ) / 4byte , 내용 변경시 수정됨
YEAR 연도 / 1byte

 

이진수형

데이터 타입 설명
BINARY(10) & BYTE(10) 10자리 CHAR 형태의 이진수 / 최대 255byte
VARBINARY(20) 20자리 VARCHAR 형태의 이진수 / 최대 65535  byte
TINYBLOB(10) 10자리 이진수 / 최대 255byte
BLOB(10) 10자리 이진수 / 최대 65535byte
MEDIUMBLOB(10) 10자리 이진수 / 최대 16777215byte
LONGBLOB(10) 10자리 이진수 / 최대 4294967295byte

 

옵션

옵션 설명
NOT NULL NULL 값을 저장할 수 없음
UNIQUE 중복값을 저장할 수 없음
PRIMARY KEY 기본 키로 설정 ( NOT NULL + UNIQUE )
FOREIGN KEY 외부 테이블에 연결 ( 참조하려는 테이블은, UNIQUE 나 PRIMARY KEY가 있어야 함 )
DEFAULT <값> <값>을 기본 값으로 설정
AUTO_INCREMENT 자동 인덱스 증가

 

테이블 구조확인

DESC <테이블>;

 

테이블 삭제

DROP <테이블>;

 

테이블에 정보 저장

INSERT INTO <테이블>(<컬럼1>, <컬럼3>, ...) VALUES (<값1>, <값3>, ...);

 

테이블 정보 불러오기

SELECT <컬럼1>, <컬럼2>, ... FROM <테이블>;

 

조건 사용해서 불러오기

1. 컬럼1의 값이 3인 곳에서, 모든(*) 컬럼 내용 불러오기

SELECT * FROM <테이블> WHERE <컬럼1>=<값3>;

2. 컬럼2의 값이 문자열을 포함하고 있는 곳에서, 컬럼1 과 컬럼3의 내용 불러요기

SELECT <컬럼1>, <컬럼3> FROM <테이블> WHERE <컬럼2> LIKE <문자열>;

 

정렬조회

1. 내림차순

SELECT * FROM <테이블> ORDER BY <컬럼> DESC;

2. 오름차순

SELECT * FROM <테이블> ORDER BY <컬럼> ASC;

 

새로운 컬럼을 컬럼1뒤에 추가

ALTER TABLE <테이블> ADD <컬럼> <컬럼속성> AFTER <컬럼1>

 

기존 데이터 변경

( 컬럼2의 값이 값5인 곳에서, 컬럼1 값을 값1으로 바꾼다. )

UPDATE <테이블> SET <컬럼1>=<값1> WHERE <컬럼2>=<값5>;

 

정보 삭제하기

( 컬럼값이 일치하는 부분 찾아서 제거 )

DELETE FROM <테이블> WHERE <컬럼>=<값>

👉 테이블 연결

 

필드1을 외부테이블속의 필드에 연결한다 ( FOREIGN KEY 사용 )

- 외부테이블속의 필드가 바뀌면, 필드1도 바뀐다

CREATE TABLE <테이블>(
  <필드1> <타입1>,
  <필드2> <타입2>,
  ...
  FOREIGN KEY(<필드1>)
  REFERENCES <외부테이블> (<외부필드>)
)

 

INDEX  만들기

CREATE INDEX <인덱스명> ON <테이블명> (<컬럼명>)

 

반응형