데이터베이스( DB,Database)란?
- 데이터베이스를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있습니다.
- 데이터베이스에는 일상생활 대부분의 정보가 저장되고 관리됩니다. 오늘 보내거나 받은 카카오톡 메시지, 인스타그램에 등록한 사진, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 아이스 아메리카노 등의 정보가 모두 데이터베이스에 기록됩니다.
관계형 DMBS
관계형 DBMS(Relational DBMS)는 줄여서 RDBMS라고 부릅니다.
MySQL뿐만 아니라, 대부분의 DBMS가 RDBMS 형태로 사용됩니다.
RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며,
이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있습니다.
SQL: DBMS에서 사용하는 언어
SQL(Structured Query Language)은 관계형 데이터베이스에서 사용되는 언어로, ‘에스큐엘’ 또는 ‘시퀄’로 읽습니다.
관계형 DBMS 중 MySQL를 배우려면 SQL을 필수로 익혀야 합니다.
SQL이 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 갖습니다.
기본
- 소문자를 사용한다. 실수할 일이 적고 MySQL은 대소문자를 구분하기에 통일해준다.
- Space 즉 띄어쓰기는 Underscore _ 로 대체한다.
- 숫자는 허용하지 않는다.
- 컬럼의 의미를 설명가능한 이름이며 64자를 넘지 않는다.
- prefix를 사용하지 않는다.
데이터베이스 이름
- 단수형, 복수형 모두 사용할 수 있지만 데이터베이스 자체가 1개의 데이터들의 모음을 나타내게 되므로 단수형이 옳다.
- 가능한한 prefix는 피한다.
테이블 이름
- 소문자를 사용한다. 대소문자를 구분하는 리눅스 서버 위에 보통 MySQL을 호스팅한다. 또 MySQL과 함께 사용되는 많은 프레임워크들(php, JPA)이 자동 생성해주는 테이블이름은 소문자를 사용한다.
- 테이블 이름은 단수형이다. 여러 형태의 데이터를 담고 있는 것이 테이블이라서 복수형이 될 것 같지만 테이블 자체는 하나의 독립체이다.
- prefix를 사용한다. 테이블은 일반적으로 데이터베이스 혹은 프로젝트의 이름을 가지고 있다. 한 데이터베이스 내에서도 비슷한 역할을 하는 테이블이름이 겹칠 수 있으므로 테이블이름에 prefix를 사용할 수 있다.
필드 이름(컬럼명)
- 소문자 사용, 띄어쓰기 금지, 숫자 사용 금지, prefix 금지
- 짧아야 한다. 2개 단어를 넘지 않는다.
- 이해하기가 쉬워야한다.
- 기본키는 id 혹은 <table_name>_id의 형태를 따른다.
- 단어를 거꾸로 쓰는 일은 피하자(date_signup(x), date_create(x), signup_date(o), created_date(o))
- 컬럼명과 테이블이름을 동일하게 하는 피한다.
- 축약형, 연결형, 두음형은 피한다.
- 외래키를 사용한다.
- 외래키 컬럼명에는 참조하는 테이블의 이름을 사용한다.
SQL 명령어
-- 데이터 베이스 생성
CREATE DATABASE sparta_test;
-- 테이블 생성
CREATE TABLE sparta_test.student(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL,
email varchar(50) UNIQUE
)
USE sparta_test;
-- 학생 데이터 입력
INSERT INTO student (name)
VALUES
('전규렬'),
('정지우'),
('조해빈')
;
-- 학생 이메일 업데이트
UPDATE student SET email = 'wjsrbfuf@naver.com' WHERE id = 3;
-- 학생 검색(이메일)
SELECT * FROM student s
WHERE email LIKE '%@naver.com'
-- 학생 데이터 삭제
DELETE FROM student
WHERE id = 2;
-- 데이터 조회
SELECT *FROM student s;
테이블 생성 제약조건
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- DEFAULT
NOT NULL
즉, 이 제약 조건이 설정된 필드는 무조건 데이터를 가지고 있어야 합니다.
NOT NULL 제약 조건은 CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가할 수도 있습니다.
NOT NULL 제약 조건을 설정하면, 해당 필드는 NULL 값을 저장할 수 없습니다.
UNIQUE
UNIQUE 제약 조건을 설정하면, 해당 필드는 서로 다른 값을 가져야 합니다.
UNIQUE 제약 조건은 CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가할 수도 있습니다.
즉, 이 제약 조건이 설정된 필드는 중복된 값을 저장할 수 없습니다.
PRIMARY KEY
따라서 이 제약 조건이 설정된 필드는 NULL 값을 가질 수 없으며, 또한 중복된 값을 가져서도 안 됩니다.
UNIQUE는 한 테이블의 여러 필드에 설정할 수 있지만, PRIMARY KEY는 테이블당 오직 하나의 필드에만 설정할 수 있습니다.
이러한 PRIMARY KEY 제약 조건은 테이블의 데이터를 쉽고 빠르게 찾도록 도와주는 역할을 합니다.
이러한 PRIMARY KEY 제약 조건을 기본 키라고 합니다.
PRIMARY KEY 제약 조건을 설정하면, 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가집니다.
FOREIGN KEY
외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다.
FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 합니다.
즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 테이블에 의존하게 만듭니다.
FOREIGN KEY 제약 조건을 설정한 필드는 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할을 합니다.
DEFAULT
만약 레코드를 입력할 때 해당 필드 값을 전달하지 않으면, 자동으로 설정된 기본값을 저장합니다.
DEFAULT 제약 조건은 해당 필드의 기본값을 설정할 수 있게 해줍니다.
'SQL' 카테고리의 다른 글
[PG] PostgresQL 기초부터 공부하기1 (1) | 2023.11.01 |
---|---|
[SQL] Subquery 이해하기 (0) | 2023.09.06 |
테이블 삭제 명령어 비교 TRUNCATE, DROP, DELETE (0) | 2023.08.21 |
SQL쿼리 작성 기초 및 최적화 (0) | 2023.01.16 |
댓글