Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#736: 2011-10-01 16:18:45 ЛС | профиль | цитата
То есть правильно будет, если копирую базу в память, начинаю искать именно по памяти, а при внесении изменений, открываю БД с диска и вношу параллельно изменения в файл и дублирую команды в память?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#737: 2011-10-01 17:47:03 ЛС | профиль | цитата
Ну да. Можно и так. Можно наоборот.
Вопрос в другом : А нужно ли это ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Neo
Ответов: 704
Рейтинг: 7
#738: 2011-10-01 20:49:50 ЛС | профиль | цитата
Tad писал(а):
А нужно ли это

Вот это не знаю. Отлаживаю программу, смотрю как будет лучше. Пробую - одним словом. Хотя сомневаюсь в том, что извращения с памятью в моем случае дадут особый прирост. Скорее для попутного опыта.
карма: 0

0
Ответов: 1528
Рейтинг: 57
#739: 2011-10-07 08:41:25 ЛС | профиль | цитата
какой нужен запрос на удаление строки в базе с одной колонкой ?
следом такойже вопрос на замену значения строки по индексу ?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#740: 2011-10-07 08:52:52 ЛС | профиль | цитата
1.SELECT rowid FROM <имя таблицы> WHERE <колонка> = <значение>
DELETE FROM <имя таблицы> WHERE rowid=<результат из строки выше>
или, если значение в колонке не повторяются,
DELETE FROM <имя таблицы> WHERE <колонка> = <значение>

2. INSERT OR REPLACE INTO <имя таблицы> .....
или
UPDATE <имя таблицы> SET <колонка> = <значение> WHERE <условие>

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1528
Рейтинг: 57
#741: 2011-10-07 09:26:35 ЛС | профиль | цитата
может будут повторяться, а по индексу нельзя?
DELETE FROM <имя таблицы> WHERE <колонка> = <значение>


что указывается в значении ?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#742: 2011-10-07 09:43:29 ЛС | профиль | цитата
Например: для колонки NAME - ЗНАЧЕНИЕ может быть "Петя" или "Вася"
hitman249 писал(а):
а по индексу нельзя?
сам же писал
hitman249 писал(а):
удаление строки в базе с одной колонкой ?
где индекс ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1528
Рейтинг: 57
#743: 2011-10-07 10:04:21 ЛС | профиль | цитата
Tad, он сам не считает ?
нельзя обратиться с запросом чтобы удалить например 5 строчку ?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#744: 2011-10-07 10:25:25 ЛС | профиль | цитата
hitman249 писал(а):
удалить например 5 строчку
DELETE FROM <имя таблицы> WHERE rowid = 5
Вместо слова "rowid" можно также применять слова "oid" или "_rowid_".
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#745: 2011-10-07 11:40:49 ЛС | профиль | цитата
Tad, так может получиться не совсем то. Как-то так надо:
SELECT rowid FROM <имя таблицы> LIMIT 1 OFFSET 5
DELETE FROM <имя таблицы> WHERE rowid=<результат из строки выше>
карма: 1

0
Ответов: 1528
Рейтинг: 57
#746: 2011-10-07 12:30:12 ЛС | профиль | цитата
iarspider, эх, ещёбы вы рассказали что делает ?...
LIMIT 1
OFFSET 5
карма: 0

0
Ответов: 3889
Рейтинг: 362
#747: 2011-10-07 12:32:50 ЛС | профиль | цитата
hitman249 писал(а):
iarspider, эх, ещёбы вы рассказали что делает ?...
LIMIT 1
OFFSET 5

Начиная с (5+1)(то есть с 6, если не ошибаюсь, там относительный отсчёт) обрабатывать только 1
карма: 1

0
Ответов: 1528
Рейтинг: 57
#748: 2011-10-07 12:48:37 ЛС | профиль | цитата
1nd1g0,
там ?
LIMIT

или там ?
OFFSET

или там и там ?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#749: 2011-10-07 13:04:09 ЛС | профиль | цитата
hitman249 писал(а):
iarspider, эх, ещёбы вы рассказали что делает ?...
WIKI-> Справка по SQLITE -> Синтаксис SQLite

LIMIT - сколько строк
OFFSET - отступив от начала таблицы
------------ Дoбавленo в 12.54:
Во избежание дальнейших вопросов.

sql-statement ::=
SELECT [ALL | DISTINCT] result [FROM table-list]
[WHERE expr]
[GROUP BY expr-list]
[HAVING expr]
[compound-op select]*
[ORDER BY sort-expr-list]
[LIMIT integer [( OFFSET | , ) integer]]



result ::= result-column [, result-column]*

result-column ::= * | table-name . * | expr [ [AS] string ]

table-list ::= table [join-op table join-args]*

table ::= table-name [AS alias] | ( select ) [AS alias]

join-op ::= , | [NATURAL] [LEFT | RIGHT | FULL] [OUTER | INNER | CROSS] JOIN

join-args ::= [ON expr] [USING ( id-list )]

sort-expr-list ::= expr [sort-order] [, expr [sort-order]]*

sort-order ::= [ COLLATE collation-name ] [ ASC | DESC ]

compound_op ::= UNION | UNION ALL | INTERSECT | EXCEPT
Команда 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 = 5
iarspider писал(а):
так может получиться не совсем то.
почему не то, если человек указал: удалить 5-ю строку
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#750: 2011-10-07 15:10:14 ЛС | профиль | цитата
Tad, никто не гарантирует, что пятая строка будет иметь rowid=5. Более того, после удаления 5й строки, 6я строка не получит rowid=5 (даже если 5я строка имела rowid=5). Про rowid
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)