CS/데이터베이스

[MySQL] MySQL 서버 설정 및 레코드 추가

nowkoes 2023. 7. 9. 18:55

 

MySQL 연동

개요

 지난 시간에는 MySQL과 visual studio를 연동하는 기본적인 방법에 대해 배웠다. 이번 시간에는 MySQL에서 새로운 테이블을 정의하고 visual studio를 사용해 이 테이블에 데이터를 업데이트하는 과정을 살펴볼 것이다. 이 과정을 통해, 데이터베이스를 구성하고, 데이터를 관리하는 기본적인 방법을 익혀 보자.


서버 생성 및 기본적인 명령어

 

 

 먼저 데이터베이스를 구축할 서버를 생성해야 하므로, 새로운 커넥션을 만들어 주자. 

 

 

 서버 명만 설정하고, 나머지는 건드리지 말고 다음 단계로 넘어가면 된다.

 

 

 다음과 같이 쿼리에 example이라는 database를 생성하고, 이 DB 아래에 example_table이라는 테이블을 생성해주자. 이 테이블은 name이라는 문자와 age라는 정수형 자료를 갖고 있다. 이처럼 새로운 데이터베이스, 테이블 등을 만들 땐 create 명령어를 사용하면 된다.

create database DB명; // DB명 데이터베이스 생성
create table table명(datatype) // datatype을 데이터 타입들로 갖는 테이블 생성

 

 

 테이블의 특정 컬럼 값을 표시하고 싶다면 select 문을 사용하면 된다. 여기서 example_table의 모든 컬럼들을 보고 싶을 땐 '*' 문자를 이용하면 된다.

select 컬럼명 from 테이블명 where 조건; // 테이블에서 특정 조건을 만족하는 컬럼 출력

 

 

 이제 insert into 명령어를 통해 example_table에 2살의 "A"라는 데이터를 넣어준다.

insert into 테이블명 values (data); // data라는 데이터를 테이블에 추가
insert into 테이블명 (datatype) values (data); // data라는 데이터를 테이블에 추가

Visual studio와 연동

 위의 과정을 visual stuido에서 진행해보자. 기초적인 연동 방법에 대한 설명은 지난 게시글을 참조하자.

 

#include <iostream>
#include <mysql.h>
#include <string>

int main()
{
    MYSQL mysql;
    mysql_init(&mysql);

 MYSQL 정보를 담을 mysql 구조체를 선언해주고, 서버와의 연결을 초기화하는 데 사용하는 메모리를 할당하기 위해 mysql_init() 함수를 사용해주자. 

 

    if (mysql_real_connect(&mysql, "localhost", "root", "password", "example", 3306, NULL, 0))
	{
    	std::cerr << "Failed to connect to MYSQL\n";
    	return 0;
    }

 MySQL 서버와의 연결을 확인하기 위해 mysql_real_connect() 함수를 사용한다. 이때 mysql_real_connect() 함수의 형태는 다음과 같다.

 

 

 즉, mysql_init()에 의해 초기화된 객체 포인터, 연결하려는 서버의 호스트 이름, 로그인하는 데 사용하는 사용자 이름, 사용자의 비밀번호, 연결 후 사용할 데이터베이스 이름, 포트 번호를 확인하는 과정이다. 만약 연결에 실패하면 에러 메시지를 출력하고 프로그램을 종료하게 설정하였다.

 

    std::string name = "B";
    int age = 3;

    std::string insert_query
    	= "INSERT INTO example_table (name, age) VALUES ('" + name + "', " + std::to_string(age) + ")";

    if (mysql_query(&mysql, insert_query.c_str()))
    {
    	std::cerr << "Query exectuion error: " << mysql_error(&mysql) << "\n";
    	return 0;
    }
    
    std::cout << "New record added successfully\n";
    mysql_close(&mysql);

    return 0;
}

 이제 추가할 데이터는 string name, int age 형식이므로, 추가할 데이터 형식을 미리 지정한 후 insert 쿼리문을 작성한다. 그리고 mysql_query() 함수를 이용하여 insert_query에 저장된 SQL 쿼리를 MYSQL 서버에 보내면 된다. 그후 메모리 누수를 방지하기 위해 mysql_close() 함수를 이용해 메모리를 해제하였다.

 

name:B, age:3 이라는 데이터가 추가되었음을 확인할 수 있다.

 

총합본

#include <iostream>
#include <mysql.h>
#include <string>

int main()
{
	MYSQL mysql;
	mysql_init(&mysql);

	if (!mysql_real_connect(&mysql, "localhost", "root", "password", "example", 3306, NULL, 0))
	{
		std::cerr << "Failed to connect to MYSQL\n";
		return 0;
	}

	std::string name = "B";
	int age = 3;

	std::string insert_query
		= "INSERT INTO example_table (name, age) VALUES ('" + name + "', " + std::to_string(age) + ")";

	if (mysql_query(&mysql, insert_query.c_str()))
	{
		std::cerr << "Query exectuion error: " << mysql_error(&mysql) << "\n";
		return 0;
	}

	std::cout << "New record added successfully\n";
	mysql_close(&mysql);

	return 0;
}

요약

MySQL 기본 문법
1. create: 데이터베이스나 테이블을 생성하는 명령어
 a. DB 생성: create database <database_name>
 b. 테이블 생성: create table <table_name> (column1 datatpye, column2 datatpye, ...)
2. insert: 테이블에 데이터를 사입하는 데 사용되는 명령어
 - insert into <table_name> (column1, column2, ...) values (value1, value2, ...) 
3. select: 테이블에서 데이터를 조회하는 데 사용되는 명령어
 a. select column1, column2, ... from <table_name>
 b. select * from <table_name>

 

반응형