Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL запрос  [new]
Vilkas
Member

Откуда:
Сообщений: 3
Здравствуйте, есть таблицы; persons, status, dept, posts. Внешние ключи status, dept, posts находятся в persons. Требуется вывести ФИО сотрудника(persons), наименование статуса(status), наименование отдела(dept), наименование должности(posts), даты приема и увольнения. Пока получилось это:

SELECT CONCAT(last_name,' ', SUBSTRING(first_name,1,1), '.', SUBSTRING(second_name,1,1), '.')
AS 'fio',status.name AS 'status', dept.name as dept, posts.name AS 'post', date_employ, date_uneploy
FROM status,dept
LEFT JOIN persons ON persons.id_dept = dept.id
LEFT JOIN posts ON persons.id_post = posts.id
WHERE status.id = persons.id_status

Подскажите, насколько оправдано использование WHERE для связи таблиц и можно как нибудь в данном случае
использовать JION вместо WHERE.

К сообщению приложен файл. Размер - 10Kb
14 сен 17, 12:33    [20795246]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3447
1. Оправдано
2. Можно
14 сен 17, 12:36    [20795262]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vilkas,

если коротко для LEFT JOIN WHERE не эквивалент ON
14 сен 17, 12:38    [20795269]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
Vilkas
Подскажите, насколько оправдано использование WHERE для связи таблиц и можно как нибудь в данном случае
использовать JION вместо WHERE.
- where выполняется после join
- join <table> on p11 = p12 and p21 = p22
14 сен 17, 13:06    [20795410]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Дедушка,

автор
- where выполняется после join
окак
14 сен 17, 13:09    [20795428]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46952
TaPaK
Дедушка,

автор
- where выполняется после join
окак
А чо не так?
Ну, если добавить слева от "выполняется" слово "логически", конечно.
14 сен 17, 13:50    [20795731]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46952
Vilkas,

однако, крайне нежелательно в одном FROM использовать и запятую и JOIN!
Об этом можно почитать у Microsoft в документации.
Проще говоря, выбросьте запятую из FROMа куда-нибудь подальше. И никогда её там не используйте.
14 сен 17, 13:52    [20795756]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
перефразируя известную цитату - "а оптимизатор - предмет темный.., и исследованию не подлежит"
он конечно может подфильтровать табличку до соединения, но именно, что может, а может и нет.
14 сен 17, 13:53    [20795761]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46952
FROM persons P
LEFT JOIN status S ON P.id_status=s.id
LEFT JOIN dept D ON P.id_dept=D.id
LEFT JOIN posts PS ON P.id_post=PS.id
14 сен 17, 13:57    [20795786]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
архивариус
Member

Откуда:
Сообщений: 149
TaPaK
Дедушка,

автор
- where выполняется после join
окак

вроде как правильно
14 сен 17, 15:24    [20796168]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46952
Можно и тут почитать: https://msdn.microsoft.com/ru-ru/library/ms189499(v=sql.100).aspx
14 сен 17, 15:36    [20796212]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
архивариус
TaPaK
Дедушка,

пропущено...
окак

вроде как правильно


вы скучны. Например так
CREATE TABLE Drops (id int PRIMARY KEY)
INSERT INTO Drops (Id) SELECT ROW_NUMBER() OVER (ORDER BY 1/0) FROM master..spt_Values

SELECT 
*
FROM 
	Drops	a
INNER JOIN
	Drops b
ON
	a.Id = b.Id
WHERE 
	b.Id > 2
DROP TABLE Drops
14 сен 17, 15:38    [20796219]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос  [new]
Виталий 1
Guest
Помогите вот с этим какие будут правильные ответы:
1 Необходимо написать Transact-SQL запрос к таблице, который будет вызывать функцию, возвращающую табличный тип данных на каждую строку исходной таблицы. Какие операторы или функции языка Transact-SQL должны быть использованы?

UNION.
FOR XML.
INNER JOIN.
Trigger.
CAST.
OUTER JOIN.
CROSS APPLY.
FORMAT.

