| |||||||||||||||
|
| ||||||||||||||
Тест №2:Введение в язык SQL. "Типы таблиц SQL. Транзакции
1. Нам потребуются транзакции. В этом случае следует использовать а) ISAM; б) MyISAM; в) InnoDB; г) BDB. 2. Необходимо создать временную таблицу для быстрого поиска. В этом случае следует использовать а) ISAM; б) MyISAM; в) MERGE; г) HEAP. 3. Нам потребуются очень большие таблицы. В этом случае не следует использовать а) ISAM; б) MERGE; в) InnoDB; г) ни один из вышеперечисленных вариантов. 4. Нам потребуется блокировка на уровне строк. В этом случае следует использовать а) MyISAM; б) InnoDB; в) BDB; г) HEAP. 5. В каких случаях изменения будут фиксироваться автоматически, независимо от режима autocommit а) при использовании таблиц, не обеспечивающих безопасность транзакций; б) при использовании таблиц MyIsam; в) ни при одном из вышеуказанных условий; г) при выполнении условий пп. а) и б). 6. Атомарность означает, что а) либо выполняется все содержимое транзакции, либо не выполняется ничего; б) операции преобразуют базу данных из одного согласованного состояния в другое; в) транзакции не влияют одна на другую; г) результаты зафиксированной транзакции должны быть перманентными.
7. Изолированность означает, что а) либо выполняется все содержимое транзакции, либо не выполняется ничего; б) операции преобразуют базу данных из одного согласованного состояния в другое; в) транзакции не влияют одна на другую; г) результаты зафиксированной транзакции должны быть перманентными. 8. Устойчивость означает, что а) либо выполняется все содержимое транзакции, либо не выполняется ничего; б) операции преобразуют базу данных из одного согласованного состояния в другое; в) транзакции не влияют одна на другую; г) результаты зафиксированной транзакции должны быть постоянными. 9. В режиме повторяемого чтения а) возможно "грязное" чтение; б) возможно неповторяемое чтение; в) возможно фантомное чтение; г) невозможно ничего из указанного в пп. а)-в).
1. Нам потребуются транзакции и таблицы, которые можно легко перенести из одной системы в другую. В этом случае следует использовать а) ISAM; б) MyISAM; в) InnoDB; г) BDB. 2. В каких таблицах используются блокировки? а) ISAM; б) BDB; в) MERGE; г) InnoDB. 3. Нам потребуются очень большие таблицы. В этом случае следует использовать а) ISAM; б) MERGE; в) HEAP; г) ни один из вышеперечисленных вариантов. 4. MySQL работает в режиме автоматической фиксации транзакций а) по умолчанию; б) после выполнения команды setautocommit=0; в) после выполнения команды setautocommit=1; г) после добавление команд STARTTRANSACTION и COMMIT к каждому из запросов. 5. При выключенном режиме autocommit транзакции будут фиксироваться а) при вызове COMMIT; б) при вызове STARTTRANSACTION; в) при выполнении условий пп. а) и б); г) ни при одном из вышеуказанных условий. 6. Целостность означает, что а) либо выполняется все содержимое транзакции, либо не выполняется ничего; б) транзакции не влияют одна на другую; в) операции преобразуют базу данных из одного согласованного состояния в другое; г) результаты зафиксированной транзакции должны быть постоянными. 7. Изолированность означает, что а) либо выполняется все содержимое транзакции, либо не выполняется ничего; б) каждая транзакция должна иметь возможность считать себя единственным объектом, наделенным полномочиями читать и изменять данные; в) транзакции влияют одна на другую; г) результаты зафиксированной транзакции должны быть постоянными. 8. Устойчивость предполагает, что а) либо выполняется все содержимое транзакции, либо не выполняется ничего; б) возможность восстановления текущего состояния базы данных в случае отказа системы; в) транзакции не влияют одна на другую; г) результаты зафиксированной транзакции не должны быть постоянными. 9. В режиме подтвержденного чтения а) возможно "грязное" чтение; б) возможно неповторяемое чтение; в) невозможно фантомное чтение; г) невозможно ничего из указанного в пп. а)-в).
Критерии оценки Предлагаемый пакет контрольно-измерительных материалов включает два равнозначных комплекта, состоящих из семи заданий. Все задания репродуктивного характера, предполагают воспроизведение теоретического материала.
Задания 1
1. Напишите оператор SQL для создания новой базы данных с именем addressbook 2. Какой оператор используется для получения информации о таблице? Как используется этот оператор? 3. Как получить список всех баз данных, доступных в системе? 4. Напишите оператор для записи следующих данных в таблицу employee_data Имя: Рудольф Фамилия: Курочкин Должность: Программист Возраст: 34 Стаж работы в компании: 2 Зарплата: 95000 Надбавки: 17000 email: rudolf@yandex.ru
5. Приведите две формы оператора SELECT, которые будут выводить все данные из таблицы employee_data. 6. Как извлечь данные столбцов f_name, email из таблицы employee_data? 7. Напишите оператор для вывода данных из столбцов salary, perks и yos таблицы employee_data. 8. Как узнать число строк в таблице с помощью оператора SELECT? 9. Как извлечь данные столбцов salary, l_name из таблицы employee_data?
Возможныерешения
1. create database addressbook; или CREATE DATABASE addressbook;
Примечание: Операторы SQL не различают регистр символов, однако имена таблиц и имена баз данных могут различать регистр символов, в зависимости от используемой операционной системы.
2. ОператорDESCRIBE, например: DESCRIBE employee_data;
3. SHOW DATABASES; (в приглашении mysql) 4. INSERT INTO employee_data (f_name, l_name, title, age, yos, salary, perks, email) values ("Рудольф", "Курочкин", "программист", 34, 2, 95000, 17000, "rudolf@yandex.ru"); Примечание: Текстовые строки заключаются в кавычки.
5. SELECT emp_id, f_name, l_name, title, age, yos, salary, perks, email from employee_data; или SELECT * from employee_data; Вторая форма лучше. Ее легче использовать и труднее ошибиться.
6. Чтобы вывести данные столбцов f_name и email, используем следующий оператор. selectf_name, email from employee_data;
7. SELECT salary, perks, yos from employee_data;
8. Последняя строка вывода любого оператора SELECT содержит число полученных строк. Поэтому при выводе всех данных в любом столбце (или всех столбцах), последняя строка будет указывать число строк в таблице.
9. select salary, l_name from employee_data;
Задания 2
1. Напишите оператор SELECT для извлечения идентификационного номера сотрудников, которые старше 30 лет. 2. Напишите оператор SELECT для извлечения имен и фамилий всех Web-разработчиков. 3. Что выведет следующий оператор SELECT: SELECT * from employee_data where salary <=100000; 4. Как вывести зарплаты и надбавки сотрудников, которые получают в качестве надбавок более 16000? 5. Перечислите имена всех сотрудников (фамилия, а затем имя), которые занимают должность бухгалтера.
Возможные решения
1. selectemp_id from employee_data where age > 30;
2. selectf_name, l_name from employee_data where title='web designer';
3. Следующий оператор выводит всю информацию о сотрудниках, которые получают зарплату не больше 100000. SELECT * from employee_data where salary <=100000;
4. select salary, perks from employee_data where perks > 16000;
5. selectl_name, f_name from employee_data where title = 'бухгалтер'; Задания 3
1. Перечислить всех сотрудников, фамилии которых начинаются с буквы P. 2. Вывести имена всех сотрудников в отделе продаж. 3. Чтовыведетследующийоператор SELECT f_name, l_name, salary from employee_data where f_name like '%к%'; 4. Перечислить фамилии и должности всех программистов
Возможныерешения
1. selectl_name, f_name from employee_data where l_name like 'P%';
2. selectf_name, l_name from employee_data where title like '%продавец%';
3. Этот оператор выводит имена, фамилии и заплаты всех сотрудников, у которых имя содержит букву 'к'. SELECT f_name, l_name, salary from employee_data where f_name like '%к%';
4. SELECT l_name, title from employee_data where title like '%программист%';
Задание 4
Вывести подразделения и средний возраст, где средний возраст больше 30. Возможноерешение mysql> select title, AVG(age) ->fromemployee_data -> GROUP BY title -> HAVING AVG(age) > 30;.
Самостоятельная работа. Логические операторы
Задания 11. Вывести имена и фамилии всех сотрудников, которые получают зарплату не более 90000 и не являются программистами, старшими программистами или программистами мультимедиа.
2. Чтоделаетследующийоператор? SELECT l_name, f_name from employee_data where title NOT LIKE '%продавец%' AND age< 30;
3. Вывести все идентификационные номера и имена сотрудников в возрасте от 32 до 40 лет.
4. Выберите имена всех сотрудников в возрасте 32 лет, которые не являются программистами.
Возможныерешения
mysql> select f_name, l_name from employee_data ->where salary <= 90000 -> AND title NOT LIKE '%программист%'; Команда выводит имена (фамилию за которой следует имя) сотрудников, которые не работают в отделе продаж и моложе 30 лет. mysql> SELECT l_name, f_name from employee_data ->where title NOT LIKE '%продавец%' -> AND age < 30; mysql> select emp_id, f_name, l_name from ->employee_data where age > 32 ->and age < 40; mysql> select f_name, l_name from employee_data ->where age = 32 AND ->title NOT LIKE '%программист%';
Задания 21. Найдите всех сотрудников, которые занимают должность "старший программист" и "программист мультимедиа". 2. Выведите список имен сотрудников, зарплата которых составляет от 70000 до 90000. 3. Что делает следующий оператор? SELECT f_name, l_name, titlefrom employee_data where title NOT IN ('программист', 'старший программист', 'программист мультимедиа'); 4. Вот более сложный оператор, который объединяет BETWEEN и IN. Чтоонделает? SELECT f_name, l_name, title, age fromemployee_data where title NOT IN ('программист', 'старший программист', 'программист мультимедиа') AND age NOT BETWEEN 28 and 32;
Возможныерешения
mysql> select l_name, f_name, title ->fromemployee_data where ->title IN -> ('старшийпрограммист', -> 'программистмультимедиа'); 2. mysql> select f_name, l_name, salary from ->employee_data where salary BETWEEN -> 70000 AND 90000; Выводятся имена и должности всех, кто не является программистом. mysql> SELECT f_name, l_name, title from ->employee_data where title NOT IN -> ('программист', 'старший программист', -> 'программист мультимедиа'); Этот оператор выводит список тех, кто не является программистом, и которые младше 28 или старше 32 лет. mysql> SELECT f_name, l_name, title, age from ->employee_data where title NOT IN -> ('программист', 'старший программист', -> 'программист мультимедиа') AND ->age NOT BETWEEN 28 AND 32;
Задания 31. Вывести список сотрудников в порядке, определяемом зарплатой, которую они получают. 2. Выведите список сотрудников в убывающем порядке их стажа работы в компании. 3. Что делает следующий оператор? SELECT emp_id, l_name, title, age fromemployee_data ORDER BY title DESC, age ASC; 4. Вывести список сотрудников (фамилию и имя), которые занимают должность "программист" или "разработчик Web" и отсортировать их фамилии по алфавиту.
Возможные решения mysql> SELECT f_name, l_name, salary ->fromemployee_data -> ORDER BY salary; mysql> SELECT f_name, l_name, yos ->fromemployee_data -> ORDER by yos; Оператор выводит список сотрудников с идентификационным номером, должностью, и возрастом, отсортированный по должности в убывающем порядке и по возрасту в возрастающем порядке. mysql> SELECT emp_id, l_name, title, age ->fromemployee_data ORDER BY ->title DESC, age ASC; Примечание: Сначала сортируются должности в убывающем порядке. Затем для каждой должности сортируется возраст сотрудников в возрастающем порядке. mysql> SELECT l_name, f_name from employee_data ->where title IN ('программист', -> 'разработчик Web') ORDER BY l_name;
Задания 41. Найдите имена 5 самых молодых сотрудников компании. 2. Извлеките 5 записей, начиная с 10 строки. 3. Выведите имена и зарплату сотрудников, которые получают самую большую зарплату. 4. Что делает следующий оператор? SELECT emp_id, age, perks fromemployee_data ORDER BY perks DESC LIMIT 10;
Возможныерешения 1. mysql> SELECT f_name, l_name, age from ->employee_data ORDER BY age -> LIMIT 5; 2. mysql> SELECT * from employee_data -> LIMIT 10, 5; 3. mysql> select f_name, l_name, salary ->fromemployee_data -> ORDER BY salary DESC -> LIMIT 1; 4. Этот оператор выводит идентификационный номер, возраст и надбавки 10 сотрудников, которые получают наибольшие надбавки. mysql> SELECT emp_id, age, perks ->fromemployee_data ORDER BY -> perks DESC LIMIT 10;
Задания 51. Сколько уникальных вариантов зарплаты имеется в компании? Представьте их в убывающем порядке. 2. Сколько различных имен имеется в базе данных?
Возможныерешения 1. select distinct salary from employee_data order by salary DESC; 2. mysql> select distinct f_name from employee_data; Задания 61. Измените фамилию Чащина на Петрова. Внесите соответствующие изменения в базу данных. 2. Название должности "программист мультимедиа" необходимо изменить на "специалист по мультимедиа". 3. Увеличьте зарплату всем сотрудниками (кроме директора) на 10000.
Возможныерешения 1. mysql> update employee_data SET ->l_name = 'Петрова' ->WHEREl_name = 'Чашина'; Примечание: Если бы были еще сотрудники с фамилией Чащина, то эти записи также были бы изменены. В таком случае может помочь столбец emp_id, так как он содержит уникальные значения. Лучше использовать значение emp_id вместо l_name, как в следующем примере: 2. mysql> update employee_data SET ->l_name = 'Петрова' -> WHERE emp_id = 4; mysql> update employee_data set ->title = 'специалистпомультимедиа' ->wheretitle = 'программист мультимедиа'; mysql> update employee_data set ->salary = salary + 10000 ->wheretitle != 'директор'; | |||||||||||||||
| |||||||||||||||
Сайт создан по технологии «Конструктор сайтов e-Publish» |