Массив синтаксиса для mysql

какой синтаксис для добавления массива данных в базу данных, я нашел для postgresql: pg.Array

 // "ins" is the SQL insert statement
ins := "INSERT INTO posts (title, tags) VALUES ($1, $2)"

// "tags" is the list of tags, as a string slice
tags := []string{"go", "goroutines", "queues"}

// the pq.Array function is the secret sauce
_, err = db.Exec(ins, "Job Queues in Go", pq.Array(tags))
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
274
1

Ответы 1

Здесь я остановлюсь на паре моментов, которые в основном связаны с отсутствием ясности в вашем вопросе:

Первый

pq.Array используется для преобразования значений массива в безопасные списки в PostgreSQL, например следующий оператор:

db.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array([]int{235, 401}))

Где результирующий запрос:

SELECT * FROM t WHERE id = ANY(235, 401)

Это предназначено для того, чтобы помочь вам безопасно создавать значения запроса, не относящиеся к типам, из списков, а это не то, как вы используете его в своем вопросе.

Второй

Если вы просто пытаетесь упорядочить значение в список, разделенный запятыми, в столбце базы данных, то есть:

| title   | tags                 |
|---------|----------------------|
| my post | go,goroutines,queues |

Вам не нужна специальная функция в драйвере SQL. Вам просто нужно создать значение и позволить подготовленному оператору сделать свое дело:

tags := []string{"go, goroutines, queues"}
q := "INSERT INTO posts (title, tags) VALUES ($1, $2)"
_, _ = db.Exec(q, "mypost", strings.Join(tags, ","))

Третий

Вы, вероятно, были бы даже лучше обслуживались, если бы использовали отношения в MySQL для выполнения того, что вы делаете:

posts
| id | title   |
|----|---------|
| 1  | my post |
tags
| id | tag        |
|----|------------|
| 1  | go         |
| 2  | goroutines |
| 3  | queues     |
posts_tags
| posts_id | tags_id |
|----------|---------|
| 1        | 1       |
| 1        | 2       |
| 1        | 3       |

Это поможет вам сэкономить место, не сохраняя повторяющиеся данные, и избавит от необходимости понимать метод сериализации в базе данных (плюс, это то, что реляционные базы данных делать). Затем, когда вы выбираете таблицу, вы можете создать операторы JOIN для извлечения данных по мере необходимости. Я настоятельно рекомендую прочитать о многих отношениях в MySQL.

Эта модель данных чрезмерно нормализована и приносит в жертву высокую производительность (JOIN-операции дороже, чем просто чтение поля) для относительно дешевого дискового пространства. Учитывая сегодняшние цены на хранение, это плохой компромисс.

Markus W Mahlberg 10.01.2019 08:08

@MarkusWMahlberg Я полностью не согласен с этим утверждением. В наши дни диск дешевый, как и вычисления. Да, это слишком усложняет простую структуру данных, но я бы не подумал, что он будет создавать только приложение, которое содержит только эти функции. Если начать с передового опыта, то в конечном итоге вы сможете создать лучшее приложение. «Какие теги используют все» бесконечно сложнее ответить в предыдущем подходе.

syntaqx 10.01.2019 08:16

Есть разница между вычислениями и производительностью. Вы можете сколько угодно масштабировать вычисления - если запрос дороже другого, это займет больше времени. А без надлежащих сценариев использования, которые это оправдывают, нет необходимости усложнять модель данных.

Markus W Mahlberg 10.01.2019 08:40

Другие вопросы по теме

Получите сообщение Json и преобразуйте его в переменную PHP
Как извлечь несколько столбцов данных из двух разных текстовых файлов и правильно отформатировать их для использования в большем количестве кода
Указатели и массивы против указателей и целых чисел C++
Сохранить предыдущее состояние в один массив в ReactJS
Как извлечь расширение из имени файла со специальными символами в it-javascript
Как лучше всего получить коэффициент для 2-мерного нормального распределения по 2-мерному массиву со средним значением в середине и минимумом в углах?
Выбрать диапазон значений из массива, включая дубликаты
Как я могу установить уникальную переменную для каждого элемента в массиве с помощью javascript?
Как извлечь массив json в виде таблицы из текстового столбца mysql, когда количество объектов json в массиве неизвестно?
Фильтрация объектов javascript в массив при использовании выборки