Forums.Avtograd.Ru: Вопросы по SQL - Forums.Avtograd.Ru

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Вопросы по SQL

#1 Пользователь офлайн   Гаруспик

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 286
  • Регистрация: 28 Ноябрь 07

Отправлено 01 Декабрь 2007 - 04:46

SQL (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный информационно-логический язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

Фундаментальный язык и мощное средство для работы с реляционными БД.
Задаем вопросы. Обсуждаем.

Transgrediaris cadaver proprium!
0


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#2 Пользователь офлайн   XoTT@Bb)4

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 86
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 17:30

ваще пох
Ремонт компьютеров и оргтехники, заправка картриджей.
ООО "Эксперт - Сервис", тел 35-83-81, Приморский 31.
0

#3 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 18:41

Просмотр сообщенияXoTT@Bb)4 (6.12.2007, 18:30):

предпочитаю юзать SQL в так сказать "недобрых" делах!.. а именно SQL-injection..))

нормальные люди используют XП с параметрами которые возвращают результат, а не запросы с постановкой значений в текст запроса. так что твои инекции пройдут лесом
0

#4 Пользователь офлайн   XoTT@Bb)4

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 86
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 20:17

пох...
Ремонт компьютеров и оргтехники, заправка картриджей.
ООО "Эксперт - Сервис", тел 35-83-81, Приморский 31.
0

#5 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Декабрь 2007 - 11:09

Просмотр сообщенияXoTT@Bb)4 (6.12.2007, 21:17):

между прочим в инете 84% сайтов подвержено именно инъекциям!...

да это сайты написанные бестолковыми придурями, которые освоили чутчуть php и select * from table
или сайты это про "моего катенка" которые и взламывать то незачем. До серьезной БД ты своими инъекциями не доберешься.
Все от того что работу с БД начинают писать люди ничего в ней не понимающие. Мне приходится иногда помогать нашим веберам по пободу oracle, так там такое написанно что волосы дыбом встают.

PS кто считал эти 84%? цифра еще какая, типа точная неи..ться, как коворится ржунимагу
0

#6 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Декабрь 2007 - 15:08

гг
я бы отнес XoTT@Bb)4 к скрипт-кидис, видимо все что он смог, насмотрелся хак-видео и ощутил себя хакером!
XoTT@Bb)4 а знаешь ли ты кто такой хакер?
0

#7 Пользователь офлайн   DJ-Andrey-sXe

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Декабрь 2007 - 14:52

Наиполезнейший ресурс
http://sql.ru/
0

#8 Пользователь офлайн   tolst

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 758
  • Регистрация: 01 Ноябрь 07

Отправлено 21 Декабрь 2007 - 01:49

Зря вы так, на моих глазах ломали крупные сайты, буржуйские хостинг проекты для выуживания базы акков...
смысл остается все тем же, человеческая не внимательность, и она всегда присутствует!
можно юзать классы которые подставляют сами данные в SQL, но некоторые предпочитают отлаживать входящие данные прям в SQL строке, к примеру: SELECT x FROM y WHERE `id` = intval($_GET['id']) итд...
другие же надеятся на magic_quetes
третии вообще не знают про SQL Injection ничего...
к примеру, посмотрите на securitylab.ru и появлениях сообщений об опасных уязвимостях в известных скриптах.
простой пример: IPB, автор Матт, человек который кодит столько же лет сколько я живу, и один хрен то и дело находят SQL inj в его коде... почему? элементарно - этого хотят массы злоумышлиников...

Barrabas, по поводу бестолковых придурней... не думаю что ты опытнее скажем этого же Матта, и ты хочешь сказать что твои скрипты не реально взломать? Человеческий фактор всегда есть, если ты думаешь что не реально, ты просто не знаешь как!
профессиональная разработка веб сайтов - neting.ru
0

#9 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 21 Январь 2008 - 12:01

Просмотр сообщенияtolst (21.12.2007, 2:49):

Barrabas, по поводу бестолковых придурней... не думаю что ты опытнее скажем этого же Матта, и ты хочешь сказать что твои скрипты не реально взломать? Человеческий фактор всегда есть, если ты думаешь что не реально, ты просто не знаешь как!

ну и как инъекнуть если данные получаем из пакета с процедурой такого типа?
   procedure SelectMyTable
	 (vID		in  number,  
	  vResult	out Sys_RefCursor) 
   as
   begin
	  open vResult for 
		 select F1, F2 
		   from MYTABLE
		  where ID = vID;
   end;

А за использование динамического sql типа
procedure SelectMyTable
	 (vID		in  number,  
	  vResult	out Sys_RefCursor) 
   as
   begin
	  open vResult for 
		 'select F1, F2 
		   from MYTABLE
		  where ID =' || to_char(vID);
   end;


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

#10 Пользователь офлайн   tolst

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 758
  • Регистрация: 01 Ноябрь 07

