본문 바로가기

ReactFileStructure/부트캠프 과정

07/18 데이터 베이스, SELECT 의 중요성

identifying, non-identifying 관계,

종속으로 생각하니깐 편했음,

 

identifying 의 경우 부모의 PK 가 자식의 PK 로도 사용되므로, 부모의 존재 없이는 자식이 존재할 수 없음,

non-identifying 의 경우 부모의 PK 가 자식의 FK 로 사용, 부모의 존재 없이도 독립적으로 존재할 수 있음

 

실제 두 entity 관계가 그러한 성질을 가지고 있는지와 무관하게 데이터 베이스 상에서 그렇게 존재하도록 임의로 지정하는 것이라고 생각하면 될 듯..

PK 가 2 개일 경우, 합쳐졌을 때 유일성이 보장되어야 한다. 

DCL Data Control Language

데이터의 보안, 무결성, 회복 등을 제어하는 구문

 

user column 확인 가능, root 계정이 두  개 존재, Host 와 User 가 연결되어서 사용되는 것 실제로 중복되는 것이 아님,

 

desc 을 통해 스키마 확인 가능,

 

user 의 데이터 베이스 생성

 

SELECT * FROM user 를 통해 생성 확인

userid 의 User 가 생성된 것을 확인할 수 있다.

 

docker 를 통한 접속으로 인해 localhost 에 접속이 불가능,

전체 접근이 가능한 '%' 로 userid 데이터 베이스의 재생성

connection 객체 생성 확인

 

새로 만든 userid connection 의 데이터 베이스 조회, show databases 명령어 사용

계정 생성 후 권한을 부여해야 함 (초기값은 권한이 없음)

 

사용자 비밀번호 변경, 

일반 사용자의 정보를 바꾸기 위해 connection 변경, root 계정으로

use mysql; // 비밀번호 정보가 저장되어있는 mysql

 

먼저 root 계정의 show databases

userid 의 show databases

권한의 차이로 출력의 차이

 

MySQL - database - table - data 의 관계

 

데이터 베이스, 테이블에 관한 권한 부여

 


DDL Data Definition Language

데이터베이스와 테이블을 정의, 수정, 삭제하는 구문

데이터 베이스의 생성, 사용

 

학생의 table 생성

각 컬럼의 데이터 형식, null, default 값, comment 의 작성

데이터가 추가, 변경 될 때의 날짜, 

PK 의 지정

 

테이블 생성의 확인

 

실제 프로그램에서는 commit 명령어를 꼭 명시해줘야 한다.

 

테이블 확인, desc student(테이블 명);

 

CASCADE ( 종속, 폭포) 

ON UPDATE CASCADE : 자동으로 삭제되거나 변경되도록,,,

 

컬럼의 추가, 수정, 이름 변경

UPDATE 가 가장 느린 이유 : 내부에서 del 과 ins 를 같이 진행한다.

change 도 바꾸는 것이 아닌, 새로 생성

테이블은 변경, 컬럼은 삭제

 

DML Data Manipulation Language 

테이블의 데이터를 삽입, 조회, 수정, 삭제하는 구문

 

select 시 limit 를 해야 한다!! 

 

where 1=1 을 사용하는 이유, 바뀌는 조건에 대해 유연하게 대처

 

 

쿼리 작성 팁,

, 위치에 대해서도 고려 ( 필요 없는 column 에 대해 주석처리를 할 경우 )

 

SELECT 응용 1