То есть правильно будет, если копирую базу в память, начинаю искать именно по памяти, а при внесении изменений, открываю БД с диска и вношу параллельно изменения в файл и дублирую команды в память?
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Ну да. Можно и так. Можно наоборот.
Вопрос в другом : А нужно ли это ? |
|||
карма: 25 |
| ||
Голосовали: | Neo |
Ответов: 704
Рейтинг: 7
|
|||
Tad писал(а): А нужно ли этоВот это не знаю. Отлаживаю программу, смотрю как будет лучше. Пробую - одним словом. Хотя сомневаюсь в том, что извращения с памятью в моем случае дадут особый прирост. Скорее для попутного опыта. |
|||
карма: 0 |
|
Ответов: 1528
Рейтинг: 57
|
|||
какой нужен запрос на удаление строки в базе с одной колонкой ?
следом такойже вопрос на замену значения строки по индексу ? |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
1.SELECT rowid FROM <имя таблицы> WHERE <колонка> = <значение>
DELETE FROM <имя таблицы> WHERE rowid=<результат из строки выше> или, если значение в колонке не повторяются, DELETE FROM <имя таблицы> WHERE <колонка> = <значение> 2. INSERT OR REPLACE INTO <имя таблицы> ..... или UPDATE <имя таблицы> SET <колонка> = <значение> WHERE <условие> |
|||
карма: 25 |
|
Ответов: 1528
Рейтинг: 57
|
|||
может будут повторяться, а по индексу нельзя?
DELETE FROM <имя таблицы> WHERE <колонка> = <значение>
что указывается в значении ? |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Например: для колонки NAME - ЗНАЧЕНИЕ может быть "Петя" или "Вася"
hitman249 писал(а): а по индексу нельзя?hitman249 писал(а): удаление строки в базе с одной колонкой ? |
|||
карма: 25 |
|
Ответов: 1528
Рейтинг: 57
|
|||
Tad, он сам не считает ?
нельзя обратиться с запросом чтобы удалить например 5 строчку ? |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
hitman249 писал(а): удалить например 5 строчку Вместо слова "rowid" можно также применять слова "oid" или "_rowid_". |
|||
карма: 25 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Tad, так может получиться не совсем то. Как-то так надо:
|
|||
карма: 1 |
|
Ответов: 1528
Рейтинг: 57
|
|||
iarspider, эх, ещёбы вы рассказали что делает ?...
LIMIT 1 OFFSET 5 |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
hitman249 писал(а): iarspider, эх, ещёбы вы рассказали что делает ?...
LIMIT 1 OFFSET 5 Начиная с (5+1)(то есть с 6, если не ошибаюсь, там относительный отсчёт) обрабатывать только 1 |
|||
карма: 1 |
|
Ответов: 1528
Рейтинг: 57
|
|||
1nd1g0,
там ? LIMIT
или там ? OFFSET
или там и там ? |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
hitman249 писал(а): iarspider, эх, ещёбы вы рассказали что делает ?...LIMIT - сколько строк OFFSET - отступив от начала таблицы ------------ Дoбавленo в 12.54: Во избежание дальнейших вопросов.
Команда SELECT используется для запросов к базе данных. Результат SELECT - нуль или более записей, каждая из которых содержит фиксированное число столбцов. Количество столбцов в результате определяется списком выражений между ключевыми словами SELECT и FROM. Любое вычисляемое выражение может использоваться как результат. Если используется *, тогда возвращаются все столбцы всех таблиц. Если перед .* стоит имя таблицы, тогда возвращаются все столбцы только этой таблицы. Ключевое слово DISTINCT выделяет подмножество из результирующего набора записей, в котором каждая запись отличается от другой. Значения NULL не считаются отличными от других. По умолчанию возвращаются все записи, что можно указать точно ключевым словом ALL. Запрос выполняется на одной или более таблицах, перечисленных после ключевого слова FROM. Если задано множество таблиц, имена которых разделены запятыми, тогда запрос возвращает объединение (cross join) этих таблиц. Полный синтаксис SQL-92 для объединений (join) также поддерживается. Вложенные подзапросы также могут использоваться вместо имени любой таблицы в операторе FROM. Оператор FROM может быть полностью опущен, тогда в результате возвращается одна запись, состоящая из списка вычисляемых выражений. Оператор WHERE может использоваться для ограничения количества записей, которыми оперирует запрос. Оператор GROUP BY вызывает объединение одной или более записей в результате в одну для вывода. Обычно он применяется с агрегирующими функциями. Выражение в операторе GROUP BY не могут быть вычисляемыми выражениями. Оператор HAVING подобен WHERE, за исключением того, что HAVING применяется после группировки. Выражение HAVING может ссылаться на значения, даже функции агрегирования, которых нет в результате. Оператор ORDER BY используется для сортировки выводимых записей. Аргумент ORDER BY - это список выражений, который используются как ключ в сортировке. Выражения не являются частью результата для простого SELECT, но в составных SELECT (с UNION) каждое выражение должно точно соответствовать столбцам результата. Каждое выражение для сортировки может опционально использоваться с ключевым словом COLLATE и именем функции сравнения, используемой для сортировки текста и/или ключевые слова ASC или DESC, для задания порядка сортировки. Оператор LIMIT определяет верхнюю границу номера и число, возвращаемых записей. Отрицательное значение LIMIT, показывает отсутствие границ. Опциональное OFFSET в LIMIT определяет как много записей пропускается от начала набора данных. В составных запросах, LIMIT может использоваться только в последнем SELECT. Ограничение применяется ко всему набору данных, а не индивидуальным запросам SELECT в нем. Отметим, что если ключевое слово OFFSET используется в операторе LIMIT, тогда Лимит задается первым числом, а количество записей вторым. Если используется запятая вместо OFFSET, тогда вначале указывается смещение, а затем число записей. Это выглядит противоречивым, но так сделано для максимальной совместимости с основными SQL системами. Составной SELECT, формируемый из двух или более простых SELECT, соединяется вместе в один запрос с помощью операторов UNION, UNION ALL, INTERSECT или EXCEPT. В составном RLECT, все составляющие его SELECT должны определять одинаковый набор столбцов. Может использоваться только один ORDER BY в конце составного SELECT. Операторы UNION и UNION ALL объединяют результаты двух SELECT в одну большую таблицу. Отличие, в том что UNION все записи уникальны, а в UNION ALL они могут повторяться. Оператор INTERSECT берет пересечение результатов двух запросов SELECT. EXCEPT исключает из записей левого SELECT записи правого SELECT. Когда объединяются три или более SELECT, то они группируются слева направо. ------------ Дoбавленo в 12.55: ------------ Дoбавленo в 13.04: Tad писал(а): DELETE FROM <имя таблицы> WHERE rowid = 5iarspider писал(а): так может получиться не совсем то. |
|||
карма: 25 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Tad, никто не гарантирует, что пятая строка будет иметь rowid=5. Более того, после удаления 5й строки, 6я строка не получит rowid=5 (даже если 5я строка имела rowid=5). Про rowid
|
|||
карма: 1 |
|