2 Компания имеет розничные магазины в нескольких крупных городах страны. Необходимо получить список имен заказчиков которые живут в городах где нет магазинов компании отсортированных по названию города, а так же названия этих городов. Какой из запросов возвращает требуемую информацию?
SELECT CustomerName, CustomerCity FROM Customers WHERE CustomerCrty NOT EXISTS (SELECT StoreCity FROM Stores) ORDER BY Customer City
SELECT CustomerName, CustomerCity FROM Customers WHERE CustomerCrty <>ALL (SELECT StoreCity FROM Stores) ORDER BY StoreCity
SELECT CustomerName, CustomerCity FROM Customers WHERE CustomerCity < > ANY (SELECT StoreCity FROM Stores) ORDER BY CustomerCity
SELECT CustomerName, CustomerCity FROM Customers WHERE CustomerCity NOT IN (SELECT StoreCity FROM Stores) ORDER BY StoreCity

3 Вам необходимо изменить аккаунт, от которого стартует SQL Server сервис. Каким инструментарием Вы будете пользоваться:
Windows Services tool
Оператор ALTER LOGIN
SQL Server Configuration Manager toot
sc.exe config "MSSQLSERVER" obj= "DOMAIN\User” password = ’’password’’

4 В целях обеспечения принципа наименьших привилегий и упрощения последующего администрирования экземпляра SQL Server Вам необходимо выбрать аккаунт, от которого будет стартовать SQL Server сервис. Выберите вариант:
Domain user account.
Managed service account.
Local System account.
Network Service account.

5 вы мигрируете базу данных на новый SQL сервер. Вы пытаетесь добавить [Corpnet\User1] логин в базу данных. Тем не менее Вы получаете следующее сообщение об ошибке: "User already exists in current database." Вам необходимо сконфигурировать [Corpnet\User1] так, чтобы он получил доступ к базе данных с теми же полномочиями, какие были у него на исходном сервере. Выберите вариант:
DROP USER [User1]; CREATE USER [Corpnet\User1] FOR LOGIN [Corpnet\User1]; ALTER ROLE [db_owner] ADD MEMBER [Corpnet\User 1];
ALTER SERVER ROLE [sysadmin] ADD MEMBER [Corpnet\User1];
ALTER USER [Corpnet\User1] WITH LOGIN [Corpnet\User1];
ALTER ROLE [db_owner] ADD MEMBER [Corpnet\User1];

6 Вы администрируете SQL Server. Сервис MSSQLSERVER стартует от доменного аккаунта DOMAIN\SQLService. Вы планируете использовать Instant File Initialization для уменьшения задержек операций автоувеличения размера файлов баз данных. Что Вы должны сделать? Выберите все, что подходит:
Рестарт SQL Server Agent Service.
Отключить режим snapshot isolation.
Рестарт the SQL Server Service.
Назначить the DO MAI N\SQLService аккаунту право Perform Volume Maintenance Tasks в локальных политиках безопасности операционной системы.
Добавить DOMAI N\SQLService аккаунт в фиксированную серверную роль Server Operators.
Включить режим snapshot isolation.

7 Вы администрируете два SQL Server сервера. Сервера находятся в различных не доверительных доменах. Вы планируете сконфигурировать режим зеркалирования баз данных (database mirroring). Вам необходимо сконфигурировать конечные точки (database mirroring endpoints) на обоих серверах. Что Вы должны сделать?
Сконфигурировать SQL Server сервис использовать для старта Network Service аккаунт.
Использовать сертификат сервера.
Сконфигурировать SQL Server сервис использовать для старта Managed service аккаунт.
Сконфигурировать SQL Server сервис использовать для старта Local System аккаунт.

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


9 Вы администратор экземпляра Microsoft SQL Server. Вы должны проверить физическую целостность базы данных. Что вы должны делать?
Выполнить sp_helpfile.
Выполнить DBCC CHECKDB.
Проверить в базе MSDB таблицу suspect_pages.
Восстановить базу данных из последней полной резервной копии. Применить любую дифференциальную копию и резервные копии журнала транзакций.

