Skip to the content.

- 학습 목표 달성 확인 목록

- [] DBMS가 등장한 이유와 애플리케이션 구조 변화를 설명할 수 있는가?

- [] Oracle 등장 배경과 Assembly 언어와 C 언어의 차이점을 이해하는가?

- [] DBMS와 SQL의 역할을 설명할 수 있는가?

- [] DBMS와 통신할 때 사용하는 Vendor API(Native API)를 설명할 수 있는가?

App과 DBMS를 연결을 해주는 것인데

이는 DBMS 제조사에 따라 다른 프로그램이다 그렇기에 특정 DBMS에 종속된다는 특징이 있다

윈도우에서는 .dll,.lib의 확장자이며 유닉스계열에서는 .so,.lib의 확장자로 이루어져있다

이 파일 안에는c/c++ 언어로 이루어져 있기때문에

java app에서 사용하기 어렵다.

- [] ODBC API의 등장 이유와 목적을 이해하는가?

MS사 만든 규격으로 특정 DBMS에 종속되지 않는 c/c++ API 규격을 정의한다

그 규격에 따라 각 DBMS 제조사가 구현한다

그래서 개발자는 DBMS 종류에 상관없이 일관된 방식으로 프로그래밍이 가능하다

- [] ODBC API와 ODBC Driver를 설명할 수 있는가?

쉽게 말하면 API는 재료 Driver는 요리사를 예로 들면된다

그렇기에 요리사들은 각자 역량에 따라 사용하는 재료가 다를수 있다.

다시 프로그래밍으로 돌아오면 Driver는 API를 모두 구현하는것은 아니다 Driver마다 구현률이 다를 수 있다

오라클로 예를 들자면 오라클에서 호출할 수 있었던 함수가

MS-SQL에서는 호출할 수 없는 경우가 있다 이렇기에 개발시에 고려해서 프로그래밍을 해야 한다.

- [] C 언어를 예를 들어 컴파일과 링킹 과정을 설명할 수 있는가?

x.lib 처럼 사용한 함수나 클래스 코드기 그대로 포함된다==>statically linked library

y.dll 처럼 사용한 함수나 클래스의 위치 정보만 포함된다==>dynamic link library

- [] 동적 라이브러리(.dll, .so)와 정적 라이브러리(.lib)를 설명할 수 있는가?

- [] JDBC API와 JDBC Driver의 역할을 설명할 수 있는가?

- [] MariaDB를 설치하고 설정할 수 있는가?

[mac]
mariadb 설치
> brew install mariadb

mariadb 설치  root 암호 변경
> sudo mysql_secure_installation

mariadb 실행
> brew services start mariadb
> brew services stop mariadb
또는
> mysql.server start
> mysql.server stop

## mysql 서버에 접속하기
로컬 MySQL 서버에 접속
> mysql -u root -p
> Enter password: 암호입력

## root 사용자 접근 거부 오류 발생시(linux)

일단 권한 검사를 하지 않는 모드로 MariaDB를 실행한다.

$ sudo mysqld_safe –skip-grant-tables


원격 MySQL 서버에 접속
> mysql -h 서버주소 -u root -p
> Enter password: 암호입력

## mysql root 암호 변경
> alter user 'root'@'localhost' identified by '1111';

## MySQL 사용자 추가
> CREATE USER '사용자아이디'@'원격호스트주소' IDENTIFIED BY '암호';

로컬에서만 접속할 수 있는 사용자를 만들기:
> CREATE USER 'study'@'localhost' IDENTIFIED BY '1111';
  => 이 경우 study 사용자는 오직 로컬(서버를 실행하는 컴퓨터)에서만 접속 가능한다.
  => 다른 컴퓨터에서 실행하는 MySQL 서버에 접속할 수 없다는 것을 의미한다.

원격에서만 접속할 수 있는 사용자를 만들기:
> CREATE USER 'study'@'%' IDENTIFIED BY '1111';
  => 이 경우 study 사용자는 원격에서만 접속 가능하다.

## MySQL 사용자 목록 조회
> select user, host from 데이터베이스명.테이블명;
> select user, host from mysql.user;

## MySQL 사용자 삭제

> DROP USER '아이디'@'원격호스트주소';
> DROP USER 'study'@'localhost';

## MySQL 데이터베이스 생성
mariadb에서는 default 키워드를 사용하지 않는다.
> CREATE DATABASE 데이터베이스명 CHARACTER SET utf8 COLLATE utf8_general_ci;
> CREATE DATABASE studydb CHARACTER SET utf8 COLLATE utf8_general_ci;

## MySQL 데이터베이스 삭제

> DROP DATABASE 데이터베이명;
> DROP DATABASE studydb;

## MySQL 사용자에게 데이터베이스 사용 권한 부여
> GRANT ALL ON 데이터베이스명.* TO '사용자아이디'@'서버주소';
> GRANT ALL ON studydb.* TO 'study'@'localhost';

## 데이터베이스 목록 조회
> show databases;

## 사용자 교체
> quit or exit  (프로그램 종료 후)
> mysql -u study -p   (다시 실행)

## 기본으로 사용할 데이터베이스 지정하기
> use 데이터베이스명
> use studydb;

## 데이터베이스의 전체 테이블 목록 조회
> show tables;