이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
오늘부터 데이터베이스 들어갈 예정! SQLD 합격을 위해 달려봅시다.
Maria DB
- Data Base 는 데이터를 영구적으로 저장할 수 있는 저장소이다.
- Data Base 를 이용하면 서로 다른 시스템 간에 데이터를 공유할 수 있다.
![](https://velog.velcdn.com/images/ritina21/post/da589022-48e6-4b64-ba6c-85b6148e9814/image.png)
-
Data Base 를 관리하는 시스템을 DBMS(Data Base Management System) 라고 한다
-
많은 종류의 DBMS 들이 존재한다.
![](https://velog.velcdn.com/images/ritina21/post/83acfd72-f6c6-4096-8798-49de3b09e263/image.png)
-
유료의 원탑 ORACLE
-
무료의 원탑 MySQL 이었는데 오라클이 삼
-
설치 용이성으로 인해 MaraDB 사용
-
Data Base Model 은 Relational 과 NO SQL 로 크게 구분된다.
-
우리가 배우게 될 Model 은 관계형 데이터 베이스 (Relational Data Base) 이다.
설치
-
MariaDB 다운로드 검색
-
국가 기관 임의 설정
![](https://velog.velcdn.com/images/ritina21/post/f77fc5ce-a6f9-41ee-89a7-69e5e9e3fb1d/image.png)
![](https://velog.velcdn.com/images/ritina21/post/88e16de9-cdf2-4deb-beda-757d90b6cf53/image.png)
![](https://velog.velcdn.com/images/ritina21/post/029bac30-7872-4b24-a5d1-aedb2bfe972a/image.png)
(변동 없음)
-
window 검색 > 서비스 >
![](https://velog.velcdn.com/images/ritina21/post/afae7799-9398-4bab-9a21-0915c00da826/image.png)
-
PC 속도에 따라 시작유형 자동/수동 변경
-
MySQL 클라이언트 검색
![](https://velog.velcdn.com/images/ritina21/post/92926f5c-cc4c-4e34-bf50-b1169ba4d00e/image.png)
-
설치 정상 여부 체크
-
dbeaver 다운로드 구글 검색
![](https://velog.velcdn.com/images/ritina21/post/cf78781a-e189-44d3-981a-e189d0b1e7e3/image.png)
-
버전 7.3.5
![](https://velog.velcdn.com/images/ritina21/post/c3184522-e336-47e8-9569-463775cf9ad2/image.png)
-
windows 인스톨러 > all 유저
![](https://velog.velcdn.com/images/ritina21/post/1da907aa-8541-4256-a0e2-35b32576c22f/image.png)
-
샘플 데이터 만들어줄까? >no
-
Maria DB 선택 >
![](https://velog.velcdn.com/images/ritina21/post/e05f087c-653c-4275-8226-72564d5e0dac/image.png)
-
서버 클릭 상태로 F4 >
![](https://velog.velcdn.com/images/ritina21/post/b05cdf02-6113-4d09-a2f4-34210f76032c/image.png)
User 만들기와 Right 생성
- Root 는 모든 권한을 가지고 있다.
- Root 를 통해 사용자의 명령어 실행 및 접근 권한을 조정할 수 있다.
- User 생성 시 접근 IP 대역을 설정할 수 있다.
![](https://velog.velcdn.com/images/ritina21/post/2e788e29-0a9d-4d5d-a9ff-8a960b69add3/image.png)
00_basic(첫 실행)
![](https://velog.velcdn.com/images/ritina21/post/d3b98bfb-e02f-49f6-808f-ffe88589e0d0/image.png)
- --(대쉬 2회) 후 한 칸 띄고 주석 입력
- 스크립트 실행 > ctrl + enter
01_user
![](https://velog.velcdn.com/images/ritina21/post/5f593f5e-af5f-4f0d-8d08-656dd0ab0232/image.png)
![](https://velog.velcdn.com/images/ritina21/post/bdfd8ef4-ff75-4e2c-9830-cc6bcd0fed84/image.png)
-
유저 생성
- CREATE USER [유저이름]@[이용가능한IP] IDENTIFIED BY [비밀번호];
- create user 'web_user'@'%' identified by 'pass';
- web_user 는 어떤 IP 에서도 접근이 가능하다.
-
유저 확인/권한 확인
- select * from mysql.user;
-
권한 부여 및 회수
-
권한 부여
- GRANT [권한] ON [데이터베이스.테이블] TO [사용자];
- SELECT, UPDATE, DELETE, INSERT, CREATE, DROP 등등의 개별 명령어 권한
- ALL PRIVILEGES : GRANT OPTION 을 제외한 모든 권한
- GRANT OPTION : 권한 부여(내가 가진 권한 이상은 줄 수 없다.)
-
예시1
- web_user 한테 권한 주는 권한을 제외한 모든 권한을 부여(모든 데이터베이스, 모든 테이블)
- grant all privileges on . to 'web_user'@'%';
-
예시2
- dba_user 한테 조회 권한을 부여(mysql 데이터베이스의 모든 테이블)
- grant select on mysql.* to 'dba_user'@'192.168.%';
-
예시3
- user_220 는 조회,입력,수정,삭제 권한을 부여(모든 데이터베이스, 모든 테이블)
- grant select,insert,update,delete on . to 'user002'@'192.168.0.111';
-
권한 회수
- REVOKE [권한] ON [데이터베이스.테이블] FROM [사용자];
-
예시 1
- user002 의 입력, 수정 삭제의 권한을 회수하자.
- revoke insert,update,delete on . from 'user002'@'192.168.0.111';
-
비밀번호 변경
- SET PASSWORD FOR [사용자] = PASSWORD([비밀번호]);
- set password for 'user002'@'192.168.0.111' = password ('1234');
- set password for 'web_user'@'%' = password ('pass');
-
유저 삭제
- CREATE 로 만든 것은 ALTER 로 수정하고 DROP 으로 삭제한다.
- DROP USER [유저이름];
- drop user 'user002'@'192.168.0.111';
- drop user 'dba_user'@'192.168.%';
Table
- 데이터 베이스에서 테이블은 여러 데이터의 집합체이다.
- JAVA 에서의 Class 와 같다고 볼 수 있다.
![](https://velog.velcdn.com/images/ritina21/post/1495b4fa-0e5a-4be0-9b88-a5c7ba84e512/image.png)
Table - 컬럼 및 데이터 다루기
- 현실에서 테이블과 가장 가까운 형태는 Excel 일 것이다.
- 여기서 각 속성은 컬럼이라고 한다.
- 컬럼은 이름이나 속성을 변경하거나 추가 삭제도 가능하다.
![](https://velog.velcdn.com/images/ritina21/post/9e87e8cb-51db-43d8-a4f3-93208ddbccdc/image.png)
02_table
![](https://velog.velcdn.com/images/ritina21/post/5b953e15-2bd9-484d-b238-a7f25d77edbb/image.png)
![](https://velog.velcdn.com/images/ritina21/post/8bf54c86-662a-4154-8d8c-c1b12645fd70/image.png)
![](https://velog.velcdn.com/images/ritina21/post/1757fc8c-5847-484b-8e42-c545665afcf9/image.png)
DML(Data Manipulation Language)
- 데이터를 취급하는 구문을 DML 이라고 한다.
- DML 은 SELECT, INSERT, UPDATE, DELETE 문 등이 있다.
- 그리고 key 의 중복 여부에 따라 INSERT 또는 UPDATE 할 수 있는 UPSERT 문이 있다.
![](https://velog.velcdn.com/images/ritina21/post/6212f22f-071f-4629-b657-143737825e99/image.png)
03_DML
INSERT 예시
- INSERT INTO [테이블명]([넣을 컬럼, ...])VALUES([값, ...]);
![](https://velog.velcdn.com/images/ritina21/post/eb3efba3-35ac-4595-bdba-b91d84761591/image.png)
UPDATE
- UPDATE [테이블명] SET [컬럼] = [값] WHERE 조건;
DELETE
- DELETE FROM [테이블명] WHERE [조건]
![](https://velog.velcdn.com/images/ritina21/post/20168eb5-690b-47f2-b635-3a097e5786ff/image.png)
SELETE
- 데이터 베이스에서는 특정한 데이터를 선택 (SELECT) 하여 볼 수 있다.
- 세밀한 선택을 하기 위해서 조건문을 사용할 수도 있다.
![](https://velog.velcdn.com/images/ritina21/post/b0586b0e-7e39-4990-82f4-f8f56999e0e2/image.png)
특정 컬럼 조회
![](https://velog.velcdn.com/images/ritina21/post/ba515698-a439-4948-be36-cc345add6551/image.png)
![](https://velog.velcdn.com/images/ritina21/post/d681b701-4636-4e0f-bfca-8cc0701e2eec/image.png)
- concat 으로 family_name 과 first_name을 합쳐서 name 이라는 이름으로 보여줌(실제로 변경된 것x)
- truncate 로 salary 를 1000으로 나눈 소수점을 버리고 (공백)(만 원) 추가해서 월급이라는 이름으로 보여줌
프로그램 설치와 초반 세팅에 시간이 소요되어 기초적인 것만 배웠다.
역시 어떤 것이든 처음은 쉽다;)
SQLD 시험 공부와 함께 할 수 있어서 좋고만🎶