Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Новое поле в таблице сделать первым

11
26 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Добавляю в созданную при помощи запроса таблицу поле счетчика:

 
Код:
ALTER TABLE rezsort ADD ID_Elem Int IDENTITY(1,1) NOT NULL


новое поле в спискуе становится последним.
Как сделать что бы оно было первое?
СУБД MS SQL
2
26 мая 2008 года
squirL
5.6K / / 13.08.2003
а в доку глянуть? ;)
Цитата:

To add a column at a specific position within a table row, use FIRST or AFTER col_name. The default is to add the column last.


http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

11
26 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: squirL



Смотрел я в доки, куда ж без них то...
Только в доках по MS SQL Serverу такого нету :(
И вообще вопрос, есь ли такое и мелкомягкого сервера?

332
26 мая 2008 года
Valiant
416 / / 27.09.2004
Сознаюсь, сразу полез в МСДН - но там действительно ничего нет про first.
но когда полез в Дюбуа там мгновенно нашёл ;)

но вот только у меня возник вопрос - а нафига???
какая разница каким по счёту у тебя будет это поле???
2
26 мая 2008 года
squirL
5.6K / / 13.08.2003
Цитата: oxotnik333
Смотрел я в доки, куда ж без них то...
Только в доках по MS SQL Serverу такого нету :(
И вообще вопрос, есь ли такое и мелкомягкого сервера?


упсс... вот поэтому лучше писать название СУБД в топике большими буквами :)

[QUOTE=Valiant]
но вот только у меня возник вопрос - а нафига???
какая разница каким по счёту у тебя будет это поле???[/QUOTE]
порядок столбцов имеет значение, например, при использовании составных индексов.
например: имеем индекс ( A, B)
при запросах
WHERE A = 'xyz'
WHERE A = 'xyz' and B='abc'
индекс использоваться будет, а вот при запросе
WHERE B='abc'
нет.

332
26 мая 2008 года
Valiant
416 / / 27.09.2004
Цитата: squirL

WHERE A = 'xyz'
WHERE A = 'xyz' and B='abc'
индекс использоваться будет, а вот при запросе
WHERE B='abc'
нет.



Возможно... спорить не буду... с составными индексами не экспериментировал
спасибо за наводку сейчас займусь

8.2K
26 мая 2008 года
Ora-cool
211 / / 20.09.2007
Цитата: squirL
упсс... вот поэтому лучше писать название СУБД в топике большими буквами :)


порядок столбцов имеет значение, например, при использовании составных индексов.
например: имеем индекс ( A, B)
при запросах
WHERE A = 'xyz'
WHERE A = 'xyz' and B='abc'
индекс использоваться будет, а вот при запросе
WHERE B='abc'
нет.



Ну с индексами вопросов нет, а вот практический смысл порядка колонки в таблице все же неясен. Разве что, чтобы select * ... показывал его первым ))

2
26 мая 2008 года
squirL
5.6K / / 13.08.2003
ну навскидку я могу придумать пару практических ситуаций... но лучше, пусть нам автор разьяснит :)
11
26 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: squirL
ну навскидку я могу придумать пару практических ситуаций... но лучше, пусть нам автор разьяснит :)



Есть некий клиент, в который уже "вшиты" запросы типа SELECT *, а затем по этим запросам он работает с данными, и берет столбец не по имени, а по порядковому индексу, т.е. в field[0] у меня все время должно быть ID (автоинкриментное)

[QUOTE=Valiant]
но когда полез в Дюбуа там мгновенно нашёл
[/QUOTE]

Это кто такой? помоги ссцылой

ЗЫ: а тип СУБД я сразу указал и большими буквами, правда снизу

332
27 мая 2008 года
Valiant
416 / / 27.09.2004
Цитата: oxotnik333

Это кто такой? помоги ссцылой



года 1.5 назад купил книгу по MySQL4
Шикарное описание самой БД и языка SQL
На мой взгляд лучшая книга!

автор: Поль Дюбуа
издательсво: ИД "Вильямс"
название: MySQL Полное и исчерпывающее руководство по применению и администрированию баз данных MySQL4, а так же программированию приложений (Второе издание)

Вот здесь можешь посмотреть и скачать книги по мускулю.
конкретно эта книга здесь

8.2K
27 мая 2008 года
Ora-cool
211 / / 20.09.2007
To Valiant: ну у автора все же MS SQL указан, а не MySQL.

To oxotnik333: К сожалению в MS SQL не силен. Ну если даже и нет такой прямой возможности, всегда есть возможность пересоздания таблицы с правильным порядком следования столбцов (и перезаливкой данных, если необходимо).

P.S. А вообще, за такой дизайн клиентской части руки бы поотрывать))
332
27 мая 2008 года
Valiant
416 / / 27.09.2004
Итак обо всём по порядку:

2Ora-cool: ну он же просил разъяснить кто такой Дюбуа и с чем его едят.

Собственно кислое:
поняв что автору это действие требуется выполнить всего один раз, а не выполнять его систематически, предлагаю поставить SQL Server Management Studio (распространяется бесплатно) и там уже поработать со структурой таблицы, заодно разобраться с трейсами (как делает перестановку столбцов эта мулина).

Согласен не очень элегантно, но зато очень действенно все мои инсинуации по перестановке столбца "вручную" окончились полным крахом (странным образом рухнула БД =) она была тренировочная) в причинах стараюсь разобраться, о результатах обязательно напишу.
11
27 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Собственно весь вопрос был как "одним махом" сделать сабж... поискал в мануале - не нашел, решил здесь спросить. Оказалось что это не возможно сделать в одну строку.
В результате сначала создаю таблицу в нужном формате, а затем туда данные сливаю.
1
27 мая 2008 года
kot_
7.3K / / 20.01.2000
Цитата: oxotnik333
Собственно весь вопрос был как "одним махом" сделать сабж... поискал в мануале - не нашел, решил здесь спросить. Оказалось что это не возможно сделать в одну строку.
В результате сначала создаю таблицу в нужном формате, а затем туда данные сливаю.


