> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL용 vsql_complex 확장 기능

> vsql_complex 확장 기능은 산술, 크기, 켤레 함수를 갖춘 COMPLEX 열 유형을 MySQL에 추가하며, VEF 사용자 정의 유형의 작동 예제로 제공됩니다.

`vsql_complex`는 복소수를 double 두 개로 저장하는 `COMPLEX` 열 유형과 그에
맞는 산술 연산을 추가합니다. 사용자 정의 유형의 작동 예제로 서버 안에 함께
제공되며, VEF 유형에 처음부터 끝까지 무엇이 필요한지 보여 줍니다: 이진 레이아웃,
텍스트 형식, 비교 규칙, 집계 함수입니다.

| | |
| - | - |
| **관리자** | VillageSQL |
| **소스** | [villagesql-server/villagesql/examples/vsql-complex](https://github.com/villagesql/villagesql-server/tree/main/villagesql/examples/vsql-complex) |
| **라이선스** | GPL-2.0 |

## 설치

`vsql_complex`는 서버 소스 트리에 들어 있으므로, 소스 빌드를 포함한 모든 설치
방법에서 번들이 존재합니다. 문 하나로 서버에 설치하세요:

```sql theme={null}
INSTALL EXTENSION vsql_complex;
```

설치되었는지 확인합니다:

```sql theme={null}
SELECT EXTENSION_NAME
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_complex';
```

```
+----------------+
| EXTENSION_NAME |
+----------------+
| vsql_complex   |
+----------------+
```

## 추가되는 기능

### COMPLEX 유형

값은 `'(real,imaginary)'` 형식으로 쓰며 16바이트를 차지합니다. 번들은
`COMPLEX2` 변형도 등록하지만, 이 페이지에서는 다루지 않습니다.

```sql theme={null}
CREATE TABLE signals (
    id        INT PRIMARY KEY,
    impedance COMPLEX
);
```

### 함수

| 함수 | 반환값 | 설명 |
| - | - | - |
| `complex_add(a, b)` | `COMPLEX` | 덧셈 |
| `complex_subtract(a, b)` | `COMPLEX` | 뺄셈 |
| `complex_multiply(a, b)` | `COMPLEX` | 곱셈 |
| `complex_divide(a, b)` | `COMPLEX` | 나눗셈 |
| `complex_real(a)` | real | 실수부 |
| `complex_imag(a)` | real | 허수부 |
| `complex_abs(a)` | real | 크기 |
| `complex_conjugate(a)` | `COMPLEX` | 켤레 복소수 |
| `complex_sum(a)` | `COMPLEX` | 집계: 그룹 전체의 합 |

## 예제

```sql theme={null}
INSERT INTO signals VALUES
    (1, '(50.0,0.0)'),
    (2, '(3.0,4.0)'),
    (3, '(0.0,-2.5)');

SELECT id, impedance,
       complex_real(impedance) AS re,
       complex_imag(impedance) AS im,
       complex_abs(impedance) AS magnitude
FROM signals;
```

```
+----+-----------+------+------+-----------+
| id | impedance | re   | im   | magnitude |
+----+-----------+------+------+-----------+
|  1 | (50,0)    |   50 |    0 |        50 |
|  2 | (3,4)     |    3 |    4 |         5 |
|  3 | (0,-2.5)  |    0 | -2.5 |       2.5 |
+----+-----------+------+------+-----------+
```

`(0,1)`을 곱하면 값이 4분의 1바퀴 회전하고, 집계 함수는 열 전체를 더합니다:

```sql theme={null}
SELECT complex_multiply(impedance, '(0,1)') AS rotated FROM signals WHERE id = 2;
SELECT complex_sum(impedance) AS total FROM signals;
```

```
+---------+
| rotated |
+---------+
| (-4,3)  |
+---------+
+----------+
| total    |
+----------+
| (53,1.5) |
+----------+
```

## 참고 항목

* [사용자 정의 유형](https://villagesql.com/docs/ko/sdk/cpp/custom-types.md) — VEF 유형을 선언하는 방법과 서버가 요구하는 것
* [확장 기능 만들기](https://villagesql.com/docs/ko/extensions/build/create.md) — 직접 만들어 보기
* [사용 가능한 확장 기능](https://villagesql.com/docs/ko/extensions/catalog) — 전체 카탈로그


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.