반응형

MySQL

안녕하세요, 미래의 멋진 개발자님들! 🚀

혹시 이런 경험 없으신가요?

"데이터? 그거 그냥 엑셀에 넣으면 되는 거 아냐?"
"개발자들은 맨날 숫자랑 코드만 보는데, 대체 뭘 어떻게 관리하는 걸까?"

맞아요, 우리 주변의 모든 웹사이트, 앱, 심지어 게임까지! 이 모든 것의 뒤에는 엄청나게 많은 데이터가 숨어 있고, 이 데이터를 똑똑하게 관리해주는 친구가 바로 데이터베이스(Database)입니다.

데이터베이스의 세계는 생각보다 넓어서, 데이터를 관리하는 방식에 따라 정말 다양한 종류가 존재해요.

우리가 흔히 들어본 Oracle, SQL Server 같은 거대 기업용 데이터베이스부터, 유연함이 특징인 MongoDB 같은 친구들도 있죠.

오늘은 그중에서도 아주 유명하고 강력한 데이터베이스 친구, MySQL에 대해 알아보는 시간을 가질 거예요.

"나는 비전공자인데...", "너무 어려울 것 같은데..."

걱정 마세요! 요즘 개발 트렌드에 맞춰, 비전공자분들도 고개를 끄덕이며 '아하!' 할 수 있도록 쉽고 재미있게 알려드릴게요.

자, 그럼 데이터의 보물창고로 함께 떠나볼까요?


📦 데이터베이스(DB), 대체 넌 누구냐?

상상해보세요! 여러분이 좋아하는 온라인 쇼핑몰에 접속했어요.

예쁜 옷들도 많고, 가전제품도 있고, 심지어 신선식품까지! 이 모든 상품 정보, 고객 정보, 주문 내역 등이 어디에 저장되어 있을까요? 만약 이걸 그냥 메모장이나 엑셀 파일 수백 개에 저장한다면... 맙소사! 새로운 상품을 추가하거나, 고객 정보를 찾거나, 주문 내역을 확인하는 건 거의 불가능에 가까울 거예요.

데이터베이스(DB)는 바로 이런 혼돈 속에서 빛을 발하는 존재예요.

쉽게 말해, 데이터를 체계적으로 저장하고, 필요할 때 빠르게 찾아 쓰고, 안전하게 관리해주는 똑똑한 창고라고 생각하시면 됩니다.

마치 도서관에서 책을 주제별, 저자별, 출판년도별로 깔끔하게 정리해 놓는 것처럼 말이죠! 덕분에 우리는 원하는 정보를 '짜잔!'하고 찾아낼 수 있고, 수많은 사람들이 동시에 접속해도 문제없이 서비스를 이용할 수 있답니다.


🔗 관계형 데이터베이스(RDBMS): 엑셀 시트들이 연결된 세상

 

데이터베이스는 여러 종류가 있지만, 그중에서도 가장 널리 사용되고 오늘 우리가 배울 MySQL이 속한 종류가 바로 관계형 데이터베이스(RDBMS: Relational Database Management System)입니다.

이름에서 뭔가 '관계'가 느껴지시죠?

RDBMS는 데이터를 마치 엑셀 시트(테이블)처럼 정리해요.

각 시트에는 행(Row/Record)과 열(Column/Field)이 있어서 데이터를 깔끔하게 담을 수 있죠.

  • 테이블(Table): 데이터를 저장하는 기본 단위. (예: 고객 정보, 상품 정보, 주문 내역 시트)
  • 행(Row/Record): 테이블에서 하나의 개체에 대한 정보. (예: 한 고객의 이름, 주소, 전화번호 등)
  • 열(Column/Field): 데이터의 특정 속성. (예: 이름, 주소, 상품명, 가격)

그리고 이 시트들(테이블)은 서로 관계를 맺을 수 있어요.

예를 들어, '주문 내역' 시트와 '상품 정보' 시트가 연결되어 있어서, 특정 주문 번호만 알아도 어떤 상품을 주문했는지 바로 알 수 있게 해주는 거죠. 이렇게 관계를 맺으면 데이터의 중복을 줄이고 훨씬 효율적으로 데이터를 관리할 수 있답니다!

이런 관계형 데이터베이스를 조작하기 위한 약속된 언어가 있는데, 이걸 바로 SQL(Structured Query Language)이라고 불러요.