Если пользоваться только T-SQL то сделать можно только через пересоздание таблицы. И это правильно.
Потому что, порядок полей, так же как и строк определяется ЗАПРОСОМ.
Если вам нужен определенный порядок полей - создавайте определенный запрос - это может быть например View и работайте с ним. Не работайте напрямую с таблицами из приложения. Никогда.

Цитата:

порядок столбцов имеет значение, например, при использовании составных индексов.
например: имеем индекс ( A, B)


Данное утверверждение верно но никаго отношения к порядку столбцов в таблице не имеет :) и говорит о том, что автор его просто немножко перепутал что-то.

1
27 мая 2008 года
kot_
7.3K / / 20.01.2000
Я принципиально не рассматриваю прямую манипуляцию с системными таблицами - не потому что я не знаю как это делать, а потому чо считаю подобную методику признаком величайшей криворукости - или большого отчаянья
2
28 мая 2008 года
squirL
5.6K / / 13.08.2003
Цитата: kot_
и говорит о том, что автор его просто немножко перепутал что-то.


что-то я не понял. как это "оно верно" но "к порядку столбцов отношения не имеет"? а?

332
28 мая 2008 года
Valiant
416 / / 27.09.2004
Цитата: kot_
Не работайте напрямую с таблицами из приложения. Никогда.



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

11
28 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Valiant

А вот если вы имеете ввиду данные... здесь буду вынужден не согласиться.
Кэширование - не панацея



Имелось ввиду работа с таблицами (данными в БД) только средствами SQL

1
28 мая 2008 года
kot_
7.3K / / 20.01.2000
Цитата: squirL
что-то я не понял. как это "оно верно" но "к порядку столбцов отношения не имеет"? а?


Твой пример верен в том что, с приведенными параметрами индекс использоваться не будет.
Но какое отношение к порядку столбцов в таблице? Т.е. если составной индекс будет наложен на поля следующие не по порядку - и при этом условие выборки будет ему соответсвовать - ты хочешь сказать что индекс все равно не задействуеться? ИМХО это не верно. Сегодня, будет время, специально проверю - как будет строиться план запроса в зависимости от расположения полей в таблице . Я утверждаю что в обеих случаях - в независимости от физической последовательности полей в таблице - индекс будет использоваться.
Или я не прав?

1
28 мая 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Valiant
Что Вы имеете ввиду структуру или данные???
Если структуру, то я с Вами полностью согласен.
А вот если вы имеете ввиду данные... здесь буду вынужден не согласиться.
Кэширование - не панацея


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

332
28 мая 2008 года
Valiant
416 / / 27.09.2004
Цитата: kot_
Тем более где вы вычитали там - "всегда используйте кеширование - это панацея"? Вам дать ссылку на определение термина "кеширование"?



Термин "кеширование" мне и без ваших ссылок ясен.
Потому я и переспросил с чем вы хотите работать?
Ваша фраза "Не работайте напрямую с таблицами из приложения. Никогда."
можно было расценить как "РАБОТАЙТЕ С КЭШЕМ".

Если вы ещё раз внимательно перечитаете и свой и мой пост вам станет понятно всё.

Нет, вы не подумайте, я не настаиваю может просто я что то не так понял =)

332
28 мая 2008 года
Valiant
416 / / 27.09.2004
Цитата: oxotnik333
Имелось ввиду работа с таблицами (данными в БД) только средствами SQL



Можно идиотский вопрос?
А как ещё можно?

1
28 мая 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Valiant

Ваша фраза "Не работайте напрямую с таблицами из приложения. Никогда."
можно было расценить как "РАБОТАЙТЕ С КЭШЕМ".

Если вы ещё раз внимательно перечитаете и свой и мой пост вам станет понятно всё.


Мда. Как говориться "но коммент".
Может все же дать ссылку? :) и заодно на литературу для начинающих? по БД?
Или опыт работы с базами данных ограничен только MySQL? Тогда в принципе непонимание отчасти простительно, в связи с некоторыми особенностями данного сервера.

Цитата:

Можно идиотский вопрос?
А как ещё можно?


можно через СОМ(OLE)-объекты, можно через низкоуровневые АПИ сервера.

332
28 мая 2008 года
Valiant
416 / / 27.09.2004
Цитата: kot_
Мда. Как говориться "но коммент".
Может все же дать ссылку? :) и заодно на литературу для начинающих? по БД?
Или опыт работы с базами данных ограничен только MySQL? Тогда в принципе непонимание отчасти простительно, в связи с некоторыми особенностями данного сервера.


Нет спасибо ссылки вы себе оставьте =) У меня и так их предостаточно.
Отчасти и вы правы опыт работы с БД в основе своей это MySQL, MSSQL это было пожелание босса.

Цитата: kot_

можно через СОМ(OLE)-объекты, можно через низкоуровневые АПИ сервера.


низкоуровневые апи :) ну ну и с каким это вы сервером собрались работать?

11
28 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Valiant
Можно идиотский вопрос?
А как ещё можно?



В билдере и дельфи (и в других ИДЕ возможно тоже) есть компонент TTable реализующий прямой доступ к таблице. При поможи методов типа Insert(), Edit() и тому подобных позволяет править таблицы "не отходя от кассы".
ИМХО это большое зло, доставшееся от файловых БД.

1
28 мая 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Valiant


низкоуровневые апи :) ну ну и с каким это вы сервером собрались работать?


вопроса не понял.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог