DATABASE - MySQL✨

April·2021년 4월 4일
0

🌱server

목록 보기
1/18
post-thumbnail

개인 공부를 위해 작성했습니다

DATABASE 란?

매우 방대한 기능을 가지고 있는 정보 도구

  • 데이터베이스는 input과 output으로 나뉜다.
  • 데이터베이스는 CRUD가 매우 중요하다
  • 데이터베이스는 CRUD를 용이하게 해준다

  • 전문적인 DB는 사람이 일일이 작성하지 않고도 어떤 조건에 따라 자동적으로 CRUD를 할 수 있는 기능이 있다. 완전 고마운 기능이다👍
    • file → spreadsheet → database

DATABASE - MySQL

1994년 스웨덴에서 개발
무료이면서, 오픈소스이고, 3대 데이터베이스 중에 하나인 MySQL

  • 관계형 DB

●MySQL의 구조

  • 엑셀과 같은 스프레드시트와 비슷한 구조
  • 표(table)로 저장!
  • 많아진 표를 정리정돈해야 하는데
  • 서로 연관된 표(데이터)들을 연관되어 있지 않은 표들과 분리하는 폴더가 있는데
  • 이 폴더가 데이터베이스(DATABASE)이다
    즉, 연관된 데이터들을 그룹핑한 폴더 = 스키마(schema)
  • 이 데이터베이스들을 그룹핑 한 것이 데이터베이스 서버라고 한다
  • 데이터베이스는 자체적인 보안 체제가 있음. 사용자별 권한이 있다

●서버접속

  • ./mysql -uroot -p root라는 유저로 접속하며 패스워드를 묻는다
    🚩집중! root는 강력한 권한을 가진 관리자 권한이기 때문에 root 계정으로 직접 작업하기 보다는, 별도의 관리자 계정을 생성하여 관리하는 것이 안전하다

●mysql create database

  • mysql> CREATE DATABASE databaseName;

✨참고✨ 명령어가 끝나면 ;(세미콜론)을 붙힌다

  • ex) CREATE DATABASE testDB;

✨참고✨ 명령어 입력 커서에서 화살표"↑"를 입력하면 이전 명령어를 찾을 수 있다

○mysql delete database

(데이터베이스 생성할 때 에러발생하면 지우고 다시하면 된다!!!)

  • mysql> DROP DATABASE databaseName;

●how to show database list in mysql

(database를 생성했다면 학인해보자!)

  • mysql> SHOW {DATABASES | SCHEMAS};

mysql> SHOW DATABASES;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.01 sec)

●생성된 데이터베이스를 사용하겠다고 mysql에게 알려주기

  • mysql> USE testDB;
  • 이렇게 명령하면, musql은 지금부터 입력하는 명령어를 testDB라는 스키마를 대상으로 명령 실행

SQL과 테이블의 구조

●SQL이란?

  • Structured 구조화 된
  • Query 데이터를 읽고/쓰고/생성하고/삭제하는 요청어
  • Language
  • 특징
    1. 쉽고
    2. 중요하다
    3. 스프레드시트는 최대 6만5000개의 데이터 저장이 가능하지만,
    4. 데이터베이스는 10억개의 데이터 저장이 가능하다

●create table in mysql cheat sheet

  • table 생성
    • 기본 문법 CREATE TABLE tableName();
    • 실습 code
CREATE TABLE topic(
-> id INT(11) NOT NULL AUTO_INCREMENT,
   // 컬럼(열)의 이름 | 데이터타입(길이) | 공백을 허용하지 않겠다 | 자동으로 증가(중복x)
-> title VARCHAR(100) NOT NULL,
-> description TEXT NULL,
-> created DATETIME NOT NULL,
-> author VARCHAR(30) NULL,
-> profile VARCHAR(100) NULL,
-> PRIMARY KEY(id)); 
    // 데이터베이스야! id값은 각각의 값이 중복되지 않은 고유의 값이어야 해! 라고 명령
  • SHOW TABLES; 만들어진 테이블을 확인할 수 있다
  • DESC topic; topic 이라는 데이블의 구조를 볼 수 있다
    mysql> DESC topic;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int          | NO   | PRI | NULL    | auto_increment |
| title       | varchar(100) | NO   |     | NULL    |                |
| description | text         | YES  |     | NULL    |                |
| created     | datetime     | NO   |     | NULL    |                |
| author      | varchar(30)  | YES  |     | NULL    |                |
| profile     | varchar(100) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

🚩집중! 데이터베이스는 여러가지 정책과 규제를 가지고 있고,
그러한 규제, 정책 덕분에 데이터들을 우리가 원하는 형식으로 깔끔하게 유지하는 데에 큰 도움을 준다


DATABASE의 본질, CRUD

●INSERT_mysql create row 쓰기!

  • 기본 문법 INSERT INTO tableName (column1, column2, column3, ...) VALUES (value1, value2, value3, ...)
  • 실습
    • INSERT INTO topic (title, description, created, author, profile) VALUES(' MySQL', ' MySQL is ...', NOW(), 'april', 'developer');

●SELECT 읽기!

🚩집중! SELECT 가장 많이 사용되는 명령어
두 번째로 많이 사용되는 명령어는 CREATE
그 다음으로 많이 사용되는 명령어는 INSERT

  • SELECT * FROM topic; topic이라는 테이블의 데이터를 보여줘

mysql> SELECT * FROM topic;

+----+--------+---------------+---------------------+--------+-----------+
| id | title  | description   | created             | author | profile   |
+----+--------+---------------+---------------------+--------+-----------+
|  1 |  MySQL |  MySQL is ... | 2021-04-04 21:18:42 | april  | developer |
+----+--------+---------------+---------------------+--------+-----------+
1 row in set (0.00 sec)

mysql> SELECT * FROM topic;
+----+------------+--------------------+---------------------+--------+----------------+
| id | title      | description        | created             | author | profile        |
+----+------------+--------------------+---------------------+--------+----------------+
|  1 |  MySQL     |  MySQL is ...      | 2021-04-04 21:18:42 | april  | developer      |
|  2 | ORACLE     | Oracle is ...      | 2021-04-04 00:00:00 | user1  | developer      |
|  3 | SLQ Server | SQL Server is ...  | 2021-04-04 21:24:32 | user2  |                |
|  4 | PostgreSQL | Postgre SQL is ... | 2021-04-04 21:25:51 | april5 | data scientist |
|  5 | MongoDB    | MongoDB is ...     | 2021-04-04 21:26:36 | YURIM  | developer      |
+----+------------+--------------------+---------------------+--------+----------------+
5 rows in set (0.00 sec)

○SELECT 원하는 것만 읽기!

  • 기본 문법 SELECT column1, column2 FROM topic;
  • 실습: 원하는 column(열)값만 보기
    • SELECT id, title, created, author FROM topic;
+----+------------+---------------------+--------+
| id | title      | created             | author |
+----+------------+---------------------+--------+
|  1 |  MySQL     | 2021-04-04 21:18:42 | april  |
|  2 | ORACLE     | 2021-04-04 00:00:00 | user1  |
|  3 | SLQ Server | 2021-04-04 21:24:32 | user2  |
|  4 | PostgreSQL | 2021-04-04 21:25:51 | april5 |
|  5 | MongoDB    | 2021-04-04 21:26:36 | YURIM  |
+----+------------+---------------------+--------+
5 rows in set (0.00 sec)
  • 실습: 원하는 column(열) 중에 특정 값만 보기
    • SELECT id, title, created, author FROM topic WHERE author='april';
+----+--------+---------------------+--------+
| id | title  | created             | author |
+----+--------+---------------------+--------+
|  1 |  MySQL | 2021-04-04 21:18:42 | april  |
+----+--------+---------------------+--------+
1 row in set (0.00 sec)
  • 실습: 정렬 ORDER BY
    • SELECT id, title, created, author FROM topic WHERE author='april' ORDER BY id DESC; id값을 기준으로 큰 숫자부터 나오도록 명령
+----+---------+---------------------+--------+
| id | title   | created             | author |
+----+---------+---------------------+--------+
|  6 | MongoDB | 2021-04-04 21:39:36 | april  |
|  1 |  MySQL  | 2021-04-04 21:18:42 | april  |
+----+---------+---------------------+--------+
2 rows in set (0.00 sec)
  • 실습: LIMIT 최대 1개까지만 보여줘!
    • SELECT id, title, created, author FROM topic WHERE author='april' ORDER BY id DESC LIMIT 1;
+----+---------+---------------------+--------+
| id | title   | created             | author |
+----+---------+---------------------+--------+
|  6 | MongoDB | 2021-04-04 21:39:36 | april  |
+----+---------+---------------------+--------+
1 row in set (0.00 sec)

MySQL을 잘한다? = SELECT문을 잘 사용한다!

●UPDATE sql update mysql 수정!

  • 기본 문법 UPDATE tableName SET 변경할 내용들
    • 실습 UPDATE topic SET description='Oracle is ...', title='Oracle' WHERE id=2;

🚩집중! WHERE 를 지정하지 않으면 모든 row값들이 변경된다!

●DELETE sql delete in mysql 삭제!

  • 기본 문법 DELETE FORM tableName;
  • 실습 DELETE FROM topic WHERE id = 5;

🚩집중! WHERE 를 지정하지 않으면 모든 row값들이 삭제되므로 주의!!!!!


목표!

  • 데이터베이스란 무엇이고,
  • 데이터베이스 중 관계형 DB인 mysql의 기본 개념을 이해하고
  • 실습을 통해
    1. testDB 라는 데이터베이스 서버에서
    2. topic이라는 테이블을 만들고
    3. 데이터를 CRUD하는 방법에 대해 익힌다

생활코딩_DATABASE1
생활코딩_DATABASE2 - MySQL

profile
🚀 내가 보려고 쓰는 기술블로그

0개의 댓글