개발공부일지
Database - MySQL , DBMS, RDBMS 본문
목차
1. DBMS
2. RDBMS(관계형 데이터베이스)
3. SQL
4. MySQL 설치하기 (Linux)
5. SQL 구문
1. DBMS
- DataBase Management System
- DB : 데이터를 저장하는 공간
- DBMS : 데이터를 저장하는 공간을 도와주는 프로그램
- 사용하고 실행하려면 프로세스에 올려야한다.
2. RDBMS(관계형 데이터베이스)
- 관계형(MySQL) : 데이터를 테이블로 저장하는것
- 비관계형(MongoDB) : 데이터를 객체형태로 저장하는것
- 관계형 데이터베이스
- oracle
- mysql
- mariadb
- postgresql
- mssql
- db2
3. SQL
- Structured Query Language
- 데이터베이스에서 데이터를 관리하는데 사용하는 언어
4. MySQL 설치하기 (Linux)
cd ~
sudo apt update
sudo apt upgrade
sudo apt install mysql-server
mysql --version
- 설치한 다음 버전을 확인해본다. (파일을 다운받은것!!)
sudo service mysql start
ps -ef | grep mysql
sudo service mysql stop
sudo service mysql status
- mysql을 start, stop해서 확인해보고 상태도 확인해본다.
sudo mysql_secure_installation
- 입력하게되면 user root의 비밀번호를 설정하라고 하는데 사용할 비밀번호를 8자리에 대소문자+숫자+특수문자까지 사용해서 적어준다.
- 플러그인을 설치하겠다는 질문에 n 입력하고 엔터
- change the password for root 질문에 n 입력하고 엔터
- 나머지 질문(remove anonymous users, disallow root login remotely, remove test database, reroading)에는 y하고 엔터를 하면 설치는 끝이난다.
sudo service mysql start
sudo mysql -uroot -p
- mysql을 start하고 설정한 비밀번호를 입력해준다.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.34-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
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>
- 비밀번호를 입력하고나면 이렇게 나오게된다.
- "mysql>" 뜬다면 DB를 프로세스에 올렸고 MySQL에 접속한상태이므로 sql구문을 사용해준다.
5. SQL 구문
5-1 show databases;
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
- 여기서의 'databases'는 폴더같은 의미이다.
5-2 use mysql;
use [데이터베이스명]
use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
- database 폴더중에 mysql 폴더로 들어간것을 의미한다.
5-3 show tables;
show tables;
+------------------------------------------------------+
| Tables_in_mysql |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| replication_asynchronous_connection_failover |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version |
| replication_group_member_actions |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+------------------------------------------------------+
37 rows in set (0.01 sec)
- mysql의 파일들을 보여준것
5-4 desc user;
desc user;
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(255) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int unsigned | NO | | 0 | |
| max_updates | int unsigned | NO | | 0 | |
| max_connections | int unsigned | NO | | 0 | |
| max_user_connections | int unsigned | NO | | 0 | |
| plugin | char(64) | NO | | caching_sha2_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
| password_lifetime | smallint unsigned | YES | | NULL | |
| account_locked | enum('N','Y') | NO | | N | |
| Create_role_priv | enum('N','Y') | NO | | N | |
| Drop_role_priv | enum('N','Y') | NO | | N | |
| Password_reuse_history | smallint unsigned | YES | | NULL | |
| Password_reuse_time | smallint unsigned | YES | | NULL | |
| Password_require_current | enum('N','Y') | YES | | NULL | |
| User_attributes | json | YES | | NULL | |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
51 rows in set (0.01 sec)
- 필드를 객체로 보자면 속성을 뜻하고, 엑셀로 보자면 맨위에 적는 항목(제목)이라고 볼수있다.
- desc user는 파일안에 제목들을 보여준것
- 컬럼목록보기와같다!
- 항목을 만드는것을 "스키마(schema)"라고 한다.
- 필드마다 타입이 정해져있다.
5-5 select * from user;
select * from user;
select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
- select * from user; 는 레코드를 보는것
- select user,host from user; 는 user와 host의 레코드를 보는것
※ sql 구문에 ; 세미콜론 빼먹지않기!!!
※ 스키마 참고하기
https://coding-factory.tistory.com/216
※ 프로그래머스에 sql 문제가 있다고 알려주심!
※ web server router 잘나누고 연습하기!
'DataBase' 카테고리의 다른 글
Database - Database connection (0) | 2023.09.20 |
---|---|
Database - sql 계정 생성, mysql2 설치, net-tools설치 (0) | 2023.09.20 |
Database - SQL, DDL, DML (0) | 2023.09.19 |