Практическая работа. Взаимодействие MySQL и PHP.. Методические указания для выполнения практических работ
Скачать 1.47 Mb.
|
Select tab1.Р1, tab1.Р2, tab2.Р4 from tab1 Left JOIN tab2 ON tab1.Р2= tab2.Р2 Приведёт к выдаче результирующего набора
Пунктиром показаны столбцы ведущей таблицы tab1. Как видно для записи таблицы tab1, где столбец tab1.Р1 имеет значение «d», нет парных записей в таблице tab2, для которых бы удовлетворялось условие поиска tab1.Р2= tab2.Р2. Поэтому данная запись таблицы tab1 показана в соединении с пустой записью. В то же время, выполнение оператора Select, реализующего внешнее правое соединение Select tab1.Р1, tab1.Р2, tab2.Р4 from tab1 Right JOIN tab2 ON tab1.Р2= tab2.Р2 Приведёт к выдаче результирующего набора
Пунктиром показаны столбцы ведущей таблицы tab2. Как видно, для записи таблицы tab2, где столбец tab2.Р1 имеет значение ’z’ и столбец tab2.Р2 имеет значение «2», нет парных записей в таблице tab1, для которых бы удовлетворялось условие поиска tab1.Р2= tab2.Р2. Поэтому данная запись таблицы tab2 показана в соединении с пустой записью. Задание 2:Построить внешнее соединение по таблице uspevaemost с таблицей student, т.е. показать студента, соответствующего каждой оценке. use uch_proc Select uspevaemost.ozenka,uspevaemost.kp, student.ns, student.ng from uspevaemost Left JOIN student ON uspevaemost.ns=student.ns and uspevaemost.ng=student.ng Или use uch_proc Select uspevaemost.ozenka,uspevaemost.kp, student.ns, student.ng from student RightJOIN uspevaemost ON uspevaemost.ns=student.ns and uspevaemost.ng=student.ng Результат запроса: Ozenka kp ns ng 3 01 01 101 4 01 01 101 3 03 01 101 Задание3:Построить внешнее соединение по таблице student с таблицей uspevaemost, т.е. показать все оценки по каждому студенту. use uch_proc Select uspevaemost.ozenka,uspevaemost.kp, student.ns, student.ng from student LeftJOIN uspevaemost ON uspevaemost.ns=student.ns and uspevaemost.ng=student.ng Или use uch_proc Select uspevaemost.ozenka,uspevaemost.kp, student.ns, student.ng from uspevaemost RightJOIN student ON uspevaemost.ns=student.ns and uspevaemost.ng=student.ng Результат запроса: Ozenka kp ns ng 3 01 01 101 4 01 01 101 3 03 01 101 NULL NULL 03 102 NULL NULL 01 103 NULL NULL 02 103 NULL NULL 01 104 Задание 4. Используя внутреннее соединение между таблицами student ,isuchenie, predmet и условия существования хотябы одной записи (exists ) в наборе данных, вывести фамилии студентов, которые не получали оценок по изучаемым предметам. use uch_proc Select student.fio, student.ng , predmet.np,isuchenie.vidz from student ,isuchenie, predmet where isuchenie.ng=student.ng and predmet.kp=isuchenie.kp and not exists( select uspevaemost.ns from uspevaemost where uspevaemost.ns=student.ns and uspevaemost.kp=isuchenie.kp and isuchenie.vidz=uspevaemost.vidz ) Аристов 101 математика лек Аристов 101 математика пр Аристов 101 история лек Аристов 101 ин яз пр Аристов 101 философия лек . Контрольные задания Построить внешнее соединение по таблице kafedra с таблицей prepodsavatel, т.е. показать состав каждой кафедры. Построить левое внешнее соединение и правое соединение. Построить внешнее соединение по таблице predmet с таблицей isuchenie, которое отобразит в каких группах и с каим количеством часов преподаются предметы. Построить левое внешнее соединение и правое соединение Построить внешнее соединение по таблице gruppa с таблицей student, которое покажет состав групп. Построить левое внешнее соединение и правое соединение. Сформулировать и выполнить запросы в индивидуальной базе данных с использованием левого внешнего соединения. Сформулировать и выполнить запросы в индивидуальной базе данных с использованием правого внешнего соединения. Практическая работа №15 «Транзакции. Уровни изоляций транзакций. Резервирование данных» Цель: «познакомить студентов с основными принципами администрирования баз данных в SQL Server, изучить основные приемы при резервировании баз данных и журналов транзакций, а также их восстановления» Ход Работы 1.Уровни изоляции транзакций Разработчику предоставляется возможность выбора уровня изоляции транзакций: READCOMMITTED(значение, применяемое по умолчанию) READUNCOMMITTED SERIALIZABLE Для выбора конкретного уровня изоляции транзакций применяется оператор: SET TRANSACTION ISOLATION LEVEL < READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE > Опция READCOMMITTED При использовании этой опции все созданные разделяемые блокировки автоматически освобождаются после завершения выполнения оператора, в котором они были созданы. Задание 1 “уровень изоляции транзакции «READCOMMITTED» “ Установите соединение с базой данных «Учебный процесс». В окне редактора нового запроса ( New Query) введите команду начала транзакции и обновления записи для группы 101 begin tran use uch_proc update gruppa set kol=35 where ng='101' выполните запрос (! Execute ). Запись обновляется, но транзакция не завершена. Транзакция блокирует запись. В новом окне введите код запроса для отображения записи из таблицы «gruppa» с номером '101'. use uch_proc select * from gruppa where ng='101' Внизу на панели будет отображаться процесс «зависания» выполнения запроса: Executing query. При обновлении на запись была установлена «исключительная блокировка», которая не даёт возможность выполнится «разделяемой блокировке» чтения данных. Если в новом окне редактора запросов ввести код, отображающий информацию о группах кроме 101, то он будет выполнен. use uch_proc select * from gruppa where ng<>'101' Результат ng kol pbal 102 32 4,5 103 29 4,8 104 35 4,4 105 45 4,8 . . Все остальные записи таблицы оказались не заблокированы. В окне, где запускалась транзакция завершите её подтверждением : commit tran. После этого код запроса для отображения записи из таблицы «gruppa» с номером '101' будет выполнен. Результат ng kol pbal 101 35 4,5 Задание 2 “уровень изоляции транзакции «READUNCOMMITTED» “ В окне редактора нового запроса ( New Query) введите команду начала транзакции и обновления записи для группы 101 Транзакция № 1 begin tran use uch_proc update gruppa set kol=32 where ng='101' выполните запрос (! Execute ). Запись обновляется, но транзакция не завершена. В новом окне введите код запроса для отображения записи из таблицы «gruppa» с номером '101'. Для выборки данных запустим транзакцию с уровнем изоляции READUNCOMMITTED Транзакция №2 set transaction isolation level read uncommitted begin tran use uch_proc select * from gruppa where ng='101' ng kol pbal 101 32 4,5 102 32 4,5 103 29 4,8 . . Транзакции с этим уровнем изоляции удалось прочитать «незафиксированные» данные. В окне начала транзакции на обновление введём команду «отката» изменений: rollback tran. Просмотрим данные из таблицы «группа» после отката транзакции ng kol pbal 101 35 4,5 102 32 4,5 103 29 4,8 . 2. Резервирование данных и журналов транзакций Одни из лучших способов управления резервной копией информации предоставляется SQL Server Enterprise Manager. Для начала работы с системой резервирования выберите базу данных, которую требуется сохранить, правой кнопкой мыши и выполните команду _Database_.__После_чего_на_экран_будет_выведено_диалоговое_окно_Restore_Database'>Tasks__→_Back_Up_._В_результате_чего_на_экран_будет_выведено_диалоговое_окно_SQL_Server_Backup'>Tasks | Back Up. Появится диалоговое окно SQL Server Backup, где расположены вкладки General и Options. Основными видами резервирования в SQL Server являются: - Full (полная копия базы данных). В этом случае сохраняются любые действия над базой данных, производимые в процессе копирования, все незафиксированные транзакции и, естественно, все данные. Для создания первой копии необходимо выбрать именно этот вариант. - Differential (дифференциальная копия). В этом случае SQL Server сохраняет только те части базы данных, которые изменились со времени создания полной копии и имеющиеся в журнале незафиксированные транзакции. В этом случае резервное копирование производится быстрее, чем в предыдущем, но полная копия должна существовать. - Transaction log (копия журнала транзакций). В этом случае сохраняются все изменения, произошедшие в базе данных. Для эффективной работы с базой данных, спроектированной в SQL Server, обязательно должны резервироваться следующие объекты: главная база данных; все базы данных, информацию из которых нельзя потерять; все журналы транзакций для каждой базы данных, которые работают в системе или подвергаются тестированию. Если база данных была повреждена в силу некорректных действий пользователя или вследствие сбоев в работе аппаратной и программной части системы, то необходимо провести восстановление системы. Основными действиями для её восстановления являются: восстановление главной базы данных; восстановление последней полной копии базы данных, если она была сделана; восстановление журналов транзакций, которые были зарезервированы пользователем, начиная с момента получения последней резервной/ Задание 3. Создать резервную копию базы данных ‘sklad’. В выберите базу данных ‘sklad’, для которой нужно выполнить резервное копирование. Выполните последовательность действий: Tasks → Back Up. В результате чего на экран будет выведено диалоговое окно SQL Server Backup, содержащее вкладки General и Options. В поле Database укажите имя базы данных, подлежащей резервированию; в поле Name – имя ее резервной копии; Description – задается описание, использование которого облегчит работу с резервируемой базой данных. С помощью клавиши Tab перейдите в область Backup type и укажите тип создаваемой резервной копии (Full, Differential, Transaction log ). Затем активизируйте область окна Destination, в которой указывается область диска или диск для размещения резервной копии базы данных. Нажмите кнопку Add в группе Destination. В диалоговом окне Select Backup Destination определите месторасположения резервной копии базы данных: в отдельном файле или на внешнем устройстве. Для сохранения резервной копии в отдельном файле достаточно указать полный путь доступа к нему; во втором случае – указывается и тип носителя, на котором будет сохраняться копия, и новое имя файла. Для возврата в диалоговое окно SQL Server Backup достаточно нажать кнопку ОК. Рис 17 в диалоговое окно SQL Server Backup Задание 4 Выполнить восстановления базы данных ‘sklad’. В начале операции восстановления базы данных выполните следующую последовательность команд: Tasks → Restore ->Database. После чего на экран будет выведено диалоговое окно Restore Database, которое также содержит вкладки General и Options. Затем из предлагаемого списка выберите базу данных для восстановления. После заполнения диалогового окна Restore Database нажмите на кнопку ОК. Если все параметры для восстановления базы данных указаны верно, то на экран будет выведено окно сообщений, в котором отображается процесс восстановления базы данных. Контрольные задания Выполните резервное копирование индивидуальной базы данных. Выполните восстановление индивидуальной базы данных. В индивидуальной базе данных запустите транзакцию с уровнем изоляции «READCOMMITTED» В индивидуальной базе данных запустите транзакцию с уровнем изоляции READUNCOMMITTED Практическая работа №16 «Обеспечение безопасности пользователей в SQL Server» Цель: «изучить основные приемы администрирования баз данных в SQL Server, рассмотреть возможность добавления новых пользователей в систему и разграничения их полномочий» Ход Работы Решение задач обеспечения безопасности данных остается актуальным и при использовании SQL Server. В системе безопасности SQL Server выделяется два уровня: сервера и базы данных. В общем случае принять рассматривать следующие три типа безопасности со стороны сервера в SQL Server. Стандартная безопасность, при которой система отвечает за администрирование серверной части приложения. Для обеспечения безопасности данных в SQL Server со стороны сервера используются следующие средства обеспечения безопасности: - идентификация (identification) выполняется присвоением субъекту какого-либо формального идентификатора, например имени учётной записи (login) и пароля (password); - аутентификация (authentication) подлинности пользователя с помощью пароля; - создание учетных записей (login); - использование встроенных ролей сервера (fixed server roles). Интегрированная безопасность данных в SQL Server осуществляется средствами сетевых версий операционной системы Windows. В этом случае для обеспечения безопасности используются списки контроля доступа ACL (Access Control List). Основным достоинством этого подхода при администрировании приложений, функционирующих в SQL Server, является то, что пользователь получает доступ ко всем ресурсам домена операционной системы Windows при задании пароля и использовании методов шифрования при передаче данных по сети. При таком методе администрирования серверной части приложения, функционирующего в SQL Server, при регистрации на сервере операционной системы одновременно осуществляется и автоматическое подключение к SQL Server, которое называется доверительной регистрацией. При доверительной регистрации пользователя в SQL Server он может подключиться к базе данных одним из следующих способов: 1) зарегистрированный пользователь при идентификации (опознании) имени; 2) стандартный пользователь с именем Guest; 3) системный администратор Windows – SA (System Administrator). В стандартном режиме обеспечения безопасности данных контроль и управление учетными записями, используемыми для доступа к серверу, осуществляет SQL Server. Кроме того, он самостоятельно выполняет аутентификацию пользователей, хранит все данные о правах доступа, именах и паролях. При использовании стандартного режима в SQL Server применяются два уровня доступа пользователей: первый уровень – учетные записи, второй – записи пользователей. Учетные записи используются для подключения к серверу самого SQL Server, а область их действия распространяется на весь сервер. Учетная запись в SQL Server ассоциируется с паролем, позволяющем получить доступ к любой базе данных сервера. Записи пользователя служат для контроля за правами доступа к определенным ресурсам сервера, например, таблицы, хранимые процедуры, триггеры и т. д. Записи пользователя могут быть созданы в одной или нескольких базах данных одновременно, но независимо друг от друга. Права доступа (permission) представляют собой разрешение на получение доступа к определенному объекту базы данных, в частности, таблице, представлению и т.д. Они разрешают выполнять пользователям те или иные операции с объектами базы данных. Для каждого из объектов базы данных имеется несколько видов прав доступа. Права доступа ко всем объектам базы данных автоматически предоставляются владельцу или разработчику базы данных. Наибольшими правами доступа обладают следующие категории пользователей: - системный администратор (SA) имеет все права доступа ко всем объектам во всех базах данных сервера; - владелец базы данных (Database Owner) имеет все права доступа ко всем объектам его базы данных. Права доступа к объекту (objectpermission) представляют собой разрешения на выполнение конкретных действий над объектами базы данных, например, таблицами, представлениями, запросами, хранимыми процедурами. Поддерживаются два вида учётных записей ( имён входа) подключения к серверу – учётные записи сервера, создаваемые на основании учётных записей операционной системы, и учётные записи сервера, создаваемые для прямого подключения к серверу. Учётную запись можно создать либо с помощью SQL Server Management Studio, либо командой create login. 1. Учётная запись входа SQLServer Сами по себе имена входа не имеют доступа к базам данных SQL Server, они лишь позволяют подключиться к SQL Server. Эти имена входа дают разрешение на выполнение некоторых действий. Эти действия встроены в такие серверные роли как sysadmin, diskadmin, dbcreaster, securityadmin. Sysadmin – разрешено выполнять любые действия в SQL Server. Все администраторы Windows являются членами фиксированной серверной роли sysadmin. Dbcreaster– разрешено создание, удаление, изменение и восстановление любой базы данных. Diskadmin – предназначена для управления дисковыми файлами. Securityadmin – разрешено управлять именами входа и их свойствами. Создание учётной записи сервера на основании учётной записи операционной системы: |