기초부터 시작하는 코딩/PHP

MySQL을 배워봅시다! 01. 그래서 MySQL이 뭔가요?

kebab00 2023. 3. 13. 20:47

728x90

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다.

- MySQL은 다중 사용자, 다중 스레드 RDBMS로서, 데이터의 안정성과 보안성을 제공합니다. MySQL은 대부분의 운영 체제에서 작동하며, 웹 애플리케이션 개발, 데이터 분석, 빅 데이터, 클라우드 기반 애플리케이션 등에 많이 사용됩니다. 

 

- MySQL은 SQL(Structured Query Language)을 사용하여 데이터를 관리합니다. SQL은 데이터베이스에 저장된 데이터를 조작하기 위한 표준적인 언어로서, 데이터를 검색, 삽입, 업데이트, 삭제하는 데 사용됩니다. MySQL은 이러한 SQL 문을 이용하여 데이터를 쿼리 하고, 데이터의 무결성을 유지하며, 데이터베이스를 관리합니다.

 

- MySQL은 사용이 간편하며, 대용량 데이터베이스를 처리할 수 있는 고성능 기능을 제공합니다. 또한, 오픈 소스로서, 다양한 개발자들이 지속적으로 개발 및 유지보수하고 있어, 사용자들이 다양한 문제들을 해결할 수 있는 방법을 제공합니다.

 

- MySQL은 PHP 스크립트 언어와 상호 연동이 잘 되면서 오픈소스로 개발된 무료 프로그램입니다. 그래서 홈페이지나 쇼핑몰(워드프레스, Cafe24, 그누보드, 제로보드)등 일반적으로 웹 개발에 널리 사용하고 있습니다.

MySQL 설치

- MAMP란 프로그램을 사용하여 MySQL을 실행합니다.

- MAMP란 웹사이트를 개발할 때 쓰이는 기술 스택인 macOS, Apache, MySQL, PHP의 약어이자 솔루션 스택이다.

-  다운로드 링크 : https://www.mamp.info/en/downloads/

MySQL 실행

MAMP를 실행 시킨 뒤 윈도우는 cmd, Mac은 터미널을 사용하여  MAMP의 bin파일에 들어가 준 뒤  아이디와 비밀번호를 입력해 주면 준비는 끝이 납니다.

윈도우 :

경로 : cd c:\/MAMP/bin/mysql/bin 

로그인 : mysql -uroot -proot

Mac : 

경로 : cd /Applications/MAMP/Library/bin

로그인 : ./mysql -uroot -proot

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 501
Server version: 5.7.39 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

- Mac 기준으로 위의 창이 나오면 정상적으로 작동이 된 것입니다.

데이터베이스

데이터베이스 보기

- 현재 데이터베이스 안의 목록을 보는 방법입니다.

- 문법 : show databases;

mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

- 위의 그림처럼 나오는데 Database 아래의 부분이 데이터베이스의 목록입니다.

데이터베이스 만들기

- 데이터베이스를 만드는 방법입니다.

- 문법 : create database 데이터베이스 이름;

mysql> create database sample01;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sample01           |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

- create database sample01;이라는 문구를 통해 sample01이라는 데이터베이스를 만들었습니다.

데이터베이스 사용

- 문법 : use 데이터베이스 이름;

mysql> use sample01;
Database changed

- sample01이라는 데이터베이스를 사용하겠다고 선언(?)한 것입니다.

데이터베이스 삭제

- 만들었던 데이터베이스를 삭제하는 방법입니다.

- 문법 : drop database 데이터베이스 이름;

mysql> drop database sample01;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

- 데이터베이스를 삭제해준 뒤 show databases를 사용하여 삭제된 데이터베이스를 확인한 모습입니다.

테이블

테이블 만들기

- 문법 : create table 테이블 이름;

mysql> create table member (
->     myMemberID int(10) unsigned auto_increment,
->     youEmail varchar(40) NOT NULL,
->     youName varchar(20) NOT NULL,
->     youPass varchar(20) NOT NULL,
->     youBirth int(20) NOT NULL,
->     youAge int(5) NOT NULL,
->     regTime int(20) NOT NULL,
->     PRIMARY KEY (myMemberID)
-> ) charset=utf8;
Query OK, 0 rows affected (0.02 sec)

- 안에 내용도 같이 넣어주어야 합니다.

테이블 전체보기

- 문법 : show tables;

mysql> show tables;
+--------------------+
| Tables_in_sample01 |
+--------------------+
| member             |
+--------------------+
1 row in set (0.00 sec)

- 현재 가지고 있는 테이블을 모두 보여줍니다.

테이블 보기

- 문법 : desc 테이블 이름;

mysql> desc member;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| myMemberID | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| youEmail   | varchar(40)      | NO   |     | NULL    |                |
| youName    | varchar(20)      | NO   |     | NULL    |                |
| youPass    | varchar(20)      | NO   |     | NULL    |                |
| youBirth   | int(20)          | NO   |     | NULL    |                |
| youAge     | int(5)           | NO   |     | NULL    |                |
| regTime    | int(20)          | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)

- 테이블 안에 있는 데이터를 보여주는 방법입니다.

테이블 삭제

- 문법 : drop table 테이블 이름; 

mysql> drop table member;
Query OK, 0 rows affected (0.02 sec)

- 테이블을 삭제하는 방법입니다.

테이블 복사

- 테이블을 복사하는 방법은 여러 가지 있습니다.

01. CREATE TABLE 구문 사용하여 테이블 복사

CREATE TABLE new_table_name LIKE original_table_name;

 - 이 명령문은 original_table_name의 스키마를 복사하여 new_table_name을 생성합니다. 하지만, new_table_name은 original_table_name의 데이터를 포함하지 않습니다. 

02. INSERT INTO 구문 사용하여 데이터 복사

INSERT INTO new_table_name SELECT * FROM original_table_name;

- 이 명령문은 original_table_name의 데이터를 new_table_name에 복사합니다. 하지만, new_table_name의 스키마는 original_table_name의 스키마와 일치해야 합니다.

03. SELECT INTO 구문 사용하여 테이블 생성 및 데이터 복사

SELECT * INTO new_table_name FROM original_table_name;

- 이 명령문은 original_table_name의 스키마와 데이터를 new_table_name으로 복사합니다.

- 위의 방법들 중 어떤 방법을 사용하든, 테이블을 복사하기 전에 데이터베이스에서 테이블 이름이 충돌하지 않도록 주의해야 합니다. 또한, 테이블 이름뿐만 아니라 다른 속성들도 복사해야 하는 경우에는 CREATE TABLE 구문을 사용하여 새로운 테이블을 만들고 ALTER TABLE 구문을 사용하여 다른 속성들을 추가할 수 있습니다. 

스키마란?

- 스키마는 테이블의 구조, 컬럼 이름, 데이터 타입, 제약 조건 등의 정보를 정의하는 것입니다. 
- 스키마는 데이터베이스에서 테이블의 뼈대를 형성하며, 데이터베이스 시스템이 데이터를 저장하고 처리할 수 있도록 구조화된 형태로 제공됩니다.
- 즉 스키마를 복사한다는 말이나 스키마가 일치해야 한다는 말은 테이블의 구조를 복사한다 혹은 구조가 일치해야한다는 말입니다.