MySQL 시작

7671 단어 MySQL

대개


WEB학과의 프런트엔드 엔지니어는 앞으로 MySQL을 배울 계획이지만, SQL을 잘 모르기 때문에 최소한의 조작을 기억할 필요가 없다.
나의 경험을 토대로 처음에 기억해야 할 일을 총결하였다.그렇긴 한데, 처음에 어디서 걸려 넘어졌는지 기억이 다소 흐릿해서 수요를 충족시킬 수 있을지 모르겠다.

차리다


MacOSX의 경우 MySQL을 사용할 수 있습니다.사용하지 않은 사용자 brew 는 Google에서 검색하십시오.그리고 Windows 사용자들도 스스로 방법을 생각해 보세요.
% brew install mysql
version을 확인합니다.제 손에는 5.7.17입니다.버젼이 다르면 brew upgrade mysql 최신판으로 변경할 수 있습니다.
% mysql --version

start, stop


MacOSXbrew install mysql를 사용할 때 다음과 같이 start, stop을 할 수 있습니다.mysql.server status 작동 여부를 확인할 수 있다.
mysql.server start
mysql.server stop

01:MySQL 대화


기본값이라면 루트 사용자가 nopassword를 통해 로그인할 수 있을 것 같습니다.
mysql -u root
터미널에서 다음 화면이 나오면 MySQL과 대화할 수 있는 상태
mysql> 
생성된 데이터베이스 목록을 표시합니다.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
당분간use mysql;실행하자.
mysql> use mysql;
Database changed
use mysql의 상태에서 집행show tables;.
mysql> show tables;
省略
31 rows in set (0.00 sec)
상술한 표 일람표에 user가 있으니 한번 봅시다.
mysql> select Host, User from user;
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| localhost | mysql.sys |
| localhost | root      |
+-----------+-----------+
2 rows in set (0.00 sec)
Host, User열만 보이기 때문에 간단합니다.모든 열을 표시하려면 * 별표를 추가하십시오
select * from user;
이렇게 하면 폭이 너무 길어서 잘 보이지 않는다.마지막;을 분호\G로 바꾸면 비교적 쉽게 볼 수 있습니다.
select * from user\G
exit;를 실행하면 대화 모드를 종료할 수 있습니다.
mysql> exit;

02: 명령줄에서 MySQL 명령 실행


아래와 같이 명령줄에 직접 명령을 쓸 수 있습니다.
mysql -u root mysql -e 'show tables;'
또는 명령문을 파일에 저장하고 실행할 수 있습니다.아래와 같이 한 줄show tables;의 파일만 저장합니다.
% cat example.sql
show tables;
다음 명령을 실행하여 작업을 확인하십시오.
mysql -u root mysql < example.sql

03: 연습용 패킷 만들기


다음 명령을 사용하여 연습용 패키지를 만듭니다.
mysql -u root -e 'create database mydb'
다음 명령을 통해 mydb와의 상호작용 모드를 시작할 수 있습니다.
mysql -u root mydb;

04: 연습용 테이블 만들기


드릴이니까 적당히 테이블을 만들게요.아래의 scheme.sql 서류를 작성해 주십시오.
DROP TABLE IF EXISTS todos;
CREATE TABLE `todos` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `status` int(1) DEFAULT '0',
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
다음 명령을 실행하면 todos표를 여러 번 다시 만들 수 있습니다.
mysql -u root mydb < schema.sql 

05: 행 추가, 참조, 업데이트 및 삭제


행 추가
mysql> INSERT INTO todos (title, status) VALUES ("買い物", 1);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO todos (title, status) VALUES ("料理", 0);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO todos (title, status) VALUES ("粗大ゴミ", 0);
Query OK, 1 row affected (0.01 sec)
인용하다
mysql> select * from todos;
+----+--------------+--------+---------------------+---------------------+
| id | title        | status | created             | updated             |
+----+--------------+--------+---------------------+---------------------+
|  1 | 買い物       |      1 | 2017-04-06 13:36:00 | 2017-04-06 13:36:00 |
|  2 | 料理         |      0 | 2017-04-06 13:36:00 | 2017-04-06 13:36:00 |
|  3 | 粗大ゴミ     |      0 | 2017-04-06 13:36:01 | 2017-04-06 13:36:01 |
+----+--------------+--------+---------------------+---------------------+
3 rows in set (0.00 sec)
완료되지 않은 작업 필터링
select * from todos where status = 0;
+----+--------------+--------+---------------------+---------------------+
| id | title        | status | created             | updated             |
+----+--------------+--------+---------------------+---------------------+
|  2 | 料理         |      0 | 2017-04-06 13:36:00 | 2017-04-06 13:36:00 |
|  3 | 粗大ゴミ     |      0 | 2017-04-06 13:36:01 | 2017-04-06 13:36:01 |
+----+--------------+--------+---------------------+---------------------+
2 rows in set (0.00 sec)
요리 완료 후 의뢰를 갱신합니다.
mysql> select * from todos where id = 2;
mysql> update todos set status = 1 where id = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
삭제하려는 경우는 다음과 같습니다.
mysql> select * from todos where id = 2;
mysql> delete from todos where id = 2;
where id = 2를 잊어버리면 모든 줄이 업데이트됩니다. 주의하세요.우선 select문에서where구역을 확인한 후 그 검색어의where구역에 문법을 더하면 틀림없다.

06: 백업 및 복구


dump.지금까지의 일을 보존하다.
% mysqldump -u root mydb > dump.sql 
잘못하면 음반 다 지워.문장의 상황을 잊어버리다.
mysql -u root mydb -e 'delete from todos'
mysql -u root mydb -e 'select count(*) from todos' 
+----------+
| count(*) |
+----------+
|        0 |
+----------+
아까 dump.sql로 다시 시작합니다.
mysql -u root mydb < dump.sql  
순조롭게 회복되었다.
mysql -u root mydb -e 'select count(*) from todos'
+----------+
| count(*) |
+----------+
|        2 |
+----------+

06:pager 설정


mysql.사용자의 모든 열을 펼치면 화면이 무너지고 잘 보이지 않는 상황에서 \G를 사용하는 방법도 소개했고 페이지를 지정하는 방법도 있습니다.
mysql> pager less 
PAGER set to 'less -S'
이 상태에서 다음 명령을 실행하여 십자 키로 이동하십시오.
select * from mysql.user;
이 조작less -S을 중지하려면 아래 명령을 실행하십시오
mysql> nopager
PAGER set to stdout
이렇게 긴 화면을 복제하는 경우도 있다고 생각했는데 터미널에서는 어떻게 해야 좋을지 모르는 경우도 있었다.이 경우 나중에 사용하기 쉬운 편집기에서 출력 대상을 파일로 열 수도 있습니다.
mysql> pager cat > output.txt
PAGER set to 'cat > output.txt'
mysql> select * from mysql.user;
2 rows in set (0.00 sec)
mysql> nopager
PAGER set to stdout

07: CSV로 표시


MySQL에서 데이터를 꺼내도록 의뢰받은 엔지니어는 다음과 같은 형식으로 비엔지니어의 의뢰인에게 직접 맡긴다.
잘 들어보면 CSV 데이터를 원하지만 엔지니어가 바쁜가 봐 스스로 CSV화하려고 노력할 수도 있다.
% mysql -u root mydb -e 'select * from todos;'
+----+--------------+--------+---------------------+---------------------+
| id | title        | status | created             | updated             |
+----+--------------+--------+---------------------+---------------------+
|  1 | 買い物       |      1 | 2017-04-06 13:36:00 | 2017-04-06 13:36:00 |
|  3 | 粗大ゴミ     |      0 | 2017-04-06 13:36:01 | 2017-04-06 13:36:01 |
+----+--------------+--------+---------------------+---------------------+
만약 이런 상황이 발생한다면 아래의 방법을 참고하시오.
또는 MySQL Workbench와 같은 도구를 사용할 수 있습니다.

총결산


페이지와 표현 형식에 관해서는 처음에는 신경 쓸 필요가 없지만 머리의 한 귀퉁이에 두는 것이 좋다고 생각합니다.끝.

좋은 웹페이지 즐겨찾기