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 |
댓글