1. MySQL
1) 데이터베이스의 기본 개념
- 데이터의 집합
- 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터의 집합
- 효율적으로 저장, 검색, 갱신할 수 있도록 데이터 집합들끼리 연관시키고 조직화되어야 한다.
2) 데이터베이스 관리 시스템(DBMS)
- 데이터베이스를 관리하는 소프트웨어
- 여러 응용 소프트웨어 또는 시스템이 동시에 데이터베이스에 접근하여 사용할 수 있게 한다.
- 필수 3기능
- 정의기능 : 데이터베이스의 논리적, 물리적 구조를 정의
- 조작기능 : 데이터를 검색, 삭제, 갱신, 삽입, 삭제하는 기능
- 제어기능 : 데이터베이스의 내용 정확성과 안전성을 유지하도록 제어하는 기능
3) SQL(Structured Query Language)
- SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터언어이다.
- 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다.
- 구분
- DML(Data Manipulation Language) : 데이터를 조작하기 위해 사용하는 언어(INSERT, UPDATE, DELETE, SELECT 등)
- DDL(Data Definition Language) : 데이터베이스의 스키마를 정의하거나 조작하기 위해 사용하는 언어(CREATE, DROP, ALTER 등)
- DCL(Data Control Language) : 데이터를 제어하는 언어(GRANT, REVOKE 등)
a. DML
- SELECT(검색)
- SELECT(DISTINCT) (Column name(ALIAS)) FROM (Table name)
- select : 검색하고자 하는 데이터(column)를 나열 한다.
- distinct : 값이 중복되는 행을 제거
- alias : 나타날 column에 대한 별칭 부여(별칭 부여 시, column name 뒤에 공백으로 구분하여 별칭을 추가한다.)
- , 로 여러 개의 column 선택 가능
- select 뒤에 함수가 들어올 수도 있음(ex. concat(empno. '-',deptno) as '사번-부서번호' : empno에 '-'와 deptno를 붙여서 '사번-부서번호'로 출력해라)
- 정렬하고 싶을 때, 쿼리의 맨 마지막에 drder by (column name)(desc))
을 추가한다. (desc : 내림차순, column name 대신 몇 번째 column을 표현할 것인지의 숫자를 입력해도 됨)
- where : 조건을 추가하여 표현할 수 있음(ex. WHERE title = 'staff'
title이 staff인 필드만 표현, WHERE salary BETWEEN 1000 AND 2000
) 일반적으로 row을 결정하는 조건문
- where deptno in (10, 30)
: deptno가 10이거나 30만(or연산), and 연산은 and
그대로를 붙여주면 됨.
- LIKE (wildcard : %(0부터 여러 개의 문자열을 나타냄), _(단 하나의 문자를 나타냄)) : wildcard를 사용하여 특정 문자를 포함한 값에 대한 조건 처리 (ex. where name like '%A%'; : 'A'가 포함된 사원이름, '$A' : 이름이 A로 끝나는 경우)
- 다양한 함수 모음(upper, upcase : 대문자 전환, lower, lowcase : 소문자 전환, substring('Happy day', 3, 2); : 해당 문자열의 3번째 문자부터 2개 문자를 뽑아 내라, LPAD('hi', 5, '?'); : 문자 갯수가 5개가 되도록 앞에 ?를 채워라. L이 아닌 R일 경우 뒤에 채움, LTRIM : 왼쪽의 공백을 없애라. R일 경우 반대, TRIM(BOTH 'x' FROM 'xxxhixxx'); = 'hi')




2. insert
insert into (table name(field 1, field 2, ...)) (value1, value2, ...)
- 데이터 타입을 맞춰줘야함.
- 모든 column에 데이터가 들어갈 때, insert into ROLE values(value1, value2, ...);
- Column의 key가 pri일 경우, null이 들어갈 수 없음.
- update
update (table name) set (field1=value1, field2=value2, ...) where (condition)
- insert는 추가의 의미, update는 수정의 의미
- delete
delete from (table name) where (condition)
b. DDL
- 데이터 타입

- 테이블 생성

- 테이블 수정



- 테이블 삭제

- 테이블이 삭제가 안되는 경우 : 다른 테이블에 의해 참조되고 있는 테이블일 경우(참조하고 있는 테이블을 먼저 삭제한 후에 삭제해야한다.)(Foreign Key)
4) MySQL 접속 방법
- MySQL 접속 :
mysql -uroot -p
(root계정으로 접속, pw는 없음)
- Database 생성 : mysql프롬프트에서
create database connectdb;
connectdb 데이터베이스 생성
- Database 권한 부여 :
grant all privileges on dbconnect.* to root@'%' identified by '123';
(모든 클라이언트(%)에서 접속한 root계정에 dbconnect 데이터베이스에 대한 모든 권한(*)을 부여함. 비밀번호 : 123) 권한 부여 후, flush privileges;
로 마무리
- 생성한 Database에 접속 :
mysql -h127.0.0.1 -uconnectuser -p connectdb
(localhost(127.0.0.1)에서 connectuser로 connectdb 데이터베이스에 접속) 그 후, pw입력.
5) 테이블(table)
a. 테이블 구성요소
- 테이블 : RDBMS의 기본 저장구조, 한 개 이상의 column과 0개 이상의 row로 구성
- Column : 테이블 상에서 단일 종류의 데이터를 나타냄. 특정 데이터 타입 및 크기를 가지고 있음
- Row : Column값의 조합. 레코드라고 불린다. 기본키(PK)에 의해 구분된다. 기본키는 중복을 허용하지 않으며 없어서는 안된다.
- Field : Row와 Column의 교차점으로 Field는 데이터를 포함할 수 있고, 없을 때는 null값을 가진다.
b. 테이블 불러오기
- example.sql 다운로드 (https://www.boostcourse.org/downloadFile/fileDownload?attachmentId=304830&autoCloshttps://www.boostcourse.org/downloadFile/fileDownload?attachmentId=304830&autoClose=truee=true)
- example.sql이 있는 디렉토리로 이동한 후,
mysql -uconnectuser -p connectdb < examples.sql
입력 (examples.sql에는 연습을 위해 테이블 생성문과 해당 테이블에 값을 저장하는 입력문이 존재함, 해당 명령문을 통해 테이블이 생성됨)
show tables;
: 로그인한 계정으로 생성한 테이블 목록 출력
desc (table name)
: table의 구성을 볼 수 있음. (table이 그대로 나타나는게 아닌 table의 column이 어떻게 구성되어 있는지 표현)