본문 바로가기

KnockOn

[2주차 TIL] KnockOn Bootcamp Mysql

728x90

mysql은 생활코딩 유튜브를 통해 편하게 학습할 수 있다

 

Mysql


mysql은 가장 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템이다

데이터를 효율적으로 저장, 관리 및 검색을 위해 SQL(Structured Query Language)을 사용한다

 

sql 접속

mysql -u root -p

 

데이터베이스 및 테이블 생성 방법

 

CREATE DATABASE test;

test 라는 db 생성

 

USE test;

test db사용

 

CREATE TABLE users(

users라는 테이블 생성

 

id INT AUTO_INCREMENT PRIMARY KEY,

id 라는 열을 만들고 INT타입 자동으로 증감되는 기본키로 설정

 

username VARCHAR(50) NOT NULL,

username이라는 열을 만들고 varchar(문자열)타입 최대 50자, NULL값을 허용하지 않고 설정

 

email VARCHAR(100) NOT NULL);

email 이라는 열을 만들고 varchar타입 최대 100자 NULL값을 허용하지 않고 설정

 

CREATE DATABASE example;

USE example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

 

 

 

 

데이터 조작 및 관리를 위한 기본적인 SQL 쿼리문

 

데이터 삽입

INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');

users테이블에 데이터 삽입, username, email열을 지정, 각각 'user1', 'user1@example.com'데이터를 삽입

 

데이터 조회

SELECT * FROM users;

users 테이블의 모든 열을 조회

 

데이터 갱신

UPDATE users SET email = 'newemail@example.com' WHERE id = 1;

users테이블의 데이터 갱신, email 열의 값을 newemail@example.com으로 변경

where로 id가 1인값만 갱신

 

데이터 삭제

DELETE FROM users WHERE id = 1;

users 테이블에서 id가 1인 데이터 삭

 

 

데이터베이스 관리

 

사용자 생성

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

SQL에 새로운 사용자 생성 newuser는 사용자 이름 localhost는 사용자가 연결 할 수 있는 호스트

password는 해당 사용자의 비밀번호

 

권한 부여

GRANT ALL PRIVILEGES ON example_db.* TO 'newuser'@'localhost';

지정된 사용자에 모든 권한을 부여, example_db 에 *모든 테이블에 대해

newuser에게 권한 부여 localhost는 이 사용자가 접속할 수 있는 호스트 지정

 

 

 

 

데이터베이스 백업

mysqldump -u username -p example_db > example_db_backup.sql

mysqldump : qordjq ehrn

-u username : username사용자 지정

-p : 비밀번호 입력 요청

example_db : 백업할 db이름

> example_db_backup.sql : 백업 결과를 저장할 파일 이름

 

 

데이터베이스 복원

데이터베이스 백업을 하는 명령어 mysqldump와 유사하지만 다른점은

mysql -u username -p example_db < example_db_backup.sql

dump를 사용하지 않고 화살표 방향이 < 왼쪽을 가르킨다

 

 

 

 

 

MYSQL 실습


위에 적은 명령어들로 먼저 실습을 진행해 보겠다

 

sql 접속

mysql bin 디렉토리에서 ./mysql.exe -uroot -p

 

SHOW DATABASES; : 현재 있는 db 보기

 

 

example db 생성

 

 

user table 생성

 

테이블을 생성하고 SHOW TABLES; 명령어를 사용해 테이블을 볼 수 있다

DESCRIBE 명령어를 사용하면 db 정보를 볼 수 있어 용이하다

 

 

username에 데이터 삽입  

 

SELECT * FROM users;를 사용해 db 데이터 확인

*은 전부라는 의미

 

username에 데이터 업데이트 

email 값에 newmail@example.com값을 id = 1에 넣는다

 

 

username 데이터 삭제 

id 가 1인 데이터를 삭제한다

WHERE id = 1을 사용하지 않는다면 전체가 삭제되니 주의

 

 

 

newuser 유저 생성 및 권한 부여

0000은 비밀번호이다

SELECT User, Host FROM mysql.user; 명령어는

mysql.user파일에 있는 user 정보를 보여준다

즉 존재하는 모든 유저를 보여준다

 

GRANT 명령어로 모든 권한을 부여한다

 

 

 

JOIN을 사용하여 두개의 테이블 조회하기

 

새로운 테이블 생성 8

id값으로 합치도록 하겠다

 

id 값이 2기때문에 test 테이블에는 2값을 넣었다

 

INNER JOIN 사용

 

SELECT users.username, test.date FROM users INNER JOIN test ON users.id = test.user_id;

users에 username 테이블 test에 date 테이블을 합친다

users db에서 INNER JOIN을 사용해 test 테이블을 users의 id 값과 test의 user_id값이 같은것을 묶는다

 

 

 

데이터베이스 접근 제한, 사용자 권한 설정하기

앞에서 한 내용도 있지만 새로 다시 해보겠다

CREATE USER 'testuser'@'localhost' IDENTIFIED BY '0000';

testuser라는 이름의 비밀번호가 0000인 user을 생성

 

GRANT ALL PRIVILEGES ON example.* TO 'testuser'@'localhost';

example db에 testuser에게 모든 권한 부여

 

FLUSH PRIVILEGES;

권한 적용

 

확인

새로운 터미널 창에서 testuser로 접속 후 example db에 접속해 보았다

가능한 것을 보니 권한 설정이 잘되었다