Отправлено 31 Январь 2008 - 22:20

1) я имел ввиду веб разработку
2) по поводу дыр: я говорил образно. но все же, человеческий фактор есть, и будет всегда.
профессиональная разработка веб сайтов - neting.ru
0

#11 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 31 Январь 2008 - 22:57

Просмотр сообщенияtolst (31.1.2008, 23:20):

1) я имел ввиду веб разработку
2) по поводу дыр: я говорил образно. но все же, человеческий фактор есть, и будет всегда.

1. а какая разница, что на пхп, что на asp.net, вызываешь ХП (которые даже в мускуле есть уже) и все
2. фактор есть, поэтому я и говорю про поделки ломающиеся подстановкой union
0

#12 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 01 Февраль 2008 - 13:02

Неужели в 2008-м году еще кто-то до сих пор использует напрямую SQL у себя в скриптах???;)
ORM, друзья мои, ORM.
0

#13 Пользователь офлайн   AlterEgo

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 138
  • Регистрация: 01 Ноябрь 07

Отправлено 01 Февраль 2008 - 17:35

Просмотр сообщенияcoldseed (1.2.2008, 13:02):

Неужели в 2008-м году еще кто-то до сих пор использует напрямую SQL у себя в скриптах??? ;)
ORM, друзья мои, ORM.


сложные выборки тоже предлагаешь через ОРМ делать? <_<
0

#14 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 01 Февраль 2008 - 18:06

Просмотр сообщенияcoldseed (1.2.2008, 14:02):

Неужели в 2008-м году еще кто-то до сих пор использует напрямую SQL у себя в скриптах???;)
ORM, друзья мои, ORM.

ORM на больших объемах не так эффективен как обработка на сервере.
Для небольших выборок самое то.

Цитата

сложные выборки тоже предлагаешь через ОРМ делать?

можно вьюхи заюзать под это дело и в объектах будет уже результирующее множество
0

#15 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 01 Февраль 2008 - 18:46

На самом деле абсолютное большинства сложных выборок тоже через ORM делается. Все зависит от выбранного ORM-средства.
Хорошее ORM-средство отличает то, что оно в итоге производит очень и очень оптимальный SQL (который кстати, зачастую можно "подправить" и ручками). Также можно использовать хранимые процедуры, которые из кода вызываются, как метод объекта. Очень удобно.
Плюс есть еще такой неочевидный, но очень немаловажный фактор - иногда лучше _немного_ пожертвовать производительностью, чтобы выиграть _существенно_ в плане простоты создания и поддержки продукта.
0

#16 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 01 Февраль 2008 - 18:47

Дополнение для Barrabas'а
ORM не является заменой SQL или обработок на БД-сервере, это слой абстракции, позволяющий намного упростить работу с базой из кода.
0

#17 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 02 Февраль 2008 - 00:09

Просмотр сообщенияcoldseed (1.2.2008, 19:47):

Дополнение для Barrabas'а
ORM не является заменой SQL или обработок на БД-сервере, это слой абстракции, позволяющий намного упростить работу с базой из кода.

спасибо, я знаю что это такое :)
я считаю в серьезном проекте нужен разработчик как серверной так и клиентской части. Оптимальный SQL код = план выполнение запроса oracle 10g на полностью проанализированных таблицах не всегда строит (тут много факторов влияет) приходится хинты руками прописывать или усложнать конструкцию, как например недавно заменив not in на minus а потом уже выборка по резулитату минуса из таблицы дала такой прирост, скрип на удаление дубликатов транзакций "по учебнику" с not in тупо повесил сервак на 15 минут после чего был вырублен, а с минусом хоть и выглядел в 2 раза больше выполнил свое дело за 14 сек. Такая же байда с огромным и сложным запросом в котором предусмотренно куча фильтров но не все они (как правило 1-2) работают одновременно. Пришлось переписать все на объектах (т.к. динамический sql решино было не использовать - не тот случай), т.е. вместо одного большого селекта, разбил его на отдельные фильтры и заполнял ими массив записей, каждый следующий фильтр уже выбирал только из передыдущего, это дало возможность использовать для каждого фильтра свой индекс и в итоге подставить в селект где данные обвешиваются справочными значениями только данные прошедшие отбор, но кода добавилось на несколько страниц :). зато пользователь не ждет нервно по 10-15 секунд чтоб получить инфу удовлетворяющую фильтрам, все выдается за 2 секунды, а операция эта частая, для одного отдела основная, тут нельзя жартвовать скоростью получения данных.

ORM это хорошо для работы с готовыми данными,

