본문 바로가기
Databases/SQL

mysql CRUD

by CodeMia 2022. 1. 6.

MySQL 구조 

데이터베이스 서버  > 데이터베이스(스키마) > Tables(표)

 

mysql을 다운 받은 것은

데이터베이스 서버를 다운받은 것이다. 

 

MySQL 자체 보안 체계 

권한 mysql에 여러 사람 등록 할 수 있다. 

John은 여러 스키마 모두에 읽고, 쓰고, 지울 수 있다

Sam은 테이블 하나만 제어 가능하다.

 

mysql -uroot -p 

root은 관리자이기에 모든 권한이 열려있다. 

별도의 이름을 만들어서 사용하다가

특별한 일이 있을 때만 root로 들어가는 것을 권장한다. 

 

MySQL 특징 

1. 대소문자 구분 안함

mysql은 대소문자를 구분하지 않는다

select / SELECT 로 쓰든 상관이 없다. 

 

2. 세미콜론

마지막에 세미콜론을 붙여주는 것은

서버에 SQL명령문 한 줄 이상을 실행시킬 때 

각 명령문을 구분해주는 방법이다. 

그래서 각 명령문 마다 붙여주는 것이 좋다. 

 


CRUD 

Create

Read 

Update

Delete

 

데이터 베이스 

 

데이터 베이스 만들기 

CREATE DATABASE databaseName;

CREATE DATABASE testDB;

 

 

데이터베이스 보기

SHOW DATABASES

testDB가 만들어져 있는 것을 볼 수 있다.

 

 

 

✔️ 데이터 베이스 안으로 들어가기

그리고 나서 테이블을 만든다.

 

 

✔️ 데이터 베이스 지우기

DROP DATABASE databaseName;

DROP DATABASE testDB;

 

 

 

 

테이블 

 

CREATE 

 

✔️ 테이블 만들기 기본형

CREATE TABLE tableName (

  column1 datatype (constraint),

  column2 datatype (constraint),

  coloumn3 datatype (constraint),

PRIMARY KEY(id)

...

)

 

✔️ 실제로 테이블 만들기 -  Products Table

 CREATE TABLE products ( 

    -> id INT NOT NULL,

    -> name varChar(255),

    -> price decimal(13,2),

    -> PRIMARY KEY(id) 

    -> );

 

 

INT: ingeger 정수 

Not Null: 꼭 데이터 들어가야함 

varChar: variable charactor 다양한 length 가능 

char: 정해진 length만 가능 

255: 255자까지 가능 

decimal(13, 2): 13개의 숫자, 소수점 2자리 까지 보여줌

 

 

 

✔️ 테이블에 데이터 입력하기 

products 테이블에 데이터를 넣어보자. 

이 때 insert into 를 사용한다. 

 

 

1. row에 데이터 모두 넣을 때 

INSERT INTO products 

    -> VALUES (1, "pen", 1.20);

 

 

2. row에 어떤 데이터만 넣을 때 

데이터 넣을 column을 적어준다. 

INSERT INTO products(id, name)

    -> VALUES (2, "pencil");

 

 

 

READ

 

✔️ 어떤 테이블 있나 보기

SHOW TABLES; 

만들어 놓은 customers 테이블이 보인다.

 

 

 

✔️ 테이블 데이터 모두 보기 

SELECT * FROM products; 

products 테이블 모두(*)를 보여줘.

* : 전체

 

 

 

✔️ 테이블 데이터 일부 보기 

SELECT columnName FROM tableName;

1. SELECT 다음 원하는 columns 를 적는다 / * 로 모두 선택 대신

 

 

2. where를 사용해서 더 구체적으로 검색할 수 있다.

 

SELECT * FROM products WHERE id = 1;

 

SELECT * FROM products WHERE name = 'pencil';

 

 

 

WHERE operators

 

 

 

 UPDATE 

 

✔️ data 변경하기 

UPDATE tableName SET 변경내용 WHERE 위치

UPDATE products 

    -> SET price = 0.80

    -> WHERE id = 2;

where로 정확히 어디에 있는 데이터인지 정해줘야

pencil 전체 값이 변경하는 것을 막을 수 있다. 

 

 

 

✔️  column 추가하기 

ALTER TABLE tableName ADD columnName dataType;

ALTER TABLE products

    -> ADD stock INT;

 

stock이 추가 된 것을 볼 수 있다. 

 

 

 

✔️  stock column에 데이터 채우기 

 

UPDATE products SET stock = 32 WHERE id = 1;

UPDATE products SET stock = 12 WHERE id = 2;

 

내용이 채워진 것을 볼 수있다. 

 

 

 

 

 

DELETE

 

✔️ 테이블 지우기

DROP TABLE tableName;

DROP TABLE customers;

 

 

✔️ 테이블 안 데이터 싹 다 지우기 

TRUNCATE TABLE tableName;

TRUNCATE TABLE customers; 

 

 

✔️ 테이블 안 데이터 일부 지우기 

 

DELETE FROM tableName WHERE condition;

 

pencil이 지워진 것을 알 수 있다. 

 

 

 

 

columns 

테이블에 culumn 추가하기 

ALTER TABLE tableName

ADD columnName datatype;

ALTER TABLE Customers
ADD Email varchar(255);

 

 

테이블에 culumn 삭제하기 

ALTER TABLE tableName

DROP COLUMN email;

ALTER TABLE Customers
ADD Email varchar(255);

 


 

BACKUP

백업할 때는 현재 데이터베이스가 있는 드라이브가 아닌 

다른 곳에 해야한다. 그래야 디스크 크래쉬가 일어났을 때 

백업 파일은 보존 할 수 있다. 

 

데이터베이스 full back up 할 때 

BACKUP DATABASE databaseName

TO DISK = 'filepath';

 

BACKUP DATABASE testDB

TO DISK = 'D:\backups\testDB.bak';

 

데이터베이스 부분 백업 할 때 (Back Up with Differential Statement)

최근 풀백업 이후의 변경사항 백업이 된다. 

그래서 Differental Back Up은 백업 시간을 줄여준다. 

 

BACKUP DATABASE databaseName 

TO DISK = 'filepath'

WITH DIFFERENTIAL;

 

BACKUP DATABASE testDB

TO DISK = 'D:\backups\testDB.bak'

WITH DIFFERENTIAL;

 

 

 

 

 

-- 출처 --

유데미 강의 

W3School

https://www.w3schools.com/sql/default.asp

 

 

 

 

'Databases > SQL' 카테고리의 다른 글

SQL INNER JOIN  (0) 2022.01.08
MYSQL 제약조건 알아보기 | NOT NULL | UNIQUE 등  (0) 2022.01.07
맥에서 mysql 다운받는 법(Monterey OS)  (0) 2022.01.05
데이터베이스 SQL vs NOSQL  (0) 2021.11.12

댓글