1.db란?
데이터베이스(DB: database) : 통합(Integrate)하여 관리(Management)되는 데이터의 집합체
여기서,
-통합? 여러 업무에 여러 사용자가 '하나의' 데이터 베이스 사용.
-관리? 1)중복된 데이터를 없애고 자료를 구조화 -> 효율적인 처리
데이터베이스는 응용 프로그램과는 독립되어있어, 다른 별도의 미들웨어(=DBMS)에 의해 관리된다.
1.2-DBMS는 뭔데? (+RDBMS)
:DataBase Management System = 데이터베이스 관리 시스템
즉 데이터베이스를 관리 / 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어.
mySQL은 이런 DBMS 중 하나!
C언어, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하는 장점이 있다.
1.3 RDBMS
mySQL은 RDBMS로서 (Relational +DBMS :관계형 데이터베이스) Key-Value DB의 후속작(?), 발전된 단계로
'표'(=테이블)를 만들어 데이터를 저장하는 방식이다.
현재 가장 많이 사용되고 있는 DB방식으로, 다른 RDBMS로는 ORACLE, MYSQL, MsSQL, MariaDB, PostgreSQL등이 있다.
RDBMS의 특징으로는
-정규화를 많이 함 : 중복되거나 종속되는 값들은 다른 테이블로 빼서 관리. ->
관리가 용이해지고 보기 편함, 원하는 값들을 조합해서 view로 정리함으로써 보안도 챙길 수 있음.
-SQL언어를 사용함. 아래 후술.
1.4 SQL이란?
SQL(Structured Query Language).
: 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어.
쿼리, 쿼리문이라고 부른다.
다른 프로그래밍 언어에서 '코드'랑 같은 개념.
1.5 SQL의 종류
1.5.1 DDL
DDL(Data Definition Language)
:데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어
ex) CREATE, ALTER, DROP
1.5.2 DML
DML(Data Manipulation Language)
:데이터베이스에 저장된 데이터를 처리하거나 조회, 검색하기 위한 명령어
ex)INSERT, UPDATE, DELETE, SELECT
1.5.3 DCL
DCL(Data Control Language)
:데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성 등을 제어하기 위한 명령어
ex)GRANT, REVOKE
2. 기초 문법 및 사용법(자 바로 실전으로!)
2.1 워크벤치- 스키마- 테이블 생성
한글 파일을 생성하기 위해선 New 한글파일을
자바에서 Hello World를 찍기위해선 New Java Project -> New package -> New -> class 하듯이
파일을 생성해줘야한다.
workbench를 새로 키면 얼추 이런 화면.(기존 공부하던 파일들이 있는 건 양해 부탁드립니다.)
+를 누른후
name입력, Store in Vault에서 설치할때 입력했던 비밀번호 입력 ->OK
왼쪽의 Schemas(스키마) 탭 -> 우클릭 -> Create Schema
입력 후 apply -> apply -> finish.
네비게이터를 보면 새로 생성되었다.
Tables에 우클릭 -> Create.
2.2 table properties 설정
Table name, column Name과 속성을 입력해준 뒤 Apply->apply -> finish
기본적인
PK : Primay Key = 중복되거나 비어있으면 안되는 값. UQ+NN.(인덱스 값)
NN : Not Null = NULL이어서는 안되는 값.
UQ : UniQue = 유일성을 가지는 값. 중복되면 안되는 키.
AI : Auto Increment
PK: 기본키. 테이블에 '하나만' 지정 가능한 식별자. 사람으로 치면 주민등록번호!, 보통의 문서에서는 '순번'따위의 값.
여기서 주의할 점은, 기본키(PK)는 테이블에 단 하나만 있어야하지만, PK가 선택된 컬럼이 단 하나만 있어야 하는건 아니다.
다시 말하자면, '기본키를 구성하는 컬럼은 복수일 수 있지만, 기본키가 복수일 수는 없다.'
아래는 즉석으로 만들어본 Composite key의 예시.
하나의 테이블에 index와 time에 PK가 설정되어있다. 이 세트를 Composite key(복합키)라고 칭한다.
사진에서 보다시피 각각의 키는 중복될 수 있으나 두 키를 결합했을 때 중복될 수는 없다.
만약 3 dinner chiken을 입력한다면? 'Duplicate entry' 오류가 뜬다. 즉 복합키를 세트로 보았을때 각각의 모든 키가 같을 수 없다는 뜻.
이 차이를 이해하면 UQ의 특성을 가지는 PK가 있음에도 UQ를 왜 따로 설정할 수 있는지 이해할 수 있다.
별도로 설정한 UQ키는, PK와 독립적으로 유일성의 특징을 갖는다.
가령 주민등록번호를 PK로 해놓는다면, (마찬가지로 하나뿐인) 회원번호는 UQ로 해두어야한다.
두 키를 모두 PK로 해놓는다면, 같은 주민등록번호에 여러 회원번호인 데이터가 입력될 수 있기 떄문.
이제 테이블을 생성했다면 기초적인 쿼리들을 이용해 DB를 만들어보자.
3. 기초 쿼리(DDL) 4가지
(DML : Data Manipulation Language)
: 데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어
3.1 insert
#insert(데이터 추가)
insert into pratice_myself.`test_tb`(`student_id`, `student_name`, `student_age`, student_score) values(0, '학생1', 20, 65);
-- 작은따옴표 생략
insert into pratice_myself.test_tb(student_id, student_name, student_age, student_score) values(0, '학생2', 21, 70);
-- 선택된 스키마라면 스키마와 컬럼 생략
insert into `test_tb` values(0, '학생3', 22, 75);
-- 일부 값만 넣을 때 : 컬럼을 명시
insert into pratice_myself.`test_tb`(`student_id`, `student_name`) values(0, '학생4');
-- 일부 값만 넣을 때(2) : null로 채움
insert into test_tb values(0, '학생5', null, null);
-- PK값 외에 모두 null로 넣을 수 있다.
insert into test_tb values(0, null, null, null);
다양한 형식으로 넣을 수 있다.
3.2 update
update test_tb set student_age = 24 where student_id = 4;
update test_tb set student_score = 100 where student_id = 4;
update test_tb set student_age = 26, student_score = 90 where student_id = 5;
한개씩 수정도 되고 여러개씩 수정도 가능하다.
3.3 delete
delete from test_tb where student_id = 3;
delete from test_tb where student_id between 4 and 5;
delete from test_tb; -- 전체삭제
3.4 select (간단)
위에서 모두 delete를 해 값이 없기에 위의 insert into를 똑같이 실행했다.
select * from test_tb;
테이블 전체 조회.
이번 포스트에서는 select에 대해 간단히 다루고 마무리하겠습니다.
(다음시간 preview.)
select
student_id,
student_name,
student_age,
student_score
from
test_tb
where
(student_age = 20
and student_score is not null)
or student_name = '학생3';
나이가 20살이면서 score가 null이 아닌 학생1
그리고 이름이 학생3인 학생3이 출력
'Back-End > DB' 카테고리의 다른 글
ERD 작성법 : 기호(사상수,참여도)와 선(식별/비식별)의 의미 정리 (ERD Cloud / IE표기법 기준) (0) | 2023.12.13 |
---|---|
[오류해결] new function시 오류 : log_bin_trust_function_creators variable (0) | 2023.07.21 |
mySQl 다운로드 / 설치방법 (간단) (0) | 2023.07.19 |