본문 바로가기
CS/DataBase

[DataBase] 관계형 데이터 베이스

by BK0625 2024. 8. 6.
반응형

관계형 데이터 베이스 (Relational Database)

 

관계형 데이터 베이스는 데이터를 테이블 형식으로 관리하는 데이터베이스 시스템이다.

 

각각의 테이블은 행과 열로 구성되며 행은 개별 데이터를, 열은 데이터의 속성을 나타낸다.

 

명칭을 정리하자면

 

- 테이블 (Table) : 데이터를 행과 열로 구성하여 저장하는 구조. 예를 들어 사용자의 정보를 저장하는 User 테이블이 있을 수 있음

 

- 행 (Row) : 테이블 내의 각 레코드(Record)를 나타낸다. 예를 들어 사용자 정보가 한 행이 된다.

 

- 열 (Column) : 테이블 내의 데이터 속성을 나타낸다. 예를 들어 User 테이블에서 고객의 이름을 저장하는 name 열과 고객의 전화번호를 저장하는 phone 열이 있을 수 있다.

 

-  기본 키 : Primary Key. 테이블 내에서 각 행을 고유하게 식별하는 열 또는 열의 조합. 예를 들면 User 테이블에 User_Id 열이 기본 키가 될 수 있다.

 

- 외래 키 : Foreign Key. 한 테이블의 열이 다른 테이블의 기본 키를 참조하는 경우를 말한다. 이 경우는 테이블 간의 관계를 정의하는 데에 사용된다.

 

 

관계형 데이터베이스 관리 시스템 (RDBMS)

 

RDBMS는 관계형 데이터베이스를 관리하는 소프트웨어이다. 대표적으로 MySQL, PostgreSQL, Oracle Database, MsSQL 등이 있다.

 

 

SQL (Structured Query Language)

 

SQL은 관계형 데이터베이스에서 데이터를 관리하고 조작하기 위한 표준 언어이다. SQL을 사용하여 데이터베이스에 데이터를 삽입하거나, 조회, 수정, 삭제를 할 수 있다.

 

 

https://sqlfiddle.com/mysql/online-compiler

 

FREE AI-Enhanced Online MySQL Compiler - For learning & practice

-- INIT database CREATE TABLE Product ( ProductID INT AUTO_INCREMENT KEY, Name VARCHAR(100), Description VARCHAR(255) ); INSERT INTO Product(Name, Description) VALUES ('Entity Framework Extensions', 'Use Entity Framework Extensions to extend your DbContext

sqlfiddle.com

 

밑의 사이트에 기본적인 SQL을 실습해보자.

 

이런식으로 작성해야 한다.

 

 

먼저 테이블을 만들어야 한다. 위에 있는 쿼리문을 지우고 테이블을 먼저 만들어보자.

 

테이블을 만드는 SQL문은 다음과 같다.

 

CREATE TABLE 테이블 명 ({
	컬럼이름 데이터 타입 그외조건
    ...
    ...
})

 

 

위 SQL문을 바탕으로 테이블을 생성해보자

 

-- INIT database
CREATE TABLE User (
  id INT AUTO_INCREMENT PRIMARY KEY,
  UserID VARCHAR(100),
  Name VARCHAR(100),
  Description VARCHAR(255)
);

 

 

나는 User 테이블을 생성했다. 이 User 테이블은 id라는 Primary Key 값을 가지며 auto increment를 통해 자동으로 1씩 증가하게 처리를 했다. 이 컬럼으로 각 데이터를 식별할 수 있다.

 

그리고 유저의 아이디를 저장할 수 있는 UserID, 이름을 저장할 수 있는 Name, 설명을 저장할 수 있는 Description 컬럼을 만들었다. (여기서 INT는 정수형 숫자를 저장할 수 있는 컬럼, VARCHAR은 문자열을 저장할 수 있는 컬럼이라고 타입을 지정해주는 역할을 한다. 자세한 건 추후 포스팅 예정)

 

 

그러면 테이블을 생성했으니 데이터를 넣어보자.

 

데이터를 생성하는 쿼리는 다음과 같다.

 

INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) VALUES (value1, value2, ...);

 

 

위 SQL문을 바탕으로 데이터를 넣어보자.

 

INSERT INTO User(UserID ,Name, Description) VALUES ('faker', '이상혁','goat');
INSERT INTO User(UserID, Name, Description) VALUES ('giwon', '이기원', 'salesman');
INSERT INTO User(UserID, Name,Description) VALUES ('IronMan', 'tony stark','developer');

 

 

나는 총 세 개의 데이터를 넣었다. 첫번째 쿼리를 바탕으로 설명하자면 나는 UserID가 faker이고 Name이 이상혁이며 Description이 goat인 데이터를 테이블에 삽입한 것이다.

 

 

그러면 조회를 해보자. 조회는 다음과 같은데 먼저 전체 조회를 해보자.

 

SELECT 조회할 컬럼 FROM 테이블명 WHERE 검색할 조건

 

 

where절은 특정 조건에 해당되는 데이터를 조회하고 싶을 때 사용하는거고 우리는 전체 데이터를 조회하고 싶으니 where 절은 쓰지 않아도 된다. 그리고 전체 컬럼을 조회하고 싶으면 조회할 컬럼 대신 *을 쓰면 된다.

 

SELECT * FROM User;

 

 

해당 쿼리를 넣고 돌려보면

 

 

 

데이터가 잘 나오는 것을 볼 수 있다. 그러면 이번에는 특정 컬럼만 조회를 해보자. 나는 UserID만 검색을 해보고 싶다.

 

 

SELECT UserID FROM User;

 

 

 

 

UserID만 조회된 것을 볼 수 있다. 그러면 이번에는 where 절로 조건을 걸어보자. 나는 이상혁의 UserID를 확인해보고 싶다하면 다음과 같이 쿼리문을 작성한다.

 

 

SELECT UserID FROM User WHERE Name = '이상혁';

 

 

 

 

faker가 잘 조회가 된 것을 볼 수 있다.

 

이번에는 데이터 수정을 해볼 것이다.

 

데이터 수정 SQL은 다음과 같은데

 

UPDATE 테이블명 SET 열 = '변경할값' WHERE 조건

 

 

나는 Name이 이상혁인 사람의 Description을 대상혁으로 바꾸고 싶다. 그러면 다음과 같이 쿼리를 날리면 된다.

 

UPDATE User SET Description = '대상혁' WHERE Name = '이상혁';

 

 

위 업데이트를 하고 다시 전체 조회를 해보자

 

 

SELECT * FROM User;

 

 

 

 

이상혁의 Description이 goat에서 대상혁으로 바뀐 것을 확인할 수 있다.

 

 

마지막으로 삭제를 다뤄보자. 삭제를 하는 SQL은 다음과 같다.

 

	DELETE FROM 테이블명 WHERE 조건

 

 

나는 UserID가 giwon인 데이터를 삭제하고 싶다.

 

 

DELETE FROM User WHERE UserID = 'giwon';

 

 

그리고 다시 전체 조회를 하면

 

 

 

2번의 id를 가지고 있던 giwon 데이터가 삭제된 것을 볼 수 있다.

 

 

이렇게 본 포스팅에서는 관계형데이터베이스의 정의와 아주아주 간단한 기본적인 쿼리를 다뤄봤다. 당연히 해당 쿼리는 너무나도 단순하고 기본적인 것이며 실제로는 join이나 내장함수도 많이 쓰이게 된다. 따라서 기본 SQL을 공부한 뒤 점점 깊숙히 공부하여야 한다.

 

 

 

반응형