다음 실습 글에서 이 SQL로 MySQL과 대화하는 법을 배울 거예요!


🐬 MySQL: 전 세계 웹 서비스를 움직이는 파워풀한 친구

 

드디어 오늘의 주인공, MySQL입니다!

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

'오픈소스'라는 건 누구나 무료로 사용할 수 있고, 전 세계 개발자들이 함께 만들고 발전시켜 나간다는 뜻이죠.

그래서 많은 기업들이 비용 부담 없이 강력한 데이터베이스 시스템을 구축할 때 MySQL을 선택한답니다.

MySQL의 매력은 여기서 끝이 아니에요!

  • 🚀 빠르고 안정적: 수많은 사용자가 동시에 접속하고 데이터를 요청해도 끄떡없이 빠르게 처리해줘요. 안정성도 뛰어나서 중요한 데이터를 안심하고 맡길 수 있죠.
  • 📈 뛰어난 확장성: 작은 개인 프로젝트부터 페이스북, 유튜브, 네이버 같은 초대형 서비스까지, 어떤 규모의 데이터도 유연하게 다룰 수 있어요.
  • 💻 다양한 운영체제 지원: 윈도우, 리눅스, 맥OS 등 어떤 컴퓨터 환경에서도 문제없이 잘 작동한답니다.
  • 🌍 거대한 커뮤니티: 전 세계적으로 엄청나게 많은 사용자와 개발자들이 있어서, 궁금한 점이 생기거나 문제가 발생했을 때 쉽게 도움을 받을 수 있어요.

이렇게 매력적인 MySQL이기에 우리가 매일 사용하는 수많은 웹 서비스와 앱의 뒤에서 묵묵히 데이터를 관리하고 있는 것이랍니다.


🛡️ 왜 우리는 MySQL을 배워야 할까요? (특히, 보안을 생각한다면!)

 

"나는 개발자가 될 것도 아니고, 데이터 만질 일도 없는데 MySQL을 왜 배워야 하지?" 라고 생각할 수도 있어요.

하지만 절대 그렇지 않답니다!

  1. 개발자의 필수 역량: 개발 분야에서 데이터베이스 지식은 이제 선택이 아닌 필수가 되었어요. 백엔드 개발은 물론이고, 프론트엔드 개발자도 데이터를 어떻게 다뤄야 하는지 알아야 협업이 가능하죠.
  2. 데이터 분석의 시작: 데이터를 이해하고 분석하는 능력은 모든 직군에서 중요해지고 있어요. MySQL을 알면 직접 데이터를 추출하고 인사이트를 얻는 능력을 키울 수 있습니다.
  3. 그리고 가장 중요하게, 보안!: 여러분, 웹 해킹의 상당수가 바로 데이터베이스를 노리는 공격이라는 사실을 아시나요? SQL 인젝션 같은 공격은 데이터베이스의 취약점을 파고들어 개인 정보를 유출하거나, 웹사이트를 마비시키기도 합니다.
    우리가 MySQL을 배우는 것은 단순히 데이터를 다루는 기술을 넘어, 데이터가 어떻게 저장되고 관리되는지 그 원리를 이해하는 것과 같아요. 이 원리를 알아야 어떤 부분이 위험한지 파악할 수 있고, 해커들이 어떤 방식으로 공격하는지 이해하며, 궁극적으로 안전한 서비스를 만드는 데 기여할 수 있습니다. 데이터를 모르면 보안도 어렵다는 말이 괜히 나오는 게 아니겠죠? 🧐

자, 어떠셨나요? MySQL이 생각보다 훨씬 흥미롭고 우리 주변에 가까이 있다는 것을 느끼셨기를 바랍니다!

다음 글에서는 오늘 배운 MySQL을 직접 설치하고, 콘솔에 접속해서 데이터베이스와 대화하는 첫걸음을 떼어볼 거예요.

"데이터? 그거 그냥 엑셀 아니었어?" 했던 분들도 MySQL 멋지게 데이터를 주무르는 자신의 모습을 발견하게 겁니다.

다음 시간에 만나요! 👋


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

오늘은 MySQL에 대한 개념 글에 이어서

아직 mysql에 대해 모르시거나

이 글 전에 읽어보시지 못하셨다면

아래 링크를 한번 보고 오시길 추천드립니다.

https://jdcyber.tistory.com/119

 

MySQL 개념 이해하기: 데이터베이스의 세계로 첫걸음!

MySQL안녕하세요, 미래의 멋진 개발자님들! 🚀혹시 이런 경험 없으신가요?"데이터? 그거 그냥 엑셀에 넣으면 되는 거 아냐?""개발자들은 맨날 숫자랑 코드만 보는데, 대체 뭘 어떻게 관리하는 걸

jdcyber.tistory.com

 

Mysql을 배우고 나서 아래 실습을 통해

간단한 명령어를 직접 연습해 보고

sql이 어떤 식으로 운용될 수 있는지

직접 알아보도록 하겠습니다.

주의

Sql 구문은 하나의 명령이 종료가 되면 

세미콜론(;)을 붙여주어야 합니다.

만약 세미콜론이 생략되면

2차 프롬프트(->)가 시작됩니다.

무조건 끝에 세미콜론을 붙이신다고 

생각해 주세요

MySQL 접속
bee@bee-box:~$ 
bee@bee-box:~$cd /var/www/bWAPP
bee@bee-box:/var/www/bWAPP$

root@bee-box:/var/www/bWAPP# mysql -u root -p

Enter password: bug
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.0.96-0ubuntu3 (Ubuntu)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
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.

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

cd /var/www/bWAPP를 이용하여

bWAPP 디렉터리로 이동합니다.

mysql -u root -p 명령어와 패스워드 

bug를 이용하여 Mysql 로컬 접속을 실시합니다.

show databases를 이용하여 

데이터베이스를 확인합니다.

가장 위에 있는 Information_schema 

Mysql에서 운영되는 데이터베이스, 

테이블, 칼럼의 모든 정보를 관리하는 DB입니다.

아래 보이는 bWAPP과 drupageddon 

bWAPP 시나리오에 사용하는 DB이며

맨 아래 mysql은 Mysql 운영과 관련된 

정보가 저장된 DB입니다.

 

DataBase 생성 및 삭제
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| bWAPP              | 
| drupageddon        | 
| test               | 
| mysql              | 
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)

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

create database ; 명령어를 이용하여 

데이트베이스를 생성하고

drop database ; 명령어 

데이터베이스를 삭제할 수 있습니다

(test 데이터베이스 생성)

테이블 생성 및 삭제
mysql> use test;
Database changed

mysql> show tables;
Empty set (0.00 sec)

mysql> create table linux (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.01 sec)

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

mysql> create table cisco (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.00 sec)

mysql> create table security (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.00 sec)

mysql> create table java (id int, login varchar(10), password varchar(10), username varchar(20), age int);
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_test   |
+------------------+
| cisco            | 
| java             | 
| linux            | 
| security         | 
+------------------+
4 rows in set (0.00 sec)

mysql> drop table java;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables; 
+------------------+
| Tables_in_test   |
+------------------+
| cisco            | 
| linux            | 
| security         | 
+------------------+
3 rows in set (0.00 sec)

use ; 명령어를 이용하여 test 데이터베이스를 사용하고

show tables ; 명령어 테이블을 확인합니다.

create table ; 명령어 리눅스 테이블을 생성하고 

cisco, security, java 테이블을 리눅스와 

동일하게 추가로 생성합니다.

(java 테이블은 삭제)

 
칼럼 속성 확인 & 데이터 값 입력
mysql> desc cisco;
+----------+-------------+------+-----+---------+-------+
| Field    |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(10) |  YES |     |   NULL  |       |
| password | varchar(10) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|   age    |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.021 sec)

mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Fiel d |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(10) |  YES |     |   NULL  |       |
| password | varchar(10) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.001 sec)

mysql> desc security;
+----------+-------------+------+-----+---------+-------+
|  Field   |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(10) |  YES |     |   NULL  |       |
| password | varchar(10) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.001 sec)

desc; 명령어를 이용하여 속성을 확인해 보고,

mysql> select * from cisco;
Empty set (0.000 sec)

mysql> insert into cisco values(1, 'cisco1', 'cisco1111', 'test', 23);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco values(2, 'cisco2', 'cisco2222', 'test', 26);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco (login, id, password, age, username) values('cisco3', 3, 'cisco3333', 29, 'test'); 
Query OK, 1 row affected (0.001 sec)

mysql> select * from cisco;
+------+--------+-----------+----------+------+
| id   | login  | password  | username |  age |
+------+--------+-----------+----------+------+
| 1    | cisco1 | cisco1111 |   test   |  23  |
| 2    | cisco2 | cisco2222 |   test   |  26  |
| 3    | cisco3 | cisco3333 |   test   |  29  |
+------+--------+-----------+----------+------+
3 rows in set (0.000 sec)

mysql> \! clear

mysql> insert into linux values(1, 'linux1', 'linux1111', 'test', 33); Query OK, 1 row affected (0.001 sec)

mysql> insert into linux values(2, 'linux2', 'linux2222', 'test1', 36);
Query OK, 1 row affected (0.001 sec)

mysql> insert into linux values(3, 'linux3', 'linux3333', 'test2', 39);
Query OK, 1 row affected (0.001 sec)

mysql> select * from linux;
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | linux1 | linux1111 |     test     |  33  |
|   2  | linux2 | linux2222 |     test1    |  36  |
|   3  | linux3 | linux3333 |     test2    |  39  |
+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> insert into security values(1, 'security1', 'security11', 'test', 43); Query OK, 1 row affected (0.001 sec)

mysql> insert into security values(2, 'security2', 'security22', 'test1', 46);
Query OK, 1 row affected (0.001 sec)

mysql> insert into security values(3, 'security3', 'security33', 'test2', 49);
Query OK, 1 row affected (0.001 sec)

mysql> select * from security;
+------+-----------+------------+---------------+------+
|  id  |   login   |  password  |    username   |  age |
+------+-----------+------------+---------------+------+
|   1  | security1 | security11 |      test     |  43  |
|   2  | security2 | security22 |      test1    |  46  |
|   3  | security3 | security33 |      test2    |  49  | 
+------+-----------+------------+---------------+------+
3 rows in set (0.000 sec)

각 칼럼에 데이터 값을 입력해 봅니다.

select * from ; 명령어로 칼럼을 선택하고

insert into ~ values ; 명령어 

원하는 정보를 입력하여 넣어줍니다.

데이터 값 수정 및 삭제
mysql> select * from cisco;
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | cisco1 | cisco1111 |     test     |  23  |
|   2  | cisco2 | cisco2222 |     test     |  26  |
|   3  | cisco3 | cisco3333 |     test     |  29  |
+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> update cisco set username='test1' where login='cisco2';
Query OK, 1 row affected (0.022 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update cisco set username='test2' where id=3; 
Query OK, 1 row affected (0.003 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from cisco;
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | cisco1 | cisco1111 |     NULL     |  23  |
|   2  | cisco2 | cisco2222 |     test1    |  26  |
|   3  | cisco3 | cisco3333 |     test2    |  29  |
+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> update cisco set username=default where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from cisco; 
+------+--------+-----------+--------------+------+
|  id  |  login |  password |   username   |  age |
+------+--------+-----------+--------------+------+
|   1  | cisco1 | cisco1111 |     test     |  23  | 
|   2  | cisco2 | cisco2222 |     test1    |  26  | 
|   3  | cisco3 | cisco3333 |     test2    |  29  | 
+------+--------+-----------+--------------+------+
3 rows in set (0.00 sec)

mysql> update cisco set username=default;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 3 Changed: 2 Warnings: 0

mysql> select * from cisco;
+------+--------+-----------+----------+------+
|  id  |  login |  password | username |  age |
+------+--------+-----------+----------+------+
|   1  | cisco1 | cisco1111 |   NULL   |  23  | 
|   2  | cisco2 | cisco2222 |   NULL   |  26  | 
|   3  | cisco3 | cisco3333 |   NULL   |  29  | 
+------+--------+-----------+----------+------+
3 rows in set (0.00 sec)

mysql> delete from cisco where id=3;
Query OK, 1 row affected (0.00 sec)

mysql> select * from cisco;
+------+--------+-----------+----------+------+
|  id  |  login |  password | username |  age |
+------+--------+-----------+----------+------+
|   1  | cisco1 | cisco1111 |   NULL   |  23  | 
|   2  | cisco2 | cisco2222 |   NULL   |  26  | 
+------+--------+-----------+----------+------+
2 rows in set (0.00 sec)

mysql> delete from cisco;
Query OK, 2 rows affected (0.00 sec)

mysql> select * from cisco;
Empty set (0.00 sec)

mysql> desc cisco;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       | 
|   login  | varchar(10) |  YES |     |   NULL  |       | 
| password | varchar(10) |  YES |     |   NULL  |       | 
| username | varchar(20) |  YES |     |   NULL  |       | 
|    age   |   int(11)   |  YES |     |   NULL  |       | 
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

select * from ; 명령어로 컬럼을 선택하고

update ~ set username= ~ where login='~';

으로 username 값을 변경해 본다

update ~ set username=default where id=~; 과 update ~ set username=default 명령어로

username을 NULL로 변경해 본다

delete from ~ where id=~ 명령어

삭제를 시도해 본다

desc ~; 명령어 지금까지 작업한 내용을 확인해 본다.


다음 실습을 위해 Cisco 테이블에 데이터 값 재 입력
mysql> insert into cisco values(1, 'cisco1', 'cisco1111', 'test', 23);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco values(2, 'cisco2', 'cisco2222', 'test1', 26);
Query OK, 1 row affected (0.001 sec)

mysql> insert into cisco values(3, 'cisco3', 'cisco3333', 'test2', 29); 
Query OK, 1 row affected (0.001 sec)

mysql> select * from cisco;
+------+--------+-----------+----------+------+
| id   | login  | password  | username |  age |
+------+--------+-----------+----------+------+
| 1    | cisco1 | cisco1111 |   test   |  23  |
| 2    | cisco2 | cisco2222 |   test1  |  26  |
| 3    | cisco3 | cisco3333 |   test2  |  29  |
+------+--------+-----------+----------+------+
3 rows in set (0.000 sec)

칼럼 속성 정보 변경
mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       | 
|   login  | varchar(10) |  YES |     |   NULL  |       | 
| password | varchar(10) |  YES |     |   NULL  |       | 
| username | varchar(20) |  YES |     |   NULL  |       | 
|    age   |   int(11)   |  YES |     |   NULL  |       | 
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> alter table linux modify login varchar(20);
Query OK, 0 rows affected (0.002 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table linux modify password varchar(40);
Query OK, 0 rows affected (0.001 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(20) |  YES |     |   NULL  |       |
| password | varchar(40) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

alter table ~ modify login ~; 명령어를 이용하여

로그인 속성을 변경해 봅니다.

alter table ~ modify password ~ 명령어

이용하여 패스워드 속성을 변경해 봅니다.

칼럼 추가 & 수정 & 삭제
mysql> alter table linux add email varchar(20) first;
Query OK, 0 rows affected (0.006 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc linux;
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|   email  | varchar(20) |  YES |     |   NULL  |       |
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(20) |  YES |     |   NULL  |       |
| password | varchar(40) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.001 sec)

mysql> select * from linux;
+-------+------+--------+-----------+--------------+------+
| email |  id  |  login |  password |   username   |  age |
+-------+------+--------+-----------+--------------+------+
|  NULL |   1  | linux1 | linux1111 |     test     |  33  |
|  NULL |   2  | linux2 | linux2222 |     test1    |  36  |
|  NULL |   3  | linux3 | linux3333 |     test2    |  39  |
+-------+------+--------+-----------+--------------+------+
3 rows in set (0.000 sec)

mysql> alter table linux modify email varchar(20) after username; Query OK, 0 rows affected (0.009 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc linux; 
+----------+-------------+------+-----+---------+-------+
|   Field  |     Type    | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|    id    |   int(11)   |  YES |     |   NULL  |       |
|   login  | varchar(20) |  YES |     |   NULL  |       |
| password | varchar(40) |  YES |     |   NULL  |       |
| username | varchar(20) |  YES |     |   NULL  |       |
|   email  | varchar(20) |  YES |     |   NULL  |       |
|    age   |   int(11)   |  YES |     |   NULL  |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.001 sec)

mysql> select * from linux; 
+------+--------+-----------+--------------+-------+------+
|  id  |  login |  password |   username   | email |  age |
+------+--------+-----------+--------------+-------+------+
|   1  | linux1 | linux1111 |     test     |  NULL |  33  |
|   2  | linux2 | linux2222 |     test1    |  NULL |  36  |
|   3  | linux3 | linux3333 |     test2    |  NULL |  39  |
+------+--------+-----------+--------------+-------+------+
3 rows in set (0.000 sec)

mysql> update linux set email='linux1@test.com' where login='linux1';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update linux set email='linux2@test.com' where login='linux2';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update linux set email='linux3@test.com' where login='linux3';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from linux;
+------+--------+-----------+--------------+-------------------+------+
|  id  |  login |  password |   username   |       email       |  age |
+------+--------+-----------+--------------+-------------------+------+
|   1  | linux1 | linux1111 |     test     |  linux1@test.com  |  33  |
|   2  | linux2 | linux2222 |     test1    |  linux2@test.com  |  36  |
|   3  | linux3 | linux3333 |     test2    |  linux3@test.com  |  39  |
+------+--------+-----------+--------------+-------------------+------+
3 rows in set (0.000 sec)

mysql> alter table linux drop email;
Query OK, 0 rows affected (0.009 sec)
Records: 0 Duplicates: 0 Warnings: 0

alter table ~ add ~ varchar(20) first; 명령어

테이블 맨 앞부분에 칼럼 추가

잘 추가됐는지 desc ; 로 확인한 후

alter table ~ modify ~ after ~; 명령어로

리눅스 테이블에 이메일 칼럼 위치 수정

update ~ set ~='~' where login='~'; 명령어

이용하여 상세 데이터 수정


각 명령어 사용 직후

  • 데이터베이스 생성 및 삭제: CREATE DATABASE test;와 DROP DATABASE test; 명령어 직후에 각 명령어가 데이터베이스를 생성하고 삭제하는 기능을 수행한다는 설명을 추가합니다.
    • 예: "CREATE DATABASE test; 명령어는 'test'라는 이름의 새로운 데이터베이스를 생성합니다. 이때, 데이터베이스 이름은 고유해야 합니다. DROP DATABASE test; 명령어는 'test' 데이터베이스를 시스템에서 완전히 제거합니다."
  • 테이블 생성, 데이터 입력, 수정 및 삭제: 각 CREATE TABLE, INSERT INTO, UPDATE, DELETE 명령어 사용 직후에 명령어의 기능을 간략하게 설명합니다.
    • 예: "CREATE TABLE 명령어는 새로운 테이블을 생성합니다. INSERT INTO 명령어는 테이블에 새로운 행을 추가합니다. UPDATE 명령어는 테이블의 데이터를 수정하고, DELETE 명령어는 데이터를 삭제합니다."
 

오늘은 Mysql을 알아본 후
어떤 식으로 mysql을 사용하는 건지
간단한 실습을 통해서
Mysql에 접속해 보고,
Database를 생성하고 삭제해 보고,
테이블을 생성하고 삭제해 보고,
테이블 안에 컬럼 속성을 확인해 보고,
값을 입력하고 수정해 보고 삭제해 보고,
속성 정보를 변경해 보고,
칼럼을 추가하고 수정하고 삭제까지 해봤습니다.

아직까지 정말 많이 쓰이고 있는 mysql은 

어느 곳에 속하여 일을 하시던지

알고 계시면 분명 도움이 될만한 내용이라고 생각합니다.


  • 보안 관련 주의사항 및 안전한 사용법: mysql -u root -p 명령어를 사용하여 접속하는 방법을 설명하는 부분에 보안 주의사항을 추가합니다.
    • 예: "MySQL을 사용할 때는 보안을 항상 유념해야 합니다. 예제에서 사용한 'root' 계정과 'bug'라는 비밀번호는 테스트 목적으로만 사용해야 합니다. 실제 환경에서는 강력한 비밀번호를 설정하고, 필요한 최소한의 권한을 가진 사용자 계정을 생성하여 사용하는 것이 좋습니다."

실습 후 데이터베이스와 테이블 정리: MySQL 실습을 마친 후, 생성한 데이터베이스와 테이블을 어떻게 정리해야 하는지에 대한 방법을 설명합니다.

  • 예: "실습을 마친 후에는 사용한 데이터베이스와 테이블을 정리하는 것이 좋습니다. 이를 위해 DROP DATABASE 명령어와 DROP TABLE 명령어를 사용하여 더 이상 필요하지 않은 데이터베이스와 테이블을 삭제할 수 있습니다. 이 과정은 실습 환경을 깔끔하게 유지하고, 불필요한 데이터의 축적을 방지합니다

궁금하신 사항은 댓글에 남겨주세요
댓글에 남겨주신 내용
추후 정리해서 올려드리겠습니다
구독 신청하시면 업로드 시 알려드릴게요!
-
조금이라도 도움이 되셨다면
공감&댓글 부탁드리겠습니다
감사합니다!

 

반응형

+ Recent posts