MySQL 정리
Web/Database

MySQL 정리

 1. 데이터베이스의 의의

: 여러 사람에 의해 공유되어 사용될 목적으로 통합되어 관리되는 데이터의 집합을 말하는 개념이다. 줄여서 DB라고 하며, 특 정 다수에게 필요한 정보를 제공한다던지 조직 내에서 필요로 하는 정보를 체계적으로 축적하여 그 조직 내의 이용자에게 사용되는 것이다. -> 데이터를 row와 column으로 나눠진 표 형태로 저장하는 관계형 데이터베이스가 주로 사용되고 있다.

 

 

2. MySQL의 구조

    : 일단 TABLE은 엑셀의 스프레드 시트와 비슷한 구조를 가지고 있다. 회원정보, 댓글 정보 등을 저장하는 표등으로 활용 할 수 있다. -> 또한 비슷한 데이터를 가진 표들을 그룹핑 해 놓은 일종의 폴더와 같은 역할을 하는 것을 데이터베이스 라고 한다. (= Schema와 같은 용어이다.)

 

 

데이터 베이스의 구조

3. MySQL 접속 방법

 : 데이터베이스를 통해 얻을 수 있는 장점

   - 보안: 데이터를 안전하게 보관할 수 있다.

   - 권한기능: 데이터베이스를 사용하는 여러 유저들을 각자의 접근 레벨을 적용하여 관리할 수 있다.

 : mysql -uroot -p 로 접속 할 수 있다. (CMD로 접속할 시에는 시스템 속성에서 환경변수를 설정해줘야 한다.)

 

4. MySQL Schema 의 사용

  -> 테이블을 만들고, 삭제하고, 검색할 수 있다.

create database 데이터베이스명;// 스키마를 만드는 명령어
drop database 'dbname';// 스키마를 삭제하는 명령어
show databases;// 데이터베이스 목록 출력하기
use 'dbname'; // 내가 만든 데이터베이스에 접속하기
// 이제 서버에서 내리는 명령어는 선택한 데이터베이스에 적용된다.

 

5. SQL과 테이블 구조

 : SQL 이란 Structed Query Language 로, 데이터베이스에게 질의를 날려서 데이터를 요청하는 언어이다.

 : 많은 데이터 시스템이 SQL을 통해서 관리되고 있다.

 : 테이블은 행과 열로 이루어진 표 형태로 이루어져 있다.

6. MySQL 테이블의 생성

https://devhints.io/mysql

 

MySQL cheatsheet

The one-page guide to MySQL: usage, examples, links, snippets, and more.

devhints.io

 

-> 해당하는 테이블을 만들어 보자.

use 'dbname' //어떤 데이터베이스를 사용할지 선택한다.
create table topic(
  id INT(11) NOT NULL AUTO_INCREMENT),
//한 컬럼을 만든다. 그렇지만 한 컬럼에 같은 자료형만 들어갈 수 있다. cheatsheet 에서 확인가능.
// NOT NULL: 값이 없는 것을 허용하지 않음(꼭 입력해야하는 데이터인경우)
// AUTO_INCREMENT: 자료를 입력하면 따로 하지 않아도 한 행을 자동으로 늘린다.
  title VARCHAR(100) NOT NULL,
  description TEXT NULL,
  created DATETIME NOT NULL,
  author VARCHAR(30) NULL,
  profile VARCHAR(100) NULL,
  PRIMARY KEY(id));
  //primary key-> 메인 키임을 알려준다. 또한 값이 중복되면 안된다는 것 을 알려준다.
  

 

7. CRUD (CREATE, READ, UPDATE, DELETE)

  1) CREATE: 데이터 집어넣기

 

 

DESC topic
INSERT INTO topic(id,title,description,created,author,profile) 
VALUES(1,'MySQL', 'MySQL is..',NOW(),'egoing','developer');

INSERT INTO topic(id,title,description,created,author,profile) 
VALUES(2,'ORACLE', 'ORACLE is..',NOW(),'egoing','developer');

 

 

2) READ: SELECT 구문 알아보기

https://dev.mysql.com/doc/refman/5.5/en/select.html

 

MySQL :: MySQL 5.5 Reference Manual :: 13.2.9 SELECT Statement

SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references] [WHERE whe

dev.mysql.com

-> 원하는 데이터만 골라서 읽을 수가 있다.

SELECT * FROM 'DBNAME';
//모든 데이터를 출력하게 된다.

SELECT (표시하고 싶은 COLUMN의 이름) FROM 'DBNAME';
//예를 들어서
SELECT id,title, author FROM topic;

SELECT id FROM topic WHERE author='egoing';
//select, from, where 순으로 순서가 정해져있다.

 

+) 응용

SELECT id,title,created,author FROM topic WHERE author='egoing' ORDER BY id DESC;
//정렬 순서가 역전되게 할 수 있다.

SELECT * FROM TOPIC;
//이것은 정보의 양이 너무 많아서 컴퓨터에 렉을 발생시킬수 있다.

SELECT id,title,created,author FROM topic WHERE author='egoing' ORDER BY id DESC LIMIT 2;
//정보의 양을 2개로 제한할 수 있다.

 

3) UPDATE

UPDATE 'dbname' SET description='ORACLE IS...',title='Oracle' WHERE id=2;
//set-> 바꿀 내용, where-> 바꿀 내용의 위치

 

4) DELETE

DELETE FROM topic WHERE id=5;
//where 구문 안넣으면 아예 전체 디비가 삭제될 수 있다.

 

 

 

8. 인터넷과 데이터베이스

 : 인터넷을 사용하기 위해서는 최소 두대의 컴퓨터가 필요하다. (정보를 요청하는 쪽과 정보를 제공하는 쪽이다)

-

: 데이터베이스 역시 데이터베이스 클라이언트와 제공하는 서버가 존재한다. 비슷한 구조를 갖고 있다고 생각하자.

  (MySQL 모니터가 데이터베이스 클라이언트이다.)

: 데이터베이스와 인터넷이 결합하면 그 힘이 좀더 강력해진다.  데이터베이스 서버에 전세계의 클라이언트들이 수많은 정보를 저장하고 삭제하는 등 여러가지 정보를 주고받고 관리하는 게 가능해지기 때문이다.