10 Вы администратор SQL Server с базы данных с именем DB1. Последнее дифференциальное резервное копирование выполнено в 15:30, полная резервная копия была выполнена в 13:30, и моментальные снимки базы данных были созданы в 16:30 и в 17:00. Резервные копии и моментальные снимки базы данных хранятся на другом диске. В 17:05 произошел сбой. Вы должны восстановить DB1 с минимальными потерями данных. Какие действия вы должны выполнить, чтобы достичь этой цели?
Вы должны восстановить полную резервную копию
Вы должны восстановить снимок базы данных на 16:30 часов.
Вы должны восстановить снимок базы данных на 17:00 часов
Вы должны восстановить как полную резервную копию и дифференциальное резервное копирование.

11 Вы работаете а компании, которая называется Wiikigo Сorp. компания использует SQL Server. Вы администратор базы данных компании, в компании существует база данных с именем DB1. Вам необходимо в соответствии с требованиями компании проварить, что база данных может быть восстановлена на определенный момент времени. Какие действия следует выполнить чтобы достичь этой цели?
Вы должны убедиться, что используется простая модель восстановления в базе данных.
Вы должны убедиться, что используется модель полного восстановления в базе данных.
Вы должны убедиться, что используется опция checksum в базе данных.
Вы должны убедиться, что модель восстановления е неполным протоколированием используется в базе данных.

12 Вы работаете в компании которая использует SQL Server. Вы администратор баз данных компании. Job с именем Delivery List создан вами. Этот job требует доступ на запись к файлу на файловом сервере, но job не может получить доступ к файловому серверу. Вы намерены настроить службу агента SQL Server, так чтоб только служба агента SQL Server имела доступ на чтение и запись к файловому серверу. Какой тип учетной записи вы должны использовать?

Вы, должны использовать учетную запись local service
Вы, должны использовать учетную запись network Service
Вы, должны использовать доменную учетную запись
Вы, должны использовать учетную запись local System


13 Вы управляете экземпляром SQL Server, который включает в себя базу данных с именем Test1. В ваше отсутствие, пользователь с логином Clark будет управлять моментальными снимками баз данных. Вы должны убедиться, что все необходимые права для пользователя даны, чтобы удалять снимки базы данных Test1. Укажите правильный ответ?
Вы должны дать право UPDATE
Вы должны дать право CREATE DATABASE
Вы должны дать право DROP DATABASE
Вы должны дать право INSERT ANY DATASPASE

14 Вы администрируете Microsoft SQL Server 2012, Когда журналы транзакций растут, SQL Server должен отправить сообщение электронной почты для администраторов баз данных. Вам нужно настроить SQL Server для отправки сообщения электронной почты. Что вы должны настроить?
SQL Mail
An Extended Events session
Alerts and operators in SQL Server Agent
Policies under Policy-Based Management

15 Вы администрируете базу данных Microsoft SQL Server 2012, Вы предоставляете временный доступ securityadmin к User1 на сервер базы данных. Вам нужно знать, добавляет ли User1 логины в securityadmin. Какую группу действий аудита на уровне сервера вы должны использовать?
SERVER_STATE_CHANGE_GROUP
SERVER_PRINCIPAL_IMPERSONATTON_GRQUP
SUCCESSFUL_LOGIN_GROUP
SERVER_ROLE_MEMBER_CHANGE_ GROUP

16 Вы администрируете экземпляр Microsoft SQL Server 2012, который содержит финансовую базу данных, размещенную в сети хранения данных (SAN). Финансовая база данных имеет следующие характеристики; файл данных объемом 2 терабайта расположен на выделенном LUN (диск D). Журнал транзакций 10 ГБ расположен на выделенном LUN (диск Е). Диск D имеет 1 терабайт свободного места на диске. Диск Е имеет 5 ГБ свободного места на диске. База данных постоянно изменяется пользователями в рабочие часы с понедельника по пятницу между 09:00 и 17:00. Пять процентов существующих данных каждый день меняются. Финансовый отдел загружает большие CSV- файлы в несколько таблиц каждый рабочий день а 11:15 и 15:15 с помощью команд ВСР или BULK INSERT. Каждая загрузка данных добавляет 3 ГБ данных в базу данных. Эти операции загрузки данных должны выполняться а минимальный промежуток времени. Полная резервная копия базы данных выполняется каждое воскресенье е 10:00. Резервные операции будут выполняться каждые два часа (11:00, 13:00,15:00 и 17:00) в рабочее время, Вам необходимо убедиться, что резервная котам будет продолжена, если встретится некорректная контрольная сумма. Какой вариант резервного копирования вы должны использовать?
STANDBY
Differential
FULL
CHECKSUM
BULK_LOGGED
CONTINUE_AFTER_ERROR
SIMPLE
DBO_ONLY
COPY_ONLY
SKIP
RESTART
Журнал транзакций
NO_CHECKSUM
NORECOVERY

