MySQL - 터미널 관련 명령어/DB CRUD 명령어/컬럼 옵션

MySQL - 터미널 관련 명령어/DB CRUD 명령어/컬럼 옵션

데이터베이스란?

지금까지는 데이터를 서버 메모리에 저장함 → 서버를 재시작하면 데이터도 사라져버림 → 영구적으로 저장할 공간 필요

MySQL 관계형 데이터베이스 사용

데이터베이스: 관련성을 가지며 중복이 없는 데이터들의 집합

DBMS: 데이터베이스를 관리하는 시스템

RDBMS: 관계형 데이터베이스를 관리하는 시스템

서버의 하드 디스크나 SSD 등의 저장 매체에 데이터를 저장

서버 종료 여부와 상관 없이 데이터를 계속 사용할 수 있음

여러 사람이 동시에 접근할 수 있고, 권한을 따로 줄 수 있음

관련 명령어

맥 터미널 기준

brew 통한 MySQL 설치

$ brew install mysql

MySQL 서버 시작

$ brew services start mysql

MySQL 설정

$ mysql_secure_installation

MySQL 접속

$ mysql -u root -p

MySQL 종료

exit

MySQL 서버 종료

$ brew services stop mysql

brew 통한 workbench 설치

$ brew install —cask mysqlWorkbench

데이터 베이스 생성

mysql> CREATE SCHEMA 이름 DEFAULT CHARACTER SET utf8;

데이터 베이스 사용

mysql> use 이름;

DB table 보기

mysql> show databases;

DB table 생성 확인

mysql> DESC users;

table 삭제

mysql> DROP TABLE users;

table 목록

mysql> SHOW TABLES;

DB CRUD 명령어

CREATE

INSERT INTO (컬럼) VALUES (값)

mysql> INSERT INRO nodejs.users (name, age, married, comment) VALUES (’zero’, 24, 0, ‘자기소개1’);

READ

SELECT (컬럼) FROM (테이블)

mysql> SELECT * FROM nodejs.users;

→ 모든 컬럼 조회

mysql> SELECT (컬럼1, 컬럼2) FROM nodejs.users;

→ 지정 컬럼 조회

WHERE 조건

## AND : 여러가지 조건을 동시에 만족하는 것을 찾음

### SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 조건1 AND 조건2;

mysql> SELECT name, age FROM nodejs.users WHERE married = 1 AND age > 30;

→ 결혼 했고, 30살 이상인 name, age의 값을 조회

## OR : 여러가지 조건 중 하나 이상을 만족하는 것을 찾음

### SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 조건1 OR 조건2;

mysql> SELECT id, name FROM nodejs.users WHERE married = 0 OR age > 30;

→ 결혼 안 했거나, 30살이상인 name, age의 값을 조회

ORDER BY : 특정 컬럼 값 순서대로 정렬 가능

## DESC는 내림차순, ASC 오름차순

mysql> SELECT id, name FROM nodejs.users ORDER BY age DESC;

→ 나이 내림차순으로 테이블 id, name의 값 조회

LIMIT : 조회 개수 제한

mysql> SELECT 컬럼1, 컬럼2 FROM 테이블 ORDER BY 대상컬럼 DESC LIMIT 1;

OFFSET : 앞의 row들 skip 가능 (OFFSET 2 → 3번째 조회)

mysql> SELECT 컬럼1, 컬럼2 FROM 테이블 ORDER BY 대상컬럼 DESC LIMIT 1 OFFSET 1;

UPDATE

UPDATE : 데이터 수정

UPDATE 테이블 SET 컬럼 = 변경값 WHERE 조건

DELETE

DELETE : 데이터 삭제

DELETE FROM 테이블 WHERE 조건

컬럼에 대한 옵션들

INT 정수 자료형(FLOAT, DOUBLE은 실수) VARCHAR 문자열, 자료형, 가변 길이(CHAR은 고정 길이) TEXT 긴 문자열은 TEXT로 별도 저장 DATETIME 날짜 자료형 저장(날짜 + 시간) DATE 날짜 저장 TINYINT -128에서 127까지 저장하지만 여기서는 1 또는 0만 저장해 boolean 값 표현 NOT NULL 빈 값은 받지 않는다는 뜻(NULL은 빈 값 허용) AUTO_INCREMENT 숫자 자료형인 경우 다음 로우가 저장될 때 자동으로 1 증가 UNSIGNED 0과 양수만 허용(음수 불가능) ZEROFILL 숫자의 자리 수가 고정된 경우 빈 자리에 0을 넣음

⇒ INT(5) ZEROFILL = 2할당 → 00002 결과값 반환

⇒ INT(10) ZEROFILL = 1 할당 → 0000000001 결과값 반환 DEFAULT now() 날짜 컬럼의 기본값을 현재 시간으로 PRIMARY KEY(컬럼명) 고유값 INDEX 검색 속도 빨라짐(자주 사용하는 것에 걸어주는게 좋음

- INDEX commenter_idx (commenter ASC) → 작성자 댓글을 오름차순으로 index 한다

- UNIQUE INDEX name_UNIQUE (name ASC)) → 앞에 UNIQUE 가 붙으면 고유값이 된다? → 고유값인지 검색을 자주하기 때문에 UNIQUE 뒤에 INDEX가 붙는다. CONSTRAINT 해당 컬럼에 제약 걸어둠

⇒ CONSTRAINT commenter

FOREIGN KEY(컬럼명) 외래키 REFERENCES 참조

⇒ REFERENCES nodejs.users (id) → user 테이블의 id 참조

ON DELETE CASCADE 같이 삭제(1번 사용자가 삭제되면 엮인 댓글도 같이 삭제하냐) ON UPDATE CASCADE 같이 업데이트

from http://cloud-cuckoo-land.tistory.com/79 by ccl(A) rewrite - 2021-12-19 22:00:57