бд. бд БАНК_ЗАДАНИЙ. Удаленный доступ к базе с любого хоста
Скачать 0.91 Mb.
|
КОНТРОЛЬНАЯ РАБОТА 1.О
Работа выполняется в форме тестирования. Время выполнения задания – 45 минут Уровень сложности работы – 2 КРИТЕРИИ ВЫСТАВЛЕНИЯ ОЦЕНКИ Правильно даны ответы на 30 – 27 вопросов из 30 – оценка «отлично» Правильно дан ответ на 26 – 23 вопросов из 30 – оценка «хорошо» Правильно дан ответ на 22 – 19 вопросов из 30 – оценка «удовлетворительно» Правильно дан ответ на менее чем на 19 вопросов – оценка «неудовлетворительно» СОДЕРЖАНИЕ РАБОТЫ Ответить на вопросы теста. Реляционные базы данных База данных, в которой одна ни с чем не связанная таблица Любая база данных – реляционная Совокупность данных, не связанных между собой База данных, в которой информация хранится в виде двумерных таблиц, связанных между собой Запрос для вывода всех данных из таблицы Orders SELECT ALL FROM Orders; SELECT % FROM Orders; SELECT * FROM Orders; SELECT *.Orders FROM Orders; Результатзапроса SELECT id, date, customer_name FROM Orders; Несортированные номера и даты всех заказов с именами заказчиков Запрос составлен неверно Номера и даты всех заказов с именами заказчиков, отсортированных по первой колонке Номера и даты всех заказов с именами заказчиков, отсортированные по всем колонкам Ошибкавзапросе: SELECT id, date, customer_name FROM Orders WHERE customer_name = Mike; Запрос составлен правильно Mike необходимо записать в кавычках Нужно убрать лишние поля из запроса Строчку с WHERE поменять местами с FPRM Результатзапроса SELECT * FROM Orders WHERE date BETWEEN ‘2019-01-01’ AND ‘2019-12-31’; Все данные по заказам, совершенным за 2019 год за исключением 01 января 2019 Все данные по заказам, совершенным за 2019 год, за исключением 31 декабря 2019 года Все данные по заказам, совершенным за 2019 год Запрос составлен неверно Ошибкавзапросе SELECT id, date FROM Orders WHERE seller_id = NULL; Все верно, запрос покажет все заказы, продавцы которых не проставлены NULL нужно взять в кавычки Сравнение с NULL можно проводить только с оператором ISNULL Сравнение с NULL можно проводить только с оператором ON Порядок выполнения операторов AND и OR Сначала выполняется AND, а затем OR Сначала выполняется OR, а затем AND Порядок выполнения операторов AND и OR зависит от того, какой из операторов стоит первым Операторы AND или OR выполняются одновременно Результатработызапроса SELECT DISTINCT srller_id ORDER BY seller_id FROM Orders; Уникальные ID продавцов, отсортированные по возрастанию Уникальные ID продавцов, отсортированные по убыванию Запрос составлен неверно, ORDERBY всегда ставится в конце запроса Неотсортированные уникальные ID продавцов Результатоператора SELECT * FROM Orders WHERE customer_name Like ‘mik_’; Будут найдены все имена, которые начинаются на mik и состоят из четырех символов Будут найдены все имена, которые начинаются на mik, вне зависимости от того, из какого количества символов они состоят Будут найдены данные, где имя равно mik Запрос составлен неверно, в паре с оператором Like не использутсяспецсимволы Правильный пример использования функции округлении ROUND SELECT id. Price * discount AS total price FROM Orders ROUND(2); SELECT id, price * discount ROUND(2) AS total price FROM Orders; SELECT id, ROUND(price * discount, 2) AS total price FROM Orders; Нет правильного примера Результатзапроса SELECT id FROM Orders WHERE year(date) > 2019 Номера заказов, сделанных до 2019 Номера заказов, сделанных в 2019 Уникальные номера заказов Номера заказов, сделанных после 2019 года Назначение оператора LIMIT в запросе: SELECT * FROM Orders LIMIT 10; Необходим, чтобы показать все заказы, содержащие цифру 10 Необходим, чтобы показать первых 10 записей в запросе Необходим, чтобы показать случайные 10 записей в запрос Не существует такого оператора Правильно написанный запрос с использованием агрегатной функции SUM SELECT SUM(price) FROM Orders; SELECT SUM(price), customer_name FROM Orders; SELECT * FROM Orders WHERE price = SUM(); SELECT SUM() FROM Orders GROUP BY price; Возможность использования одновременно двух агрегирующих функций: SELECT MIN(price), MAX(price) FROM Orders; Да, но данный запрос составлен неверно, надо так: SELECT * FROMOrdersWHEREpriceIN(min, max); Да, в результате получим минимальную и максимальную стоимости Да, в результате получим стоимости, отсортированные от минимальной к максимальной Нет, две функции использовать одновременно нельзя Корректно составленный запрос с операторомгруппировки данных SELECT count(*) FROM Orders GROUP seller_id; SELECT seller_id, count(*) FROM Orders GROUP seller_id; SELECT seller_id, count(*) FROM Orders GROUP BY seller_id; SELECT count(*) FROM Orders GROUP ON seller_id; Результатзапроса: SELECT seller_id, count(*) FROM Orders GROUP BY seller_id HAVING seller_id IN(2,4,6); Количество заказов, сгруппированное по продавцам 2, 4 и 6 Количество продавцов, у которых 2, 4 или 6 товаров Запрос составлен неверно, HAVING указывается до группировки Запрос составлен неверно, для указания условия должно быть использовано WHERE Корректно написанный запрос с использованием подзапроса, который выводит информацию о заказе с самой дорогойстоимостью SELECT * FROM Orders price – (SELECT big(price) FROM Orders; SELECT * FROM Orders WHERE price = max; SELECT count(*) FROM Orders; SELECT * FROM Orders WHERE price = (SELECT max(price) FROM Orders); Несуществующий вид оператора JOIN LEFTJOIN – который выводит все записи первой таблицы, а для ненайденных пар из правой таблицы проставит значение NULL RIGHTJOIN – который выведет все записи второй таблицы, а на месте недостающей информации из первой таблицы поставит NULL INERJOIN – который показывает только те записи, для которых нашлись пары TRUEJOIN – который выведет все верные значения Корректный пример запроса с использованием JOIN. Данный запрос выведет нам данные ID заказа, имя заказчика и IDпродавца SELECT Orders.customer_name, Sellers.id FROM Orders LEFT JOIN ON Sellers AND Orders.seller_id = Sellers.id; SELECT id AND customer_name AND seller_id Orders LEFT JOIN Sellers ON seller_id = id; SELECT Orders.id, Orders.customer_name, Sellers.id FROM Orders LEFT JOIN Sellers ON Orders.seller_id = Sellers.id; SELECT Orders.id, Orders.customer_name, Sellers.id FROM Orders INNER JOIN Sellers WHEN Orders.seller_id = Sellers.id; Правильный пример запроса с использованием UNION SELECT id, city FROM Orders ORDER BY id UNION SELECT id, city FROM Sellers ORDER BY city; SELECT id, city, seller_id FROM Orders AND SELECT city, id FROM Sellers ORDER BY city; SELECT id, city FROM Orders UNION SELECT id, city FROM Sellers ORDER BY id; SELECT city FROM Orders UNION SELECT id, city FROM Sellers ORDER BY id; Строковый тип данных, которого нет в SQL VARCHAR STRING CHAR TEXT Значение текущего года SELECT now(); SELECT year(); SELECT yer(now()); SELECT year FROM Date; Поля, которые обязательно перечислять в INSERT для вставки данных Все Только те, у которых нет NULLзначений Те, у которых нет DEFAULT значения и которые не имеют атрибут auto_increment Все поля имеют негласное DEFAULT значение, обязательных полей нет Несколько вставляемых записей в таблицу за один запрос Использовать MULTI INSERT вместо INSERT INTO Перечислить через запятую все наборы значений после VALUES Использовать подзапрос Несколько записей в одном запросе вставить нельзя Необходимость команды UPDATE, если можно сначала удалить запись, а потом добавить новую, исправленную Именно так и делаю, UPDATE не использую Удалять записи в SQL нельзя, вместо этого используется UPDATE с NULL-значениями для всех полей В записи могут быть автоматически проставленные поля, такие как auto_increment или timestamp, которые собьются при внесении записи заново Так меньше нагрузки на базу, ведь команда одна, а не две Операторы, в которых можно применять оператор LIMIT Только SELECT SELECT и INSERT SELECT, UPDATE, DELETE SELECT, INSERT, DELETE, UPDATEe Результатзапроса: SELECT id, date, customer_name FROM OrdersORDER BY customer_name DESC; Неотсортированные номера и даты всех заказов с именами заказчиков Номера и даты всех заказов с именами заказчиков, отсортированные по убыванию по колонке customer_name Запрос составлен неверно Номера и даты всех заказов с именами заказчиков, отсортированные по всем колонкам, содержащим слово Order Правильно заданные синоним таблицы в запросе SELECT * FROM table_name as tn; SELECT * FROM table_name this tn; SELECT * FROM table_name is tn SELCT * FROM table_name tn В MySQL нельзя задавать синонимы таблицам Ошибки, допущенныеввыражении: CREATE table deffult (row_id not null default 10 auto_increment); Для auto_increment колонок нельзя задать свойство default Неправильно задано имя таблицы Для типа int нельзя задавать ограничение notnull Пропущена обязательная проверка на наличие таблицы – ifnotexists Колонка со свойством auto_increment обязана быть ключом, но не обязательно primary; Таблица table содержит 8 записей. Количество строк, которые выдаст следующий запрос: SELECT * FROM table LIMIT 4, 6; Произойдет ошибка 6 4 8 3 Правильно написанный оператор создания таблицы CREATE TABLE books(id INTEGER PRIMARY KEY AUTO_INCREMENT DEFAULT 0, title VARCHAR(100), author_id INTEGER, price double, year DATE, FOREIGN KEY (author_id) REFERENCES authors(id)); CREATE TABLE books(id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100), author_id INTEGER, price double, year DATE, FOREIGN KEY (author_id) REFERENCES authors(id)); CREATE TABLE books(id INTEGER AUTO_INCREMENT, title VARCHAR(100), author_id INTEGER, price double, year DATE, FOREIGN KEY (author_id) REFERENCES authors(id)); CREATE TABLE books(id INTEGER NOT NULL, title VARCHAR(100), author_id INTEGER, price double, year DATE, FOREIGN KEY (author_id) REFERENCES authors(id)); Правильное добавление внешнего ключа в таблицу INSERT INTO books ADD FOREIGN KEY (author_id) REFERENCES authors(id); SELECT FOREIGN KEY (author_id) REFERENCES authors(id) FROM books; UPDATE books SET FOREIGN KEY = (author_id) REFERENCES authors(id); ALTER TABLE books ADD FOREIGN KEY (author_id) REFERENCES authors(id); Результатзапроса: SELECT id, date, customer_name FROM Orders ORDER BY 3; Неотсортированные номера и даты всех заказов с именами заказчиков Запрос составлен неверно Номера и даты всех заказов с именами заказчиков, отсортированные по третьей колонке Номера и даты всех заказов с именами заказчиков, отсортированные по всем колонкам, содержащим слово ORDER Компоненты, которые необходимо настроить в C++ Builder, для работы с базой данных ADOConnection ADOСommand TDataSource ADODStoreProc ADOQuery Индексы могут быть Простые Связанные Уникальные Прямые Конструкция ON DELETE CASCADE применяется при удалении записи в таблице-предке, которая содержит первичный ключ, при этом автоматически удаляются записи со ссылками на это значение в таблице-потомке обновлении записи в таблице-предке, которая содержит первичный ключ, при этом автоматически обновляются записи со ссылками на это значение в таблице-потомке удалении или обновлении записи в таблице-предке, которая содержит первичный ключ, при этом значения внешнего ключа в таблице-потомке устанавливаются в NULL удалении или обновлении записи в таблице-предке, которая содержит первичный ключ, в таблице-потомке никаких действий предприниматься не будет Сервер баз данных осуществляет целый комплекс действий по управлению данными. Основными его обязанностями являются: выполнение пользовательских запросов на выбор и модификацию данных и метаданных, получаемых от клиентских приложений, функционирующих на персональных компьютерах локальной сети отображение информации из таблиц базы данных хранение и резервное копирование данных поддержка ссылочной целостности данных согласно определенным в базе данных правилам обеспечение авторизованного доступа к данным на основе проверки прав и привилегий пользователей изменение информации, получаемой клиентом протоколирование операций и ведение журнала транзакций Технология доступа к данным, которая используется при настройке ИСР С++ Builder c СУБД MySQL dbExpress ADO ODBC ADO.NET Ограничения на значения полей устанавливаются оператором CREATE CHECK DEFAULT UPDATE Правильный оператор изменения в таблице Customers типа данных у столбца FirstName на CHAR(100) и установка для него атрибута NULL: ALTER TABLE Customers CHANGE COLUMN FirstName CHAR(100) NULL; ALTER TABLE Customers CHANGE COLUMN FirstName NULL CHAR(100); ALTER TABLE Customers MODIFY COLUMNS FirstName CHAR(100) NULL; ALTER TABLE Customers MODIFY COLUMN FirstName CHAR(100) NULL; Для полного удаления данных, очистки таблицы применяется команда DROP TABLE ALTER TABLE DELETE TABLE TRUNCATE TABLE Операторы сравнения нанеравенство = != < > <> <= >= |