Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

블로그 이름 뭐하지

[SQL] Database와 SQL 본문

카테고리 없음

[SQL] Database와 SQL

가는말이고우면오는말은come 2024. 9. 30. 16:33

Database

데이터의 집합으로, 우리가 사용하는 메세지, 인스타그램의 사진 등의 정보를 저장하고 관리한다.

 

DBMS

Database Management System의 약자로 Database를 관리하고 운영하는 소프트 웨어.

 

RDBMS

Relational DBMS의 약자로 관계형 데이터베이스를 뜻한다.

MySQL, PostgreSQL 이 대표적인 RDBMS이다.

 

RDBMS는 테이블(table)이라는 최소 단위로 구성되며,

테이블은 열(Column)과 행(Row)로 이루어져있다.

테이블 간 FK(Foreign Key)를 통해 다른 데이터를 조합해 함께 볼 수 있다.

 

테이블 예시

column 명 id name telNumber group
1row ka123 카즈하 010-1111-1111 르세라핌
2row kim123 김채원 010-2222-2222 르세라핌
3row sa123 사쿠라 10-3333-3333 르세라핌

 

SQL

Structured Query Language의 약자로 RDBMS에서 사용되는 언어이다.

각 회사마다 차이가 존재한다. 현재는 MySQL을 기준으로 설명한다.

DDL

Data Definition Language의 약자로 테이블이나 관계의 구조를 생성하는 데 사용한다.

 

1) CREATE

새로운 데이터 베이스 및 테이블을 생성해준다.

CREATE DATABASE 데이터베이스명;
CREATE TABLE 테이블명
(
    필드명1 필드타입1,
    필드명2 필드타입2,
    ...
);

 

2) ALTER

데이터베이스와 테이블의 내용을 수정한다.

ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
ALTER TABLE 테이블이름 DROP 필드이름;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;

 

3) DROP

데이터 베이스와 테이블을 삭제할 수 있다.

데이터 및 테이블 전체를 삭제한다.

DROP DATABASE 데이터베이스이름;
DROP TABLE 테이블이름;

 

4) TRUNCATE

데이터 베이스와 테이블을 삭제한다.

최초 테이블이 만들어졌던 상태, 즉 컬럼 값만 남긴다.

TRUNCATE DATABASE 데이터베이스이름;
TRUNCATE TABLE 테이블이름;

 

DCL

Data Control Language의 약자로 데이터의 사용권한을 관리하는 데 사용한다.

 

1) GRANT

사용자 또는 Role에 대해 권한을 부여할 수 있다.

GRANT [객체권한명] (컬럼)
ON [객체명]
TO { 유저명 | 롤명 | PUBLC} [WITH GRANT OPTION];

//ex
GRANT SELECT ,INSERT 
ON mp
TO scott WITH GRANT OPTION;

 

2) REVOKE

사용자 또는 Role에 부여한 권한을 회수할 수 있다.

REVOKE { 권한명 [, 권한명...] ALL}
ON 객체명
FROM {유저명 [, 유저명...] | 롤명(ROLE) | PUBLIC} 
[CASCADE CONSTRAINTS];

//ex
REVOKE SELECT , INSERT
ON emp
FROM scott
[CASCADE CONSTRAINTS];

 

DML

Data Manipulation Language의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제 할 수 있다.

 

1) INSERT

테이블에 새로운 row를 추가한다.

INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) VALUES(데이터값1, 데이터값2, 데이터값3, ...);
INSERT INTO 테이블이름 VALUES(데이터값1, 데이터값2, 데이터값3, ...);

 

2) SELECT

테이블의 새로운 row를 선택한다

SELECT 필드이름 FROM 테이블이름 [WHERE 조건];

 

3) UPDATE

테이블의 row 내용을 수정한다

UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... WHERE 필드이름=데이터값;

 

4) DELETE

테이블의 row를 삭제한다

DELETE FROM 테이블이름 WHERE 필드이름=데이터값;

 

CREATE 제약조건

1) AUTO_INCREMENT

컬럼의 값이 중복되지 않게 1씩 자동으로 증가시킨다.(고유번호 생성)

CREATE TABLE 테이블이름
(
    필드이름 필드타입 AUTO_INCREMENT,
    // id bigint AUTO_INCREMENT,
    ...
);

 

2) NOT NULL

제약이 걸린 필드는 NULL 값을 저장할 수 없게 된다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 AUTO_INCREMENT,
    // id bigint AUTO_INCREMENT,
    ...
);

 

3) UNIQUE

해당 필드는 서로 다른 값을 가져야 한다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 UNIQUE,
    ...
);

 

4) PRIMARY KEY(기본키)

해당 필드가 NOT NULL과 UNIQUE 제약조건의 특징을 모두 가진다.

유일하게 존재하는 값의 조합을 설정하여 중복된 데이터가 테이블에 삽입되는 것을 방지한다.

주민번호 컬럼에 기본키가 설정되어있지 않다면 DBMS는 주민번호의 중복을 가정하고 5000만 row를 모두 확인한다.

기본키 설정을 할 경우 하나만 찾으면 해당 데이터를 반환한다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 PRIMARY KEY,
    ...
);

 

5) FOREIGN KEY(외래키)

하나의 테이블을 다른 테이블에 의존하게 만들어 데이터의 무결성을 보장한다.

FK를 가지는 테이블이 참조하는 기존 테이블의 열(column)은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 한다.

외래키는 두개의 테이블을 연결하는 다리 역할을 한다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...
    FOREIGN KEY(필드이름)
    REFERENCES 참조할 테이블이름(참조할 필드이름)
);

 

CASCADE

FK로 연관된 데이터를 삭제, 변경할 수 있다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...
		FOREIGN KEY(필드이름)
    REFERENCES 테이블이름(필드이름) ON DELETE CASCADE 
			   //ON UPDATE CASCADE
);