понедельник, 21 января 2013 г.

Вопросы по T-SQL (для подготовки). Часть 1

Вопрос. Перечислете стандарты SQL в хронологическом порядке
Ответ.
SQL-86
SQL-89
SQL-92
SQL:1999
SQL:2003
SQL:2006
SQL:2008
SQL:2011

Вопрос. В чем различия между SQL и T-SQL?
SQL - это стандартный язык запросов. T-SQL - это расширенный диалект SQL, испльзующийся в продукте MS SQL SERVER.

Вопрос. На каких двух математичкеских дисциплинах основана реляционная модель?
Ответ. 1) Теория отношений, 2) Логика предикатов.

Вопрос. Назовите два аспекта в которых T-SQL отходит от реляционной модели.
Ответ. Отношение представляет собой набор неупорядоченных и уникальных структурированных записей. 1)  T-SQL таблица может не иметь, ключа идентифицирующего записи. 2) T-SQL позволяет указывать порядковые номера позиций столбцов в ORDER BY.

Вопрос. Почему не в полне корректно использовать терминиы "поле" и "запись" в реляционной модели? Какие термины корректны?
Ответ. Потому что "поле" и "record" описывают физические объекты. Правильная терминология "столбец" и "строка".

Вопрос. Почему некорректно использовть термин "значения NULL" или "NULL-значения"?
Ответ.  Потому что NULL не является значением, это просто пометка о том, что значение не определено.

Вопрос. Укажите декларативном англоподобном языке прядок следования предложеий в команде SELECT
Ответ.
1. SELECT; 2. FROM; 3. WHERE; 4. GROUP BY; 5. HAVING; 6. ORDER BY

Вопрос. Укажите логический прядок обработки предложений в команде SELECT
Ответ.
1. FROM; 2. WHERE; 3. GROUP BY; 4. HAVING; 5. SELECT; 6. ORDER BY

Вопрос. Укажите способы задания алиасов столбцов в предложении SELECT
Ответ.
1) <поле> <алиас>
2) <поле> AS <алиас>
3) <алиас> = <поле>

Вопрос. Почему нельзя обращаться к алиасам полет в предложении WHERE. Какой есть способ обойти проблему?
Ответ. Согласно логическому порядку обработки предложений, WHERE срабатывает перед SELECT, поэтому алиасы на этапе WHERE еще не известны. Выход - использовать те же имена столбцов или выражений, которые использованы в предложении SELECT.

Вопрос. Назовите отличия между WHERE и HAVING.
Ответ. Предложение WHERE выполняется перед тем как данные группируются, и выполняются для каждой строки таблицы. Предложение HAVING выполняет фильтр после того как заприси сгруппированы и применяются к каждой группе.

Вопрос. Почему не разрешается обращаться к алиасам определенных в предложении SELECT в том же предложении?
Ответ. Это запрещено специально, потому что все выражения, которые появляются на одном и том же логическом этапе концептуально выполняются одновременно. Иным словами, концептуально не доускается последовательное выполнение выражений в предложении SELECT.

Вопрос. Сформируйте правила задания "регулярных" идентификаторов для столбоцов.
Ответ. Идентификатор должен начинаться с буквы в диапазоне от A до Z (регистр не важен), с символа подчеркивания (_), со знака  (@), или решетки (#). Последующе символы могут включать буквы, цифры, знак амперсанта и знак доллара ($), решетки или подчеркивания.

Вопрос. Правила указания "нерегулярных" идентификаторов.
Ответ. Не удовлетворяющие регулярным правилам идентификаторы должны заключаться в двоыные кавычки или в квадратные скобки.