[zerobase_데이터취업스쿨] SQL_CH1, CH2_mysql기초

DONGYOON KIM·2024년 1월 11일

SQL

목록 보기
1/14

[MySQL]CH2

CH2_01~: 데이터베이스 정의

관계형 데이터베이스(RDBMS)란?

  • 서로간에 관계가 있는 데이터 테이블들을 모아놓은
    데이터 저장공간
  • 저장된 데이터베이스간 관계를 통해 삭제, 편집 등이 가능

SQL이란?

  • 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
  • DDL(데이터정의어)
    • CREATE: 데이터베이스, 테이블, 인덱스 등의 새로운 객체를 생성합니다.
      CREATE TABLE table_name (
          column1 datatype,
          column2 datatype,
          ...
      );
      
    • ALTER: 기존의 데이터베이스 객체를 수정합니다. 예를 들어, 테이블에 새로운 컬럼을 추가하거나, 컬럼의 데이터 타입을 변경할 수 있습니다.
      ALTER TABLE table_name
      ADD column_name datatype;
      
    • DROP: 기존의 데이터베이스 객체를 삭제합니다. 테이블이나 데이터베이스 자체를 삭제할 수 있습니다.
      DROP TABLE table_name;
  • DML(데이터조작어)
    • INSERT: 테이블에 새로운 데이터 행을 삽입합니다.
      INSERT INTO table_name (column1, column2, ...)
      VALUES (value1, value2, ...);
      
    • UPDATE: 테이블의 기존 데이터를 수정합니다.
      UPDATE table_name
      SET column1 = value1, column2 = value2, ...
      WHERE condition;
      
    • DELETE: 테이블에서 데이터를 삭제합니다.
      DELETE FROM table_name WHERE condition;
      
    • SELECT: 테이블에서 데이터를 조회합니다.
      SELECT column1, column2, ...
      FROM table_name
      WHERE condition;
  • DCL(데이터제어어)
    • GRANT: 사용자에게 데이터베이스 객체에 대한 권한을 부여합니다.
      GRANT privilege_name
      ON object_name
      TO user_name;
      
    • REVOKE: 사용자에게 부여된 권한을 제거합니다.
      REVOKE privilege_name
      ON object_name
      FROM user_name;
      
    • COMMIT: 트랜잭션을 완료하고 데이터베이스 변경 사항을 영구적으로 만듭니다.
      COMMIT;
      
    • ROLLBACK: 트랜잭션을 취소하고 이전 상태로 되돌립니다.
      ROLLBACK;

CH2_02~: 데이터베이스를 사용해보자

현재 DATABASE 목록보기

mysql> SHOW DATABASES;

DB생성하기

CREATE DATABASE testdb;

testdb로 이동

USE testdb;

testdb 삭제

DROP DATABASE testdb;

CH2_05~: USER관리

USER 정보에 접근해보기

# USER테이블에서 HOST와 USER 정보 가져오기
SELECT HOST, USER FROM USER;

USER생성

  • 현재 PC에서 접속가능한 NOMA유저 비번 1234 생성하기
    CREATE USER 'NOMA'@'LOCALHOST' IDENTIFIED BY '1234';

  • 외부에서 접속 가능한 사용자 생성( ‘LOCALHOST’대신 ‘%’넣음)
    • USER이름이 같아도 HOST가 다르면
      (EX, 외부접속가능한 USER, 로컬에서만 접속가능한 USER)
      에러나지 않는다

      CREATE USER 'NOMA'@'%' IDENTIFIED BY '1234';

USER 삭제

DROP USER 'NOMA'@'%';
DROP USER 'NOMA'@'LOCALHOST';

CH2_07~: DATABASE 만들기

DB생성

  • testdb생성 및 LOCALHOST에서만 접근 가능한 USER 생성
    CREATE DATABASE testdb;
    Query OK, 1 row affected (0.01 sec)
    
    # 유저정보는 MYSQL데이터베이스에서만 접근가능하기 때문에
    # USE MYSQL;로 DB에 접근 
    use mysql;
    Database changed
    
    CREATE USER 'noma'@'localhost' IDENTIFIED BY '1234';
    Query OK, 0 rows affected (0.01 sec)
    
    SELECT HOST,USER FROM USER;

권한 확인하기

mysql> SHOW GRANTS FOR 'noma'@'localhost';
+------------------------------------------+
| Grants for noma@localhost                |
+------------------------------------------+
| GRANT USAGE ON *.* TO `noma`@`localhost` |
+------------------------------------------+
1 row in set (0.00 sec)

특정 사용자에게 DB의 모든 권한 부여

mysql> GRANT ALL ON testdb.* TO 'noma'@'localhost';
Query OK, 0 rows affected (0.01 sec)

권한이 부여되었는지 확인

mysql> SHOW GRANTS FOR 'noma'@'LOCALHOST';
+----------------------------------------------------------+
| Grants for noma@localhost                                |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO `noma`@`localhost`                 |
| GRANT ALL PRIVILEGES ON `testdb`.* TO `noma`@`localhost` |
+----------------------------------------------------------+
2 rows in set (0.00 sec)

REVOKE를 통해 권한 삭제하기

mysql> REVOKE ALL ON testdb.* FROM 'noma'@'LOCALHOST';

CH3_01~: 테이블 생성하기

zerobase라는 이름의 DB생성하기

mysql> CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.01 sec)

## DEFAULT CHARACTER SET utf8mb4;이것은 UTF8MB4라는 인코딩쓰겠다는것

TABLE이란?

  • 행과 열로 구성된 데이터가 저장되는 형태

TABLE 생성하기

## CREATE TABLE TABLENAME(ID INT, NAME VARCHAR(16));
## ID(정수형)와 NAME(가변문자형) 칼럼을 가진 TABLE을 생성
mysql> CREATE TABLE mytable
    -> (
    ->  id int,
    ->  name varchar(16)
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> SHOW TABLES;
+------------------------------------------------------+
| Tables_in_mysql                                      |
+------------------------------------------------------+
| columns_priv                                         |
| component                                            |
| db                                                   |
| default_roles                                        |
| engine_cost                                          |
| func                                                 |
| general_log                                          |
| global_grants                                        |
| gtid_executed                                        |
| help_category                                        |
| help_keyword                                         |
| help_relation                                        |
| help_topic                                           |
| innodb_index_stats                                   |
| innodb_table_stats                                   |
| mytable                                              |
| ndb_binlog_index                                     |
| password_history                                     |
| plugin                                               |
| procs_priv                                           |
| proxies_priv                                         |
| replication_asynchronous_connection_failover         |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version              |
| replication_group_member_actions                     |
| role_edges                                           |
| server_cost                                          |
| servers                                              |
| slave_master_info                                    |
| slave_relay_log_info                                 |
| slave_worker_info                                    |
| slow_log                                             |
| tables_priv                                          |
| time_zone                                            |
| time_zone_leap_second                                |
| time_zone_name                                       |
| time_zone_transition                                 |
| time_zone_transition_type                            |
| user                                                 |
+------------------------------------------------------+
39 rows in set (0.00 sec)

TABLE 정보 확인

mysql> DESC MYTABLE;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(16) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

0개의 댓글