17 Вы администрируете экземпляр Microsoft SQL Server 2012, который содержит финансовую базу данных, размешенную а сети хранения данных (SAN). Финансовая база данных имеет следующие характеристики: Файл данных объемом 2 терабайта расположен на выделанном LUN (диск D). Журнал транзакций 10 ГБ расположен на выделенном LUN (диск Е). Диск D имеет 1 терабайт свободного места на диске. Диск Е имеет 5 ГБ ; свободного места на диске. База данных постоянно изменяется пользователями в рабочие часы с понедельника по пятницу между 09:00 и ; 17:00. Пять процентов существующих данных каждый дань меняются. Финансовый отдел загружает большие CSV-файлы е несколько таблиц каждый рабочий день в 11:15 и 15:15 с помощью команд ВСР или BULK INSERT. Каждая загрузка данных добавляет 3 ГБ данных в базу данных. Эти операции загрузки данных должны выполняться в минимальный промежуток времени. Полная резервная копия базы данных выполняется каждое воскресенье в 10:00. Резервные операции будут выполняться каждые два часа (11:00, 13:00, 15:00 и 17:00) в рабочее i время. В среду в 10:00 команда разработчиков просит вас обновить базу данных на сервера разработки, используя самую последнюю версию.
Вам необходимо выполнить полную резервную копию базы данных, которая будет восстановлена на сервере разработки. Какой вариант резервного копирования вы должны использовать?
NORECOVERY
FULL
NO_CHECKSUM
CHECKSUM
Differential
BULK_LOGGED
STANDBY
RESTART
SKIP
Transaction log
DBO ONLY
COPY_ONLY
SIMPLE
CONTINUE AFTER ERROR

18 Вы администрируете два экземпляра Microsoft SQL Server 2012. Вы развертываете приложение, которое использует базу данных для именованного экземпляра (named instance). Приложение не может подключиться к безе данных no named instance. Вы должны убедиться, что приложение может подключиться к named instance. Что вы должны сделать?
Используйте Client Data Quality для настройки приложения.
Запустите службу SQL Server Browser Service.
Запустите службу SQL Server Integration Services Service.
Используйте Master Data Services Configuration Manager для настройки приложения.

19 Вы администрируете базу данных Microsoft SQL Server 2012. В базе данных есть таблица с именем Customers, принадлежащая UserA, а другая таблица с именем Orders, принадлежащая UserB, у вас также есть хранимая процедура с именем GetCustomerOrderlnfo, принадлежащая UserB, GetCustomerOrderlnfo выбирает данные из обеих таблиц. Вы создаете нового пользователя с именем UserC. Вы должны убедиться, что UserC может вызвать хранимую процедуру GetCustomerOrderlnfo. Вам также необходимо назначить только минимально необходимые разрешения для UserC. Какое разрешение или разрешения вы должны назначить UserC? Выберите все, что применимо.

Разрешение Select для Customers
Разрешение Execute на GetCustomerOrderlnfo Разрешение Take Ownership для Customers
Разрешение Control для GetCustomerOrderlnfo Разрешение Take Ownership для Orders
Разрешение Select для Orders

20 Вы используете базу данных с именем ContosoDb в домене. Вам необходимо создать пользователя, который может войти (log on) в базу данных ContosoDb. Вам также необходимо убедиться, что вы можете переносить базу данных на разные серверы баз данных в домене без дополнительных настроек учетной записи пользователя. Какой тип пользователя вы должны создать?
Пользователь сопоставлен с сертификатом
Пользователь SQL без входа
Пользователь домена
Пользователь SQL с логином
19 сен 17, 18:04    [20806950]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить