반응형

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

아직 mysql에 대해 모르시거나

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

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

(작성 중)

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