ЗЫ жалко LINQ не пашет с ораклой, иногда так хочется просто всять и выбрать нужную записть не создавая команду с параметрами к процедуре пакета и читая ридер или out параметры помещать их в класс чтоб потом работать, а для sql сервера в .NET достаточно просто указать имя таблицы поля и условие отбора :(
0

#18 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 03 Февраль 2008 - 21:49

Просмотр сообщенияBarrabas (2.2.2008, 0:09):

спасибо, я знаю что это такое :)
я считаю в серьезном проекте нужен разработчик как серверной так и клиентской части. Оптимальный SQL код = план выполнение запроса oracle 10g на полностью проанализированных таблицах не всегда строит (тут много факторов влияет) приходится хинты руками прописывать или усложнать конструкцию, как например недавно заменив not in на minus а потом уже выборка по резулитату минуса из таблицы дала такой прирост, скрип на удаление дубликатов транзакций "по учебнику" с not in тупо повесил сервак на 15 минут после чего был вырублен, а с минусом хоть и выглядел в 2 раза больше выполнил свое дело за 14 сек. Такая же байда с огромным и сложным запросом в котором предусмотренно куча фильтров но не все они (как правило 1-2) работают одновременно. Пришлось переписать все на объектах (т.к. динамический sql решино было не использовать - не тот случай), т.е. вместо одного большого селекта, разбил его на отдельные фильтры и заполнял ими массив записей, каждый следующий фильтр уже выбирал только из передыдущего, это дало возможность использовать для каждого фильтра свой индекс и в итоге подставить в селект где данные обвешиваются справочными значениями только данные прошедшие отбор, но кода добавилось на несколько страниц :). зато пользователь не ждет нервно по 10-15 секунд чтоб получить инфу удовлетворяющую фильтрам, все выдается за 2 секунды, а операция эта частая, для одного отдела основная, тут нельзя жартвовать скоростью получения данных.

ORM это хорошо для работы с готовыми данными,

ЗЫ жалко LINQ не пашет с ораклой, иногда так хочется просто всять и выбрать нужную записть не создавая команду с параметрами к процедуре пакета и читая ридер или out параметры помещать их в класс чтоб потом работать, а для sql сервера в .NET достаточно просто указать имя таблицы поля и условие отбора :(



Barrabas,
Ну то, что знаешь, что это такое, это клево) Но кроме тебя есть много других, кто не в курсе)

ORM хорошо для работы с любыми данными и даже с довольно сложными связками.
ORM'ы есть разные. Есть LINQ to SQL - отличная и очень оптимальная ORM, но работает только с MS SQL Server. Собственно и создана для быстрой разработки MSSQL (включая Express).
Есть очень мощные ORM, на которые тоже стоит обратить внимание.
Например, насчет LINQ и Oracle. Тут не нужно думать, что LINQ to SQL - единственное, что есть. LINQ может работать с любым классом, реализующим интерфейс IQueriable. Таким образом, можно сделать LINQ to "что-захочешь".
Уже есть (от сторонних производителей) LINQ to NHibernate (NHibernate - очень навороченная ORM, кстати), LINQ to Active Directory, LINQ to LDAP и другие.

Но самое главное, на что стоит обратить внимание при работе с разными субд в .NET - это на будущее! А именно - ADO.NET Data Services codename "Astoria". Основной кусочек этого - Entity Framework - вот где самая конфетка.
Entity Framework позволяет описать модель данных НЕ в реляционном виде, а в более удобном с точки зрения бизнес-объектов и терминологии (т.е. по сути создать произвольную модель домена).
И в итоге получаются 3 полностью контролируемые "слоя":
1. Relational Model (реляционная модель, как есть, нормализованная, все ок)
2. Entities Model (бизнес-модель, в том виде, в каком удобно с ней работать)
3. Mapping Model (модель соответствия бизнес-модели и реляционной модели)

Все контролируемо, оптимизируемо, мультиСУБДшно, переопределяемо и LINQ-аемо.

Разумеется, есть LINQ to Entites, что и является, наверное самой многофункциональной ORM для .NET вкупе с ADO.NET EF.
0

#19 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 22 Февраль 2008 - 09:18

Кстати господа насущный вопрос - ни кто не в курсе во сколько килобаксов обходится российскому потребителю лицензионный MS SQL со всеми необходимыми надстройками и приблудами... скажем так на 5 пользователей? Есть какая нибудь контора в тлт, купившая его?
Если женщина не права, нужно извиниться и замолчать.
0

#20 Пользователь офлайн   -=MG=-

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 87
  • Регистрация: 30 Декабрь 07

Отправлено 24 Февраль 2008 - 02:31

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

Во многом вопрос даже не в лицензии. Фактически продукт уровня MS SQL нужен для очень
крупных проэктов. На малом объёме данных и небольшом потоке запросов к ним,
просто нет смысла применять такие сервера БД. Бесплатные версии вполне реализуют
все необходимые возможности.

К тому же всё больше людей выбирают линукс для серверов, а в составе многих
линуксовых систем идёт PostgreSQL, который вполне достойно реализует стандарт SQL.
Под винду можно отметить FireBird. На нём реализовано много программ написанных в Тольятти.
реальность субъективна
0

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей