새소식

컴퓨터공학 💻/MariaDB

[데이터베이스] MariaDB - 테이블(Table) 생성, CREATE, READ, UPDATE, DELETE

  • -
MariaDB - 테이블(Table) 생성

쉽고 직관적인 작성을 위해 SQL CHEAT SEAT를 참고합니다.

 

테이블(Table)은 row(행)과 column(열)으로 이루어져 있습니다. 또한 column에 들어갈 수 있는 데이터의 타입을 명시하고 강제할 수 있습니다. 예를 들어 column 2번 line의 데이터타입이 INT라면 INT외에 다른 데이터 타입은 들어갈 수 없는 것입니다. MariaDB 공식 사이트에 Data Types가 나와있으니 참고 바랍니다.

 

CRUD는 CREATE, READ, UPDATE, DELETE 로써, 데이터베이스의 가장 중요한 4부문입니다.

 

CREATE

테이블은 다음 명령어를 통해 생성이 가능합니다.

CREATE TABLE tablename (
/*테이블에 넣을 column 항목*/,
/*테이블에 넣을 column 항목*/,
/*테이블에 넣을 column 항목*/,
);

끝부분에 ( 를 치고 엔터를 누르면 화살표(->)가 나오면서 테이블에 넣을 column 항목을 생성할 수 있습니다.

예시로 주식 테이블을 하나 만들어보겠습니다. 주식의 id, 주식명(name), 주식설명(description), 창립일(listed), founder(설립자), 구매액(bought)을 지정하였습니다.

 

괄호 안의 숫자는 데이터 타입의 길이를 어느정도까지 보여줄 것인지를 나타냅니다. (보여줄 길이만 정하는 것이지 데이터 자체의 길이를 제한하는 것이 아닙니다. C언어 출력 함수에서 "%.11f"의 11과 유사합니다). INT(11)은 입력된 정수 데이터에서 11의 길이만큼만 보여주게 됩니다.

NOT NULL은 값이 없는 상황을 허용하지 않겠다(required)는 의미입니다. NOT이 없으면 값이 비어있을 수 있습니다.

AUTO_INCREMENT는 내용이 추가될 때 해당 주제의 값을 1씩 추가하여 자동으로 삽입한다는 의미입니다.

PRIMARY KEY는 성능적 측면과 중복 방지 측면이 존재합니다. 중복 방지 측면의 예를 들면, id가 2인 종목이 이미 존재하는데 새 종목을 추가하여 id를 2로 지정하면 두 종목이 중복됩니다. 따라서 각각의 값들이 고유하고 중복되지 아니하도록 지정하는 방법입니다.

 

넣을 종목들을 완료하고 다시 괄호를 닫아주고 세미콜론을 붙여 엔터를 치면 테이블 생성이 완료됩니다.


※ 간혹 "you must reset your password using alter user statement before executing this statement" 라는 SQL 에러메시지가 뜨시는 분은 SQL이 기본 설정한 비밀번호로 위와 같은 작업을 수행할 수 없다는 뜻이니 다음과 같이 해결하시면 됩니다. (루트 비밀번호를 변경하라는 의미입니다)

SET PASSWORD = PASSWORD('aaaaaa') /*원하는 비밀번호 6자*/

생성된 테이블을 확인하거나 구조를 확인하려면 다음 명령어들을 사용합니다.

SHOW TABLES;

DESC tablename;

 

이제 column에 들어갈 row를 생성해보겠습니다. 

INSERT INTO tablename() VALUES();

괄호에서 column을 나열한 순서에 맞게 VALUES의 괄호 안에 row의 순서를 맞추어 생성하면 됩니다. Type이 datetime인 경우 직접 시간을 입력할 수도 있고 NOW() 함수를 사용하여 현재 시간을 입력할 수도 있습니다.

위와 같이 입력하면 입력한 데이터 값에 맞게 새로운 row가 생성됩니다.

데이터들을 추가하여 위와 같이 5개의 row를 생성해보았습니다.

 

READ
SELECT * FROM tablename WHERE columnname='data' ORDER BY DESC LIMIT 3;

SELECT * FROM tablename 은 tablename 상의 테이블로부터 추가된 모든(*) 정보들을 불러옵니다. 특정 정보만 불러오고 싶다면 FROM 앞에 원하는 column을 입력하면 됩니다. 

또한 원하는 데이터만 불러오고 싶다면 WHERE 를 사용하여 특정 컬럼의 데이터만 불러올 수 있습니다.

ORDER BY는 데이터의 나열 순서를 변경합니다 DESC는 내림차순, ASC는 오름차순 정렬입니다.

LIMIT은 보여줄 row의 수를 제한합니다. LIMIT 3은 출력 예정인 데이터 중 3개의 row까지만 제시합니다.

 

UPDATE
UPDATE tablename SET columnname='change1' WHERE columnname='whatrow';

UPDATE SET을 통해 데이터를 업데이트 할 수 있습니다. 단, WHERE를 반드시 입력해 어떤 column의 어느 row의 데이터를 변경할 것인지 반드시 명시해야 합니다. WHERE를 명시하지 않으면 위 예시에서 모든 founder가 happy로, 모든 description이 yjg corp으로 바뀌어버리는 불상사가 발생할 수 있습니다.

 

RENAME TABLE oldname TO newname;

RENAME TO를 통해 테이블의 이름을 변경할 수도 있습니다.

 

DELETE
DELETE FROM tablename WHERE columnname='whatrow';

DELETE명령을 통해 특정 데이터를 삭제할 수 있습니다. 위와 같이 id=4인 row의 데이터를 모두 삭제하였습니다. 마찬가지로 WHERE를 명시하지 않으면 모든 데이터가 날아가버리는 상황이 발생하니 주의해야 합니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.