[데이터 취업 스쿨 스터디 노트] 8. SQL 기초(Database 정의/관리, User 관리/권한 관리, Table 생성 및 관리)

WHIT·2024년 6월 3일
0

Data Scientist

목록 보기
10/18

< 수강분량 : SQL CH.1 ~ 3 >

✅ Database 정의

- Database 란

여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

- DBMS 란 (Database Management System)

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

- 관계형 데이터베이스 란 (RDB : Relational Database)

서로간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간

- SQL 이란? (Structured Query Language)

데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어

- SQL 구성

  • 데이터 정의 언어 (DDL: Data Definition Language)
    CREATE, ALTER, DROP 등의 명령어

  • 데이터 조작 언어 (DML: Data Manipulation Language)
    INSERT, UPDATE, DELETE, SELECT 등의 명령어

  • 데이터 제어 언어 (DCL: Data Control Language)
    GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어

✅ Database 관리

root 계정으로 mysql 에 접속

mysql -u root -p

현재 database 목록 확인

show databases;

Database 이름을 지정하여 생성

# testdb 라는 이름의 데이터베이스 생성 및 확인
CREATE DATABASE testdb;

해당 데이터베이스 사용

USE testdb;

database 삭제

DROP DATABASE testdb;

✅ User 관리

User 조회

사용자 정보는 mysql 에서 관리하므로 일단 mysql 데이터베이스로 이동후 조회

use mysql;
SELECT host, user FROM user;

User 생성 - localhost

# 현재 PC 에서만 접속 가능한 사용자를 비밀번호와 함께 생성
CREATE USER 'username'@'localhost' identified by 'password';

# 현재 PC 에서 접속 가능한 사용자를 비밀번호와 함께 생성 (noma, 1234)
CREATE USER 'noma'@'localhost' identified by '1234';

User 생성 - %

# 외부에서 접속 가능한 사용자를 비밀번호와 함께 생성
CREATE USER 'username'@'%' identified by 'password';

# 외부에서 접속 가능한 사용자를 비밀번호와 함께 생성 (noma, 1234)
CREATE USER 'noma'@'%' identified by '1234';

User 삭제

# 접근 범위에 따라 같은 이름의 사용자여도 별도로 삭제

DROP USER 'username'@'localhost';
DROP USER 'username'@'%';

DROP USER 'noma'@'localhost';
DROP USER 'noma'@'%';

✅ User 권한 관리

실습환경 만들기

# 권한 관리를 실습하기 위한 Database (testdb) 생성
CREATE DATABASE testdb;

# 권한 관리를 실습하기 위한 사용자 (id : noma@localhost, password : 1234) 생성
use mysql;
CREATE USER 'noma'@'localhost' identified by '1234';

User 권한 확인

# 사용자에게 부여된 모든 권한 목록을 확인
SHOW GRANTS FOR 'username'@'localhost';
SHOW GRANTS FOR 'noma'@'localhost';

# 사용자에게 특정 데이터베이스의 모든 권한 부여
GRANT ALL ON dbname.* to 'username'@'localhost';
GRANT ALL ON testdb.* to 'noma'@'localhost';

# 참고 - 수정내용이 적용이 되지 앟은 경우 새로 고침
FLUSH PRIVILEGES;

# 사용자에게 특정 데이터베이스의 모든 권한을 삭제
REVOKE ALL ON dbname.* from 'username'@'localhost';
REVOKE ALL ON testdb.* from 'noma'@'localhost';

✅ Table 생성 및 관리

실습할 데이터베이스 생성

# zerobase 라는 이름의 데이터베이스 생성
CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;

Table 생성 문법

CREATE TABLE tablename
(
	columnname datatype,
    columnname datatype,
    ...
)

# id(int)와 name(varchar(16)) 칼럼을 가지는 mytable 이라는 이름의 테이블 생성
CREATE TABLE mytable(id int, name varchar(16));

Table 목록 확인 문법

SHOW TABLES;

Table 정보 확인 문법

DESC tablename;

# mytable 테이블 정보 확인
DESC mytable;

Table 이름 변경 문법

ALTER TABLE tablename
RENAME new_tablename;

# mytable 이름을 person 으로 변경
ALTER TABLE mytable RENAME person;

Table Column 추가 문법

ALTER TABLE tablename
ADD COLUMN columnname datatype;

# person 테이블에 agee(double) 컬럼 추가
ALTER TABLE person ADD COLUMN agee double;

Table Column 변경 문법 - DataType

ALTER TABLE tablename
MODIFY COLUMN columnname datatype;

# person 테이블의 agee 컬럼의 데이터 타입을 int 로 변경
ALTER TABLE person
MODIFY COLUMN agee int;

Table Column 변경 문법 - Name

ALTER TABLE tablename
CHANGE COLUMN old_columnname new_columnname new_datatype;

# person 테이블의 agee 컬럼의 데이터 타입을 int 로 변경
ALTER TABLE person
CHANGE COLUMN agee age int;

Table Column 삭제 문법


ALTER TABLE tablename
DROP COLUMN columnname;

# person 테이블의 age 컬럼을 삭제
ALTER TABLE person
DROP COLUMN age;

Table 삭제 문법

DROP TABLE tablename;

# person 테이블 삭제
DROP TABLE person;

"이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다."

0개의 댓글