MariaDB 입문서
Contents
이 입문서는 mariadb 커맨드 라인 클라이언트 프로그램을 사용하여 기존 MariaDB 데이터베이스에 정보를 입출력하는 기본 사항을 알려 드리기 위해 작성되었습니다. 이 문서는 완전한 참고 자료가 아니며 고급 주제에 대해서는 다루지 않습니다. 이 문서는 MariaDB 사용에 대한 빠른 시작을 위한 것입니다.
MariaDB에 로그인
다음과 같이 커맨드 라인에서 MariaDB 서버에 로그인합니다.
mariadb -u user_name -p -h ip_address db_name
user_name을 데이터베이스 사용자 이름으로 변경합니다. ip_address를 서버의 호스트 네임 또는 주소로 변경합니다. 로그인한 서버와 동일한 서버에서 MariaDB에 액세스하는 경우 -h
및 ip_address를 포함하지 마세요. db_name을 액세스하려는 데이터베이스의 이름으로 변경합니다(예: test, 테스트 목적으로 이미 생성되어 있는 경우가 있습니다. Windows에서는 이 데이터베이스를 생성하지 않으며 일부 설정에서는 mariadb-secure-installation을 실행하여 test
데이터베이스가 제거되었을 수도 있으므로 이 경우 db_name을 그대로 두어도 됩니다).
비밀번호를 입력하라는 메시지가 표시되면 입력합니다. 로그인에 성공했다면 다음과 비슷한 화면이 표시됩니다.
MariaDB [test]>
여기에서 모든 SQL 문을 입력합니다. 나중에 자세히 설명합니다. 지금은 프롬프트의 구성 요소를 살펴보겠습니다. "MariaDB" 부분은 MariaDB 데이터베이스 서버에 연결되어 있음을 의미합니다. 괄호 사이의 단어는 기본 데이터베이스의 이름이며, 이 예제에서는 test입니다.
데이터베이스의 기본 사항
데이터베이스를 변경하거나 데이터를 검색하려면 SQL 문을 입력해야 합니다. SQL은 Structured Query Language의 약자입니다. 데이터를 요청하는 SQL 문을 쿼리라고 합니다. 데이터베이스는 정보를 테이블에 저장합니다. 스프레드시트와 비슷하지만 데이터 관리에 훨씬 더 효율적입니다.
test 테스트 데이터베이스에는 아직 데이터가 포함되어 있지 않을 수 있습니다. 입문서를 따라 하려면 다음을 복사하여 mariadb 클라이언트에 붙여 넣으세요. 이렇게 하면 사용할 테이블이 생성되고 여기에 일부 데이터가 추가됩니다. 아직 이해가 안 되더라도 걱정하지 마세요. 나중에 설명해 드리겠습니다.
CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE IF NOT EXISTS books ( BookID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Title VARCHAR(100) NOT NULL, SeriesID INT, AuthorID INT); CREATE TABLE IF NOT EXISTS authors (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT); CREATE TABLE IF NOT EXISTS series (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT); INSERT INTO books (Title,SeriesID,AuthorID) VALUES('The Fellowship of the Ring',1,1), ('The Two Towers',1,1), ('The Return of the King',1,1), ('The Sum of All Men',2,2), ('Brotherhood of the Wolf',2,2), ('Wizardborn',2,2), ('The Hobbbit',0,1);
위에 사용된 세미콜론에 주목하세요. mariadb 클라이언트를 사용하면 여러 줄에 걸쳐 매우 복잡한 SQL 문을 입력할 수 있습니다. 세미콜론을 입력하고 [Enter]를 누르기 전까지는 SQL 문을 전송하지 않습니다.
지금까지 수행한 작업을 살펴 봅시다. 다음을 입력합니다.
SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | authors | | books | | series | +----------------+ 3 rows in set (0.00 sec)
데이터베이스의 테이블 목록이 표시되는 것을 확인할 수 있습니다. test
데이터베이스에 아직 테이블이 없는 경우 결과는 위와 동일하게 표시됩니다. 이제 이 테이블 중 하나에 대한 정보를 얻기 위해 다음을 입력해 보겠습니다.
DESCRIBE books; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | BookID | int(11) | NO | PRI | NULL | auto_increment | | Title | varchar(100) | NO | | NULL | | | SeriesID | int(11) | YES | | NULL | | | AuthorID | int(11) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+
우리가 관심을 가질 주요 정보는 Field 열입니다. 다른 열은 데이터베이스의 구조와 데이터 유형에 대한 유용한 정보를 제공하지만, Field 열은 테이블에서 데이터를 검색하는 데 필요한 이름을 제공합니다.
books
테이블에서 데이터를 검색해 보겠습니다. 다음과 같이 SELECT 문을 실행하여 데이터를 검색합니다.
SELECT * FROM books; +--------+----------------------------+----------+----------+ | BookID | Title | SeriesID | AuthorID | +--------+----------------------------+----------+----------+ | 1 | The Fellowship of the Ring | 1 | 1 | | 2 | The Two Towers | 1 | 1 | | 3 | The Return of the King | 1 | 1 | | 4 | The Sum of All Men | 2 | 2 | | 5 | Brotherhood of the Wolf | 2 | 2 | | 6 | Wizardborn | 2 | 2 | | 7 | The Hobbbit | 0 | 1 | +--------+----------------------------+----------+----------+ 7 rows in set (0.00 sec)
이 SQL 문 또는 쿼리는 데이터베이스에 books
테이블의 모든 데이터를 표시하도록 요청합니다. 와일드카드('*
') 문자는 모든 열을 선택하라는 의미입니다.
데이터 삽입
이제 이 테이블에 다른 책을 추가한다고 가정해 보겠습니다. Lair of Bones라는 책을 추가하겠습니다. 테이블에 데이터를 삽입하려면 INSERT 문을 사용합니다. 책에 대한 정보를 삽입하려면 다음과 같이 입력합니다:
INSERT INTO books (Title, SeriesID, AuthorID) VALUES ("Lair of Bones", 2, 2); Query OK, 1 row affected (0.00 sec)
테이블 이름 뒤 괄호 안에 열 목록을 넣은 다음 VALUES
키워드를 입력한 뒤 괄호 안에 열이 나열된 순서와 같은 값을 목록으로 넣는다는 것에 주목하세요. 열을 다른 순서로 배치할 수도 있지만, 값은 열을 나열한 것과 같은 순서로 있어야 합니다. 반환된 메시지는 SQL 문 실행이 정상적으로 진행되었으며 한 행이 입력되었음을 나타냅니다.
다음 SQL 문을 다시 실행하고 어떤 결과가 반환되는지 확인합니다.
SELECT * FROM books;
결과의 마지막 행에 방금 입력한 데이터가 표시됩니다. 다른 책의 데이터를 살펴보던 중 일곱 번째 책의 제목 철자가 틀린 것을 발견했다고 가정해 보겠습니다. 이 책의 철자는 The Hobbbit이 아니라 The Hobbit이어야 합니다. 해당 행의 데이터를 업데이트해야 합니다.
데이터 수정
테이블의 데이터를 변경하려면 UPDATE 문을 사용합니다. 위에서 언급한 책의 철자를 변경해 보겠습니다. 다음을 입력합니다.
UPDATE books SET Title = "The Hobbit" WHERE BookID = 7; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
이 SQL 문의 구문을 주목하세요. SET
절은 열과 그 값을 설정할 위치를 나열하는 곳입니다. WHERE
절은 BookID
열의 값이 7
인 행만 업데이트하려고 할 때 사용되며, 이 경우 해당되는 행은 하나뿐입니다. 반환된 메시지를 보면 WHERE
절과 일치하는 행이 하나 있고, 한 행이 변경되었음을 확인할 수 있습니다. 모든 것이 정상적으로 진행되었으므로 경고는 표시되지 않습니다. 이전에 실행한 SELECT를 실행하여 데이터가 변경되었는지 확인하세요.
보시다시피 MariaDB를 사용하는 것은 그리 어렵지 않습니다. 입력 실수나 잘못된 순서 또는 기타 잘못된 행위를 허용하지 않기 때문에 SQL 구문만 이해하면 됩니다.