: sql에서는 서로 연관된 표들을 grouping하여 서로 연관되어있지 않는 표들과 분리하는데 사용하는 파일의 폴더같은 역할이 데이터베이스
⇒ 표들을 grouping한 게 데이터베이스?
⇒ mysql에서는 '데이터베이스'와 함께 '스키마' 표현 사용
*스키마: 표들을 서로 grouping할 때 사용하는 일종의 폴더
⇒ 스키마들이 많아지면 이것들을 관리하는 데이터베이스 서버가 존재
⇒ 표 - 데이터베이스(스키마) - 데이터베이스 서버
5강. MySQL 서버접속
: 데이터베이스는 자체적인 보안체계를 가지고 있기에 데이터를 안전하게 보관 가능
: 권한 기능도 존재하기에 각 사용자마다 테이블과 스키마에 대해 읽기/쓰기/삭제 기능 권한 부여 가능
C:\Program Files\MariaDB 10.6\bin>mysql -uroot -p // MariaDB(MySQL)에 루트(root) 사용자로 로그인하는 명령어 ⇒ pwd 입력하면 mysql 실행 cf. 루트는 모든 권한이 열려있기에 루트의 권한으로 데이터베이스 직접 다루는 건 위험 (별도의 사용자를 만들어서 그걸로 작업하다 중요한 작업만 루트로)
cmd창에 Maria 명령 프롬프트 'MariaDB[(none)] > ' 가 떠야 데이터베이스 작업 가능 cf. 나갈려면 EXIT 명령어 사용
⇒ 이 작업까지 하면 데이터베이스 서버 담장 넘은 상태
6강. 스키마의 사용
(위쪽 화살표 누르면 이전 명령어들 뜸)
CREATE DATABASE opentutorials; //데이터베이스 생성
DROP DATABASE opentutorials; //데이터베이스 삭제
SHOW DATABASES; //내가 생성한 데이터베이스 출력
USE opentutorials; //이제 이 데이터베이스에 작업을 하겠다는 의미로, 이제 명령 프롬포트에 내리는 명령어는 opentutorials에 대한 명령을 실행
⇒ 이 작업까지 하면 데이터베이스를 넘어서 표를 다룰 준비가 된 상태
7강. SQL과 테이블의 구조
: Structured Query Language
: 표들을 정리정돈(구조화) + 데이터베이스에게 작업요청(쿼리) + MySQL Server와 내가 이해할 수 있는 공통언어
8강. 테이블의 생성
: create table in mysql cheat sheet 검색해서 문법 찾아보기 : 세미콜론 사용하지않으면 계속해서 줄바꿈하여 명령 입력 가능 (->가 표시됨) : 엑셀은 사용자가 데이터를 아무 타입이나 적을 수 있지만, 데이터베이스는 컬럼의 데이터 타입을 강제할 수 있음
: 엑셀은 기본적으로 모든 셀에 값을 넣을 수 있지만, 데베는 컬럼마다 "필수 입력"인지 "비워둘 수 있는지" 정할 수 있음
목표 : 왼쪽 사진과 같이 테이블 생성
C:\Program Files\MariaDB 10.6\bin>mysql -uroot -p MariaDB [(none)]> USE opentutorials; MariaDB [opentutorials] > CREATE TABLE topic ( -> id INT(11) NOT NULL AUTO_INCREMENT, /* 괄호 안에 쓰는 숫자는 나중에 검색할 때 얼마까지 노출시킬 것인지 조절하는 숫자로 보통 11 많이 사용 NOT NULL은 값이 없는 걸 허용하지 않는다는 의미로 무조건 값을 채우게 설정 AUTO_INCREMENT는 id의 값을 중복없이 알아서 행 추가할 때마다 증가시켜주기에 식별자 구분 가능 */
-> title VARCHAR(100) NOT NULL, // 사용자가 입력한 값이 최대 100글자까지는 저장되지만, 100글자를 초과하면 저장할 수 없어 오류 발생 -> description TEXT NULL, // 최대 65535글자 저장가능하고 값을 안넣는 것도 허용 -> created DATETIME NOT NULL, // 시간과 날짜 모두 설정 가능하고 무조건 데이터 쓰도록 -> author VARCHAR(30) NULL, -> profile VARCHAR(100) NULL, // VARCHAR은 보통 가변 길이 문자열 (이름, 이메일 등) 에 사용하고, TEXT는 본문 내용같은 거 사용시 이용 -> PRIMARY KEY(id)); // id 열이 메인키라는 것을 데이터베이스에 알려줌
cf. PRIMARY KEY의 두가지 측면
성능
중복 방지 ex) 위 사진상태에서 title에 DB2 추가하면서 id를 3으로 하면 중복되므로 안됨 ⇒ PRIMARY KEY(id) : 데이터베이스에게 "id컬럼은 가장 중요한 컬럼이므로 다른 애들이랑 중복되면 안된다"라는 것을 명시하는 것