My SQL 설치, 설정(2)

.·2020년 5월 20일
0

Coding

목록 보기
25/33

1. 새로운 가상환경 만들기

conda create -n mysql_test python=3.8

2. 가상환경 활성화하기

conda activate mysql_test

3. 가상환경에 Django 와 mysqlclient 설치하기

pip install django
pip install mysqlclient

설치 이후 pip freeze 로 설치된 사항들을 확인하고 다음으로 넘어간다.

4. project 생성하기

django-admin startproject mysql_test

5. project 폴더 내 파일 생성하기

my_settings.py

DATABASES = {
	'default' : {
		'ENGINE': 'django.db.backends.mysql',
		'NAME': '',
		'USER': 'root',
		'PASSWORD': 'f',
		'HOST': 'localhost',
		'PORT': '3306',
	}
}

일단 이름은 비워두었다. MySQL 에서 이름을 설정해준 뒤 입력할 것이므로 일단 저렇게 하고 나온다.

6. mysql 실행하기

$ mysql -u root -p

위 명령어 입력 후 루트 비밀번호를 입력하여 mysql을 사용할 수 있게 된다.

7. mysql 기본 쿼리문 실습

7-1. show databases;

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

7-2. 데이터베이스 생성 구문

mysql> create database mysql_test character set utf8mb4 collate utf8mb4_general_ci;

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

mysql_test 라는 데이터 베이스가 생겼다. 이제 아까 만든 my_settings.py 에 NAME 을 넣어주자. 어떻게? mysql_test 라고 짓자!

그런데 데이터베이스 삭제는 어떻게 할까? 일단 냅두자.

7-3. 생성한 데이터베이스 사용하기

mysql_test 라는 이름이 맘에 안들어서 새로 books 라는 데이터베이스를 만들었다.

mysql> use books
Database changed
mysql> show tables;
Empty set (0.00 sec)

아직 테이블이 비어 있다.

7-4. 데이터베이스 내 테이블 생성하고 확인하기

mysql> CREATE TABLE novels (id INT NOT NULL, name VARCHAR(30));
Query OK, 0 rows affected (0.00 sec)

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

7-5. 테이블에 대해 상세 조회하기. explain 테이블명;

explain 테이블명;

mysql> explain novels;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | NO   |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

음 하지만 기본 조회밖에 되지 않는다. 아래 7-6 을 보자.

7-6. 테이블에 상세 조회 가능한 필드 추가하기.

mysql> ALTER TABLE novels ADD ordered_at DATE;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> explain novels;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id         | int         | NO   |     | NULL    |       |
| name       | varchar(30) | YES  |     | NULL    |       |
| ordered_at | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

추가한 데이터 테이블의 타입 (type) 에 대해서는 아래의 사이트를 참고하자.
https://dev.mysql.com/doc/refman/8.0/en/data-types.html

7-7. DROP. 데이터 베이스 내의 테이블 novel 을 지우기.

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

mysql> DROP TABLE novels;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
Empty set (0.00 sec)

몇 가지 예제를 들어야 하니까 테이블을 다시 만들자.

7-8. INSERT INTO tablename VALUES(). 테이블 내 값(정보) 넣기.

mysql> INSERT INTO novels VALUES(1, 'Harry Potter Series', '2020-05-19');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM novels;
+----+---------------------+------------+
| id | name                | ordered_at |
+----+---------------------+------------+
|  1 | Harry Potter Series | 2020-05-19 |
+----+---------------------+------------+
1 row in set (0.00 sec)

mysql> INSERT INTO novels VALUES(2, 'Who steal my Cheese?', '2020-05-20');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM novels;
+----+----------------------+------------+
| id | name                 | ordered_at |
+----+----------------------+------------+
|  1 | Harry Potter Series  | 2020-05-19 |
|  2 | Who steal my Cheese? | 2020-05-20 |
+----+----------------------+------------+
2 rows in set (0.00 sec)

7-9. UPDATE. 테이블 내 정보 업데이트 하기

가령 위의 예시에서 주문 날짜를 바꿔서 업데이트 하고 싶을 수도 있다.

mysql> UPDATE novels SET ordered_at='2020-05-20' WHERE id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM novels;
+----+----------------------+------------+
| id | name                 | ordered_at |
+----+----------------------+------------+
|  1 | Harry Potter Series  | 2020-05-20 |
|  2 | Who steal my Cheese? | 2020-05-20 |
+----+----------------------+------------+
2 rows in set (0.00 sec)

7-10. DELETE.

mysql> DELETE FROM novels WHERE id=2;
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM novels;
+----+---------------------+------------+
| id | name                | ordered_at |
+----+---------------------+------------+
|  1 | Harry Potter Series | 2020-05-20 |
+----+---------------------+------------+
1 row in set (0.00 sec)

8. 데이터베이스 연동

기존의 settings.py 내 database sqlite 부분을 주석 처리한다.
터미널에서 주석 처리하는 방법은 아래 링크를 참조하자.
https://ddiri01.tistory.com/206

그리고 새롭게 세팅한 데이터 베이스를 적용한다.
DATABASES = my_settings.DATABASES

profile
.

0개의 댓글