반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- node.js
- Udemy
- JavaScript
- Til
- 월별 운동일지
- 운동일지
- dml
- 러닝
- node
- nodejs
- 박스점프
- dql
- 활동 킬로칼로리
- 달리기
- 독서 리뷰
- 걷기
- 드림코딩
- code kata
- github
- SQL
- MySQL
- git
- 크로스핏
- express
- 습윤밴드
- 위코드
- 홈트
- axios
- 메디패치
- wecode
Archives
- Today
- Total
RISK IT
[TIL5_23.1.13.] mySQL - DDL 이용하여 데이터베이스 생성, 접근, 변경 본문
반응형
mySQL 설치DDL(Data Define Language)
: 스키마 내의 객체를 정의하고 관리할 때 사용되는 쿼리문
데이터베이스 생성, 접근, 생성, 변경, 삭제 해보기
✍️ 입력
mysql> SHOW DATABASES;
// 초기상태
💻 출력
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
✍️ 입력
mysql> CREATE DATABASE westagram character set utf8mb4 collate utf8mb4_general_ci;
// 옵션으로 character set 설정과 collate 설정을 동시에 해줌
💻 출력
Query OK, 1 row affected (0.01 sec)
✍️ 입력
mysql> SHOW DATABASES;
// 데이터베이스 출력
💻 출력
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| westagram |
+--------------------+
5 rows in set (0.01 sec)
✍️ 입력
mysql> USE westagram;
// westagram 데이터베이스 사용하겠다고 선언
💻 출력
Database changed
✍️ 입력
mysql> SHOW TABLES;
💻 출력
Empty set (0.00 sec)
// 아직 아무 테이블도 존재하지 않음
✍️ 입력
mysql> CREATE TABLE users (
-> id INT NOT NULL AUTO_INCREMENT,
-> name VARCHAR(50) NOT NULL,
-> email VARCHAR(200) NOT NULL,
-> profile_image VARCHAR(1000) NULL,
-> password VARCHAR(200) NOT NULL,
-> created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY(id)
-> );
// DDL을 사용하여 users 데이터베이스 생성
💻 출력
Query OK, 0 rows affected (0.01 sec)
✍️ 입력
mysql> SHOW TABLES;
💻 출력
+---------------------+
| Tables_in_westagram |
+---------------------+
| users |
+---------------------+
1 row in set (0.00 sec)
// 기존에는 없던 users 테이블 출력
✍️ 입력
mysql> DESC users;
// users 테이블에 대한 상세한 description 출력
💻 출력
+---------------+---------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+-------------------+-----------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(200) | NO | | NULL | |
| profile_image | varchar(1000) | YES | | NULL | |
| password | varchar(200) | NO | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |
+---------------+---------------+------+-----+-------------------+-----------------------------+
7 rows in set (0.01 sec)
✍️ 입력
mysql> CREATE TABLE posts (
-> id INT NOT NULL AUTO_INCREMENT,
-> title VARCHAR(100) NOT NULL,
-> content VARCHAR(3000) NULL,
-> user_id INT NOT NULL,
-> created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY(id),
-> CONSTRAINT posts_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id)
-> );
// DDL을 사용하여 posts 데이터베이스 생성
// 제약 조건을 사용하여 Foreign Key 생성
💻 출력
Query OK, 0 rows affected (0.02 sec)
✍️ 입력
mysql> SHOW TABLES;
💻 출력
+---------------------+
| Tables_in_westagram |
+---------------------+
| posts |
| users |
+---------------------+
2 rows in set (0.00 sec)
✍️ 입력
mysql> DESC posts;
// posts 테이블에 대한 상세한 description 출력
💻 출력
+------------+---------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+-------------------+-----------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | | NULL | |
| content | varchar(3000) | YES | | NULL | |
| user_id | int | NO | MUL | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |
+------------+---------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)
✍️ 입력
mysql> DESC users;
💻 출력
+---------------+---------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+-------------------+-----------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(200) | NO | | NULL | |
| profile_image | varchar(1000) | YES | | NULL | |
| password | varchar(200) | NO | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |
+---------------+---------------+------+-----+-------------------+-----------------------------+
7 rows in set (0.00 sec)
✍️ 입력
mysql> ALTER TABLE users ADD age INT NOT NULL;
// 기존 user 테이블에 age column 추가
💻 출력
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
✍️ 입력
mysql> DESC users;
💻 출력
+---------------+---------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+-------------------+-----------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(200) | NO | | NULL | |
| profile_image | varchar(1000) | YES | | NULL | |
| password | varchar(200) | NO | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |
| age | int | NO | | NULL | |
+---------------+---------------+------+-----+-------------------+-----------------------------+
8 rows in set (0.00 sec)
✍️ 입력
mysql> ALTER TABLE users DROP profile_image;
// 기존 users 테이블에 profile_image column 삭제
💻 출력
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
✍️ 입력
mysql> DESC users;
💻 출력
+------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+-----------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(200) | NO | | NULL | |
| password | varchar(200) | NO | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |
| age | int | NO | | NULL | |
+------------+--------------+------+-----+-------------------+-----------------------------+
7 rows in set (0.01 sec)
✍️ 입력
mysql> ALTER TABLE posts MODIFY content TEXT NULL;
// 기존 posts 테이블의 content column을 VARCHAR에서 TEXT 타입으로 변경
💻 출력
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
✍️ 입력
mysql> DESC posts;
💻 출력
+------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+-----------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | | NULL | |
| content | text | YES | | NULL | |
| user_id | int | NO | MUL | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |
+------------+--------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)
테이블을 삭제하는 명령어는DROP TABLE {table_name};
테이블 객체 내의 모든 데이터(row)를 삭제하는 명령어는TRUNCATE TABLE {table_name};
반응형
'IT > TIL' 카테고리의 다른 글
[TIL7_23.1.15.] mySQL Database Schema & Table 구축 | Assignment 1 (0) | 2023.01.15 |
---|---|
[TIL6_23.1.14.] mySQL 데이터 추가/수정/삭제/조회 (0) | 2023.01.14 |
[TIL4_23.1.12.] Simple API - 게시글 등록, 목록조회 및 httpie 입력방법 (0) | 2023.01.13 |
[TIL3_23.1.11] Simple API - 유저 회원가입 하기 (0) | 2023.01.13 |
[TIL 2_23.1.10.] built-in file system (0) | 2023.01.11 |