Шпаргалка по SQL

03.09.15

База данных - Инструменты администратора БД

Не знаете язык запросов SQL, а надо быстро слепить что-нибудь простенькое? Тогда мы идем к вам ))

Шпаргалка по SQL

Предназначена для коллег, плохо знающих язык запросов SQL (как я). Уже давно веду файл, в котором собираю примеры запросов на разные случаи жизни. 
Все запросы создавались и работают в MS SQL. 
 

Соединение нескольких таблиц, выборка конкретных полей

SELECT ОстаткиНоменклатуры.Код, ОстаткиНоменклатуры.Наименование, Таблица.Поле3, Таблица2.Поле4
  FROM [БазаДанных].[dbo].[Таблица1] as Таблица1
  left join  
  [БазаДанных].[dbo].[Таблица2] as Таблица2
  on Таблица1.Поле1 = Таблица2.Поле3
 

Показать 1000 записей, где длина строки, склеенной из нескольких полей, больше 36 символов

SELECT TOP 1000 [Фамилия] + [Имя] + [Отчество] as FIO,len([Фамилия] + [Имя] + [Отчество]) as LENGHT,*
  FROM [БазаДанных].[dbo].[Таблица]
  where LEN([Фамилия] + [Имя] + [Отчество]) > 36
 

Найти максимальную длину строки, которая будет состоять из нескольких столбцов

SELECT MAX(LEN([Фамилия] + [Имя] + [Отчество])) FROM [БазаДанных].[dbo].[Таблица]
 

Получить количество записей во всех таблицах базы данных

SELECT
    o.Name,
    i.rows
FROM sysobjects o
INNER JOIN sysindexes i
ON (o.id = i.id)
WHERE o.xtype = 'u'
AND i.indid < 2
ORDER BY o.name
 

Получить размер всех баз на сервере баз данных (сортировка по размеру журнала транзакций)

select 
db_name(dbid) as DataBases, 
sum(size) * 8 / 1024 / 1024 as SizeGB,
sum(case when f.groupid = 0 then 0 else size end) * 8 / 1024 / 1024 as DataSizeGB,
sum(case when f.groupid != 0 then 0 else size end) * 8 / 1024 / 1024 as LogSizeGB
from master.sys.sysaltfiles as f
group by db_name(dbid)
order by LogSizeGB desc

Регламентные операции с базами MS SQL Server 

* реиндексация базы (выбрать базу) *
* блокирует работу с базой, поэтому надо выбирать технологические перерывы
sp_msforeachtable N'DBCC dbreindex("?")'


* дефрагментация индексов
* если сделана реиндексация, то дефрагментация индексов не нужна
* если нельзя делать реиндексацию, то делать хотя бы дефрагментацию
sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'


* обновление статистики SQL Server (для правильного выбора плана запроса 
* выбрать базу!
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'


* очистка процедурного кэша (кэша планов) 
* выбрать базу!
* сразу после обновления статистики
dbcc freeproccache

 

Если есть хотя бы минимальный интерес - продолжу. 

 

Update 09.02.2018: 

Как узнать размер всех таблиц в базе данных:

DECLARE @pagesizeKB int

SELECT @pagesizeKB = low / 1024 FROM master.dbo.spt_values

WHERE number = 1 AND type = 'E'

SELECT

table_name = OBJECT_NAME(o.id),

rows = i1.rowcnt,

reservedKB = (ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0)) * @pagesizeKB,

dataKB = (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0)) * @pagesizeKB,

index_sizeKB = ((ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0))

- (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB,

unusedKB = ((ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0))

- (ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB

FROM sysobjects o

LEFT OUTER JOIN sysindexes i1 ON i1.id = o.id AND i1.indid < 2

LEFT OUTER JOIN sysindexes i2 ON i2.id = o.id AND i2.indid = 255

WHERE OBJECTPROPERTY(o.id, N'IsUserTable') = 1 --same as: o.xtype = 'IsView'

OR (OBJECTPROPERTY(o.id, N'IsView') = 1 AND OBJECTPROPERTY(o.id, N'IsIndexed') = 1)

GROUP BY o.id, i1.rowcnt

ORDER BY 3 DESC

MS SQL Server язык запросов SQL SQL как узнать

См. также

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    24394    75    144    

58

Контроль действий пользователей II

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Контролируйте, кто и что менял при работе в базах 1С: создание, правки, удаление, поиск потерявшихся данных, вычисление злоумышленников. Подсистема содержит 10 точных отчетов, гибкая настройка контроля. Не тормозит работу, не грузит базу 1С. Позволяет контролировать работу пользователей удаленно со смартфона.

14280 руб.

07.07.2023    3508    1    3    

8

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 руб.

14.01.2013    170222    1051    0    

792

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    12577    27    0    

41

Сжатие (уменьшение) картинок в базе 1С и приведение их к одинаковой ширине

Инструменты администратора БД Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

2000 руб.

21.07.2022    8117    5    3    

10

Завершение сеанса неактивных пользователей на сервере

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка позволяет отключить сеанс пользователя 1С при его простое (бездействии).

1000 руб.

30.03.2018    17875    5    5    

6

Инструменты для чистки кэша 1С

Инструменты администратора БД Абонемент ($m)

Публикация содержит набор bat файлов, используемых мной для умной чистки кэша 1С. Основой файлов являются PowerShell скрипты, которые используются для автоматизации чистки кэша, например, удаление кэш файлов старше десяти дней.

1 стартмани

05.06.2023    6677    40    Viki_push    21    

154

Утилита для получения информации о базе данных 1С в формате JSON

Инструменты администратора БД Платформа 1С v8.3 Платные (руб)

Без знания паролей пользователей, напрямую из таблиц базы 1С утилита получает разнообразную информацию. Это отличный инструмент для участия в автоматизации, группового обновления баз данных, а также для обеспечения внутренних регламентов безопасности.  Позволяет быстро получить информацию о наличии пароля, списках прав для пользователя, истории запусков базы, а также о сохранении конфигурации базы данных. 

600 руб.

05.04.2023    1511    1    0    

1
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kraynev-navi 638 03.09.15 14:32 Сейчас в теме
Если есть хотя бы минимальный интерес - продолжу.

Why not?!
2. dgolovanov 03.09.15 15:11 Сейчас в теме
Мне в SQL надо создать временную таблицу с данными из 1С. Как это можно сделать, кроме генерации кода запроса с указанием текстом данных из 1С и выполнения его в SQL? Спасибо.
5. Danila-Master 115 04.09.15 08:16 Сейчас в теме
(2) dgolovanov,
Можно использовать WITH
Пример:
--Создание временной таблицы
WITH TimeTable([Поле1], [Поле2]) AS (SEL ECT [Поле1], [Поле2] FROM [БазаДанных].[dbo].[Таблица])

-- Выборка из временной таблицы
SELECT TT.Поле1, TT.Поле2 FR OM TimeTable AS TT

Как то так.
dgolovanov; +1 Ответить
6. alexandr.blinov 119 04.09.15 12:28 Сейчас в теме
(2) dgolovanov,
данные в 1С могут быть разбросаны по разным таблицам. Получать, фильтровать и сводить их может оказаться нетривиальной задачей. Я бы делал запросом.

(4) Идальго,
на текущий момент данная статья в закладках у 14 человек (плюс исходная шпаргалка, которую я использую). Эти 15 человек, очевидно, ответили на Ваш вопрос отрицательно.
7. dgolovanov 04.09.15 17:03 Сейчас в теме
(6) а если данные хранятся в ТЗ?
3. 3.14159 94 03.09.15 15:35 Сейчас в теме
не увидел DROP DATABASE
i1381215@trbvm.com; ElektronHM; Aleksey.Bochkov; suggestive; fvadim; +5 Ответить
4. Идальго 221 03.09.15 22:03 Сейчас в теме
Не поймите не правильно, но разве какой-нибудь справочник по SQL (даже вот хотя бы for dummies) не будет более удобен и систематизирован чем описание синтаксиса в статьях на ИС?
xzorkiix; tigra378; cleaner_it; +3 Ответить
8. Andrefan 09.09.15 09:37 Сейчас в теме
Плюсую. Я ЗА идею. Буду ждать продолжения
9. ediks 335 09.09.15 15:28 Сейчас в теме
Кому-то удобно пользоваться шпаргалкой, кому-то статьей. Каждому свое.
Сам предпочитаю пользоваться W3Schools.
Yan_Malyakov; Award; +2 Ответить
10. Yers 11.09.15 18:48 Сейчас в теме
Поддерживаю, полезная информация в работе.
11. zekrus 152 20.07.17 13:17 Сейчас в теме
Добрый день!
Тема весьма актуальная.
Я год назад заполнил прямым запросом в 1С координаты GPS клиентов из адресов с maps.yandex.ru...
На собеседовании один раз слышал такой вопрос:
- Приведите примеры оптимизации кода 1С (с анализом в маршрута запроса в SQL).
С уважением
12. zekrus 152 21.07.17 13:50 Сейчас в теме
Оставьте свое сообщение