Министерство образования и науки РФ ФГБОУ ВО Алтайский государственный университет Физико-технический факультет Кафедра вычислительной техники и электроники Базы данных. Open Server Panel. Методические указания Барнаул 2018 Базы данных. Open Server Panel. 1. Вспомогательные материалы 1.1. Open Server Panel (OSPanel) Open Server Panel — это портативная серверная платформа и программная среда, созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий. Программный комплекс имеет богатый набор серверного программного обеспечения, удобный, многофункциональный продуманный интерфейс, обладает мощными возможностями по администрированию и настройке компонентов. Платформа широко используется с целью разработки, отладки и тестирования веб-проектов, а так же для предоставления веб-сервисов в локальных сетях. Хотя изначально программные продукты, входящие в состав комплекса, не разрабатывались специально для работы друг с другом, такая связка стала весьма популярной среди пользователей Windows, в первую очередь из-за того, что они получали бесплатный комплекс программ с надежностью на уровне Linux серверов.. Идея проекта Open Server заключается в независимости от рабочего места. Обычный разработчик часто зависит от конкретного компьютера, от операционной системы и программ установленных на этом компьютере, и даже от дома или офиса где находится этот компьютер. Open Server призван освободить вас и ваши программы от подобных неудобств, он сделает вас по-настоящему свободным и независимым разработчиком. Вы получите набор портативных (не требующих установки) программ на все случаи жизни. И конечно же вы получите мощную серверную платформу, где вы сможете комфортно заниматься разработкой веб-проектов. Вам больше не нужно думать за каким компьютером вы работаете, за своим, на работе или используете ноутбук коллеги. Вам больше не нужно тратить время на поиск и установку программ если пришлось переустановить Windows — нужно только подключить внешний диск или флэшку с Open Server и все ваши программы тут как тут! Если Open Server необходим вам только как замена таким программам как Denwer, Vertrigo, Xampp и т.д., то вы можете смело воспользоваться версией Mini, которая содержит только серверную часть платформы. Сайт проекта: https://ospanel.io/ 1.2. phpMyAdmin phpMyAdmin – это приложение, написанное на PHP и обеспечивающее полноценную, в том числе удаленную, работу с базами данных MySQL через браузер. Так как phpMyAdmin позволяет во многих случаях обойтись без непосредственного ввода команд SQL, то работа с 2 базами данных становится вполне посильной задачей даже для человека весьма поверхностно знакомого с MySQL. Активное использование MySQL в веб-программировании обусловило его актуальность, а интуитивно понятный интерфейс в совокупности с широкой функциональностью и поддержкой более 60 языков (в т.ч. и русского) обеспечило ему популярность среди веб-разработчиков. phpMyAdmin по-русски: http://php-myadmin.ru Страница проекта: http://phpmyadmin.net 1.3. Создание таблиц В простейшем случае синтаксис создания таблицы выглядит следующим образом: CREATE TABLE <имяТаблицы> (<список имен столбцов (атрибутов) и их типов>); Например, CREATE TABLE l5_test (c1 NUMERIC, c2 CHAR(35)); В таблице 1 описаны типы данных при создании таблиц БД. Таблица 1 # 1 2 Тип данных Использование Диапазоны TINYINT Очень маленькое Диапазон числа со знаком от –128 до 127. Диапазон числа целое число без знака (unsigned) от 0 до 255. SMALLINT Маленькое целое Диапазон числа со знаком от –32768 до 32767. Диапазон число числа без знака (unsigned) от 0 до 65535. 3 MEDIUMIN Среднее T число 4 INT или Целое число INTEGER 5 целое Диапазон числа со знаком от –8388608 до 8388607. Диапазон числа без знака (unsigned) от 0 до 16777215. Диапазон числа со знаком от –2147483648 до 2147483647. Диапазон числа без знака (unsigned) от 0 до 4294967295. BIGINT Большое число FLOAT Малое (одинарной точности) число с плавающей запятой. Не может быть числом без 6 целое Диапазон числа со знаком от –9223372036854775808 до 9223372036854775807. Диапазон числа без знака (unsigned) от 0 до 18446744073709551615. Диапазоны от –3.402823466E+38 до –1.175494351E-38, 0 и 1.175494351E-38 до 3.402823466E+38. Тип FLOAT обычно используется для представления приблизительных числовых типов данных. Стандарт ANSI/ISO SQL92 допускает факультативное указание точности (но не интервала порядка числа) в битах в 3 # Тип данных Использование знака Диапазоны круглых скобках, следующих за ключевым словом FLOAT. Реализация MySQL также поддерживает это факультативное указание точности. При этом если ключевое слово FLOAT в обозначении типа столбца используется без указания точности, MySQL выделяет 4 байта для хранения величин в этом столбце. Возможно также иное обозначение, с двумя числами в круглых скобках за ключевым словом FLOAT. В этом варианте первое число по-прежнему определяет требования к хранению величины в байтах, а второе число указывает количество разрядов после десятичной запятой, которые будут храниться и показываться (как для типов DECIMAL и NUMERIC). Если в столбец подобного типа попытаться записать число, содержащее больше десятичных знаков после запятой, чем указано для данного столбца, то значение величины при ее хранении в MySQL округляется для устранения излишних разрядов.. Диапазоны от -1.7976931348623157E+308 до 2.2250738585072014E-308, 0 и от 2.2250738585072014E308 до 1.7976931348623157E+308. 7 Для типов REAL и DOUBLE PRECISION не предусмотрены установки точности. MySQL воспринимает Нормальное DOUBLE как синоним типа DOUBLE PRECISION - это (двойной DOUBLE, точности) число еще одно расширение стандарта ANSI/ISO SQL92. Но, вопреки требованию стандарта, указывающему, что с плавающей DOUBLE точность для REAL меньше, чем для DOUBLE PRECISION запятой. Не может быть числом без PRECISION, в MySQL оба типа реализуются как 8байтовые числа с плавающей точкой удвоенной точности знака (если не установлен ``ANSI-режим''). Чтобы обеспечить максимальную совместимость, в коде, требующем хранения приблизительных числовых величин, должны использоваться типы FLOAT или DOUBLE PRECISION без указаний точности или количества десятичных знаков. 8 Действительные DECIMAL(n числа с ,p), фиксированной NUMERIC(n запятой, n-всего знаков, p- после ,p) запятой Начиная с 5.03, в MySQL появилась новая библиотека для арифметики чисел с фиксированной точкой и изменился подход к хранению таких чисел. Теперь целая часть и часть после точки хранятся как 2 отдельных, целых числа. 4 # Тип данных Использование Диапазоны Дата Дата в диапазоне от «1000-01-01» до «9999-12-31». MySQL хранит поле типа DATE в виде «YYYY-MM-DD» (ГГГГММ-ДД). 9 DATE DATETIME Дата и время Допустимые диапазоны от «1000-01-01 00:00:00» до «999912-31 23:59:59». MySQL хранит поле типа DATETIME в виде «YYYY-MM-DD HH:MM:SS» (ГГГГ-ММ-ДД ЧЧММ-СС). TIMESTAM Дата и время P Диапазон от «1970-01-01 00:00:00» до, примерно, 2037 года. MySQL может хранить поле типа TIMESTAMP в видах «YYYYMMDDHHMMSS» (TIMESTAMP(14)), «YYMMDDHHMMSS» (TIMESTAMP(12)), «YYYYMMDD» (TIMESTAMP(8)) и др. 10 11 12 Диапазон от «-838:59:59» до «838:59:59». MySQL хранит поле TIME в виде «HH:MM:SS», но позволяет присваивать значения столбцам TIME с использованием либо строки или числа. TIME Время YEAR Год в 2- или 4Если вы используете 4 цифра, то допустимые значения хцифровом виде 1901-2155, и 0000. Если 2 цифры, то 1970-2069 (70-69). (4 цифры поMySQL хранит значения поля YEAR в формате «YYYY». умолчанию) CHAR Строка фиксированной длины, которая справа дополняются пробелами до указанной длины, при хранении VARCHAR Строка переменной длины. Диапазон длины от 1 до 255 символов. Значения Примечание: VARCHAR сортируются и сравниваются без учета конечные регистра, если не установлен флаг BINARY. пробелы удаляются при 13 14 15 Диапазон длины от 1 до 255 символов. Завершающие пробелы удаляются, когда значение извлекается. Значения CHAR сортируются и сравниваются без учета регистра в зависимости от кодировки по умолчанию, если не установлен флаг BINARY. 5 # Тип данных Использование Диапазоны сохранении (в отличие от спецификации ANSI SQL). 16 TINYBLOB, TINYTEXT BLOB или ТЕХТ с максимальной длиной 255 (2^8 - 1) символов. 17 BLOB, TEXT BLOB или ТЕХТ с максимальной длиной 65535 (2^16 - 1) символов. 18 MEDIUMBL OB, MEDIUMTE XT BLOB или ТЕХТ с максимальной длиной 16777215 (2^24 1) символов. LONGBLOB , LONGTEXT BLOB или ТЕХТ с максимальной длиной 4294967295 (2^32 - 1) символов. ENUM Перечисление Строка-объект, который может принимать только одно значение, выбирается из списка значений «значение 1», «значение 2» или NULL. ENUM максимум может иметь 65535 различных значений. Набор Строка-объект, который может принимать ноль и более значений, каждому из которых должно быть выбрано одно из списка значений («значение 1», «значение 2», …) Поле SET может иметь максимум 64 варианта значений. 19 20 21 SET Расширенный синтаксис: CREATE TABLE имя_таблицы ({column|[table_constraint]},[ON COMMIT{DELETE|PRESERVE}ROWS]); column определяется как: имя_поля {domain | datatype [size]} [column_constraint…][ DEFAULT default_value ] [ COLLATE collate_value ] Фраза ON COMMIT может быть указана только для временных таблиц. По умолчанию для временных таблиц подразумевается фраза ON COMMIT DELETE ROWS. После имени таблицы в круглых скобках через запятую указывается список полей (называемых также столбцами) и ограничений. Каждое поле имеет имя и тип (datatype). Тип может быть определен как любой допустимый тип языка SQL или как домен. 6 Фраза DEFAULT определяет значение по умолчанию. Это значение имеет более высокий приоритет, чем значение по умолчанию, указанное в домене (если вместо типа данных используется домен). Ограничения для таблицы (table_constraint) и ограничения для столбца (column_constraint), называемые также ограничениями целостности, накладывают определенные условия на вводимые в таблицу данные. Ограничения для столбца указываются непосредственно после описания столбца, а ограничения для таблицы – через запятую после описания любого столбца. В стандарте SQL92 ограничения должны иметь имена, которые генерируются СУБД. В наиболее продвинутых БД, в частности Oracle, доступ к ограничениям возможен посредством служебных таблиц словаря базы данных и дополнительного набора команд языка SQL. Ограничения для столбца могут указываться следующими фразами: NOT NULL – в любой добавляемой или изменяемой строке столбец всегда должен иметь значение, отличное от NULL; UNIQUE – все значения столбца должны быть уникальны; PRIMARY KEY – устанавливает один столбец как первичный ключ и одновременно подразумевает, что все значения столбца будут уникальны; CHECK (condition) – указываемое в скобках условие использует для сравнения значение столбца и возвращает TRUE, FALSE или UNKNOWN. Если при попытке выполнения SQL-оператора возвращаемое значение равно FALSE, то оператор выполнен не будет. column_constraint определяется как: [CONSTRAINT constraint_name]{ NOT NULL } | { PRIMARY KEY } | UNIQUE | { REFERENCES имя_таблицы [(имя_поля .,…) ] [ref_specification]} | { CHECK (condition) } | [ INITIALLY DEFFERED | INITIALLY IMMEDIATE ] [[ NOT ] DEFFERABLE ] ref_specification определяется как: [MATCH {FULL | PARTIAL } ] [ ON UPDATE { CASCADE | SET NULL | SET DEFAULT | NO ACTION } ] [ ON DELETE { CASCADE | SET NULL | SET DEFAULT | NO ACTION } ] Ограничения для таблицы могут указываться следующими фразами: CHECK (condition) – указываемое в скобках условие использует для сравнения значение столбца и возвращает TRUE, FALSE или UNKNOWN. Если при попытке 7 выполнения SQL-оператора возвращаемое значение равно FALSE, то оператор выполнен не будет; FOREIGN KEY (fields_list) – это ограничение по внешнему ключу аналогично ограничению REFERENCES для столбцов и гарантирует, что все значения, указанные во внешнем ключе будут соответствовать значениям родительского ключа, обеспечивая ссылочную целостность. Следует отметить, что типы данных столбцов, используемых в этом ограничении, должны совпадать, а типы таблиц (постоянная базовая таблица, глобальная локальная временная таблица, локальная временная таблица) родительского и внешнего ключа - соответствовать друг другу. Стандарт SQL92 позволяет устанавливать режим контроля ограничений как перед выполнением каждого SQL-оператора, так и в конце текущей транзакции. В последнем случае допускается нарушение ограничения целостности внутри транзакции. Этот режим очень полезен для внесения данных в таблицы, связанные ограничением REFERENCES. Объявление ограничений имеет в стандарте SQL92 следующее формальное описание: [CONSTRAINT constraint_name ]{ PRIMARY KEY (имя_поля .,…) } | { UNIQUE (имя_поля .,…) } | { FOREIGN KEY (имя_поля .,…) } { REFERENCES имя_таблицы [(имя_поля .,…)] [ref_specification] } | { CHECK (condition) } [[ NOT ] DEFFERABLE ] ref_specification определяется как: [MATCH {FULL | PARTIAL } ] [ ON UPDATE { CASCADE | SET NULL | SET DEFAULT | NO ACTION } ] [ ON DELETE { CASCADE | SET NULL | SET DEFAULT | NO ACTION } ] Ссылочная спецификация (ref_specification) определяет для ограничений FOREIGN KEY и REFERENCES тип совпадения и действия, выполняемые при внесении изменений в родительский ключ. Совпадение может быть определено как MATCH FULL (полное совпадение) или MATCH PARTIAL (частичное совпадение). При полном совпадении значения родительского и внешнего ключей должны полностью совпадать, или все значения внешнего ключа должны быть NULL. При частичном совпадении некоторые значения внешнего ключа могут быть равны NULL и значения каждой строки внешнего ключа, отличные от NULL, должны совпадать со значениями родительского ключа. Если тип совпадения не указан, то предполагается что любое значение внешнего ключа присутствует в родительском ключе, но при этом во внешнем ключе допускаются значения NULL (частично или полностью). 8 1.4. Изменение структуры таблиц После создания таблицы ее структуру можно изменять с помощью оператора ALTER TABLE. Необходима некоторая осторожность с этим оператором, поскольку при его использовании возможна потеря данных. Добавление или удаление столбца осуществляется просто: ALTER TABLE MyTable ADD C1 NUMBER(4); ALTER TABLE MyTable DROP COLUMN C1; Первый оператор добавляет столбец с именем С1 и присваивает ему тип числа длиной четыре символа. Второй оператор удаляет только что созданный столбец. Обратите внимание, что при создании столбца клю­чевое слово COLUMN опускается. Столбец можно удалить в любой момент. При этом, однако, все данные из этого столбца будут потеряны. Также в любой момент можно добавить пустой или необязательный (NULL) столбец. Обязательный столбец можно добавить, указав значение по умолчанию. Предположим, например, что добавляется столбец С1 в таблицу Т1: ALTER TABLE Т1 ADD (C1 CHAR(30) DEFAULT ‘EMPTY’ NOT NULL); Либо сначала нужно создать его в таблице как необязательный, заполнить все его строки данными, а затем объявить его обязательным при помощи конструкции MODIFY. После того как этот столбец будет заполнен во всех строках таблицы, можно выполнить следующий оператор: ALTER TABLE Т1 MODIFY C1 NOT NULL; Теперь столбец C1 будет обязательно требовать присвоения значения. При модификации столбца можно увеличивать количество символов в текстовых столбцах и количество цифр в числовых столбцах. Также можно свободно увеличивать или уменьшать количество цифр после десятичной точки. Если данный столбец является пустым во всех строках, можно уменьшать длину текстовых и числовых данных, а также менять тип данных столбца. Аналогично можно добавлять и изменять ограничения ALTER TABLE T1 ADD CONSTRAINT T1_PK PRIMARY KEY (C1); Здесь в таблицу T1 добавляется ограничение с именем T1_PK на столбец C1 – он становится первичным ключом. 1.5. Операторы модификации данных Существуют следующие операторы модификации данных в таблицах: оператор DELETE INSERT функция Удаление записей из таблицы БД Добавление записей (строк) в таблицу БД 9 UPDATE Обновление данных в столбце таблицы БД 1.5.1. Вставка данных INSERT [INTO] tbl_name [(col_name,...)] VALUES (expression,...), (...),...[ ON DUPLICATE KEY UPDATE col_name=expression, ... ] или INSERT [INTO] tbl_name [(col_name,...)] SELECT ... или INSERT [INTO] tbl_name SET col_name=(expression | DEFAULT), ...[ ON DUPLICATE KEY UPDATE col_name=expression, ... ] Оператор INSERT вставляет новые строки в существующую таблицу. Форма данной команды INSERT ... VALUES вставляет строки в соответствии с точно указанными в команде значениями. Форма INSERT ... SELECT вставляет строки, выбранные из другой таблицы или таблиц. Форма INSERT ... VALUES со списком из нескольких значений поддерживается в версии MySQL 3.22.5 и более поздних. Синтаксис выражения col_name=expression поддерживается в версии MySQL 3.22.10 и более поздних. tbl_name задает таблицу, в которую должны быть внесены строки. Столбцы, для которых заданы величины в команде, указываются в списке имен столбцов или в части SET: Если не указан список столбцов для INSERT ... VALUES или INSERT ... SELECT, то величины для всех столбцов должны быть определены в списке VALUES() или в результате работы SELECT. Если порядок столбцов в таблице неизвестен, для его получения можно использовать DESCRIBE tbl_name. Любой столбец, для которого явно не указано значение, будет установлен в свое значение по умолчанию. Например, если в заданном списке столбцов не указаны все столбцы в данной таблице, то не упомянутые столбцы устанавливаются в свои значения по умолчанию. Вы также можете использовать ключевое слово DEFAULT для того, чтобы установить столбец в его значение по умолчанию (новшество в MySQL 4.0.3). Это облегчает написание INSERT, присвающим значения всем, за исключением одного-двух, столбцам, т.к. такой ситнаксис позволяет вам обойтись без указания списка столбцов, которые оператор INSERT должен обновить. В MySQL всегда предусмотрено значение по умолчанию для каждого поля. Это требование ``навязано'' MySQL, чтобы обеспечить возможность работы как с таблицами, поддерживающими транзакции, так и с таблицами, не поддерживающими их. Выражение expression может относится к любому столбцу, который ранее был внесен в список значений. Например, можно указать следующее: INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2); Но нельзя указать: INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15); 10 Если указывается ключевое слово LOW_PRIORITY, то выполнение данной команды INSERT будет задержано до тех пор, пока другие клиенты не завершат чтение этой таблицы. В этом случае данный клиент должен ожидать, пока данная команда вставки не будет завершена, что в случае интенсивного использования таблицы может потребовать значительного времени. В противоположность этому команда INSERT DELAYED позволяет данному клиенту продолжать операцию сразу же. Следует отметить, что указатель LOW_PRIORITY обычно не используется с таблицами MyISAM, поскольку при его указании становятся невозможными параллельные вставки. Если в команде INSERT со строками, имеющими много значений, указывается ключевое слово IGNORE, то все строки, имеющие дублирующиеся ключи PRIMARY или UNIQUE в этой таблице, будут проигнорированы и не будут внесены. Если не указывать IGNORE, то данная операция вставки прекращается при обнаружении строки, имеющей дублирующееся значение существующего ключа. Количество строк, внесенных в данную таблицу, можно определить при помощи функции C API mysql_info(). Если вы указываете ON DUPLICATE KEY UPDATE (новшество в MySQL 4.1.0), и производится вставка строки, которая вызывает ошибку дублирующегося первичного (PRIMARY) или уникального (UNIQUE) ключа, то вполняется UPDATE старой строки. Например: INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; Если a определяется как UNIQUE и уже содержит 1, то тогда вышеуказанная команда будет аналогична следующей: UPDATE table SET c=c+1 WHERE a=1; Внимание: если столбец b также является уникальным ключем, то UPDATE переписывается как: UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1; и если несколько записей соответствуют a=1 OR b=2 только одна запись будет обновлена! В общем случае, следует избегать использования ON DUPLICATE KEY на таблицах со множеством уникальных (UNIQUE) ключей. Например, таблица имеет следующую структуру: T1(id BIGINT,name VARCHAR(100),price NUMERIC(8,2) DEFAULT 99.99) INSERT into T1 VALUES (1,’ковер’,4500) INSERT into T1 VALUES (2,’салфетка’) INSERT into T1 (id,name) VALUES (2,’салфетка’) INSERT into T1 SET id=1,name=’ковер’,price=4500 INSERT into T1 SET id=2,name=’салфетка’ 11 1.5.2. Модификация данных UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT rows] или UPDATE tbl_name [, tbl_name ...] SET col_name2=expr2 ...] [WHERE where_definition] col_name1=expr1 [, Оператор UPDATE обновляет столбцы в соответствии с их новыми значениями в строках существующей таблицы. В выражении SET указывается, какие именно столбцы следует модифицировать и какие величины должны быть в них установлены. В выражении WHERE, если оно присутствует, задается, какие строки подлежат обновлению. В остальных случаях обновляются все строки. Если задано выражение ORDER BY, то строки будут обновляться в указанном в нем порядке. Если доступ к столбцу из указанного выражения осуществляется по аргументу tbl_name, то команда UPDATE использует для этого столбца его текущее значение. Например, следующая команда устанавливает столбец age в значение, на единицу большее его текущей величины: UPDATE persondata SET age=age+1; Значения команда UPDATE присваивает слева направо. Например, следующая команда удваивает значение в столбце age, затем инкрементирует его: UPDATE persondata SET age=age*2, age=age+1; Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его. Команда UPDATE возвращает количество фактически измененных строк. В версии MySQL 3.22 и более поздних функция C API mysql_info() возвращает количество строк, которые были найдены и обновлены, и количество предупреждений, имевших место при выполнении UPDATE. В версии MySQL 3.23 можно использовать LIMIT #, чтобы убедиться, что было изменено только заданное количество строк. Начиная с версии MySQL 4.0.4 также можно выполнять UPDATE для множества таблиц: UPDATE items,month items.id=month.id; SET items.price=month.price WHERE Обратите внимание: ORDER BY или LIMIT не применяются для многотабличных обновлений. 12 1.5.3. Удаление записей DELETE FROM tbl_name [WHERE where_definition] Удаляет записи, отвечающие условию «WHERE», из таблицы tbl_name. Если условие «WHERE» не указать – удалит все записи. Кстати, для очистки таблицы (удаления всех записей) существует более быстрая относительно времени выполнения команда TRUNCATE TABLE tbl_name 2. Задания При оформлении отчета указывайте используемые команды, при необходимости вставляйте скриншоты. 2.1. Установка OSPanel 2.1.1. Возьмите у преподавателя дистрибутив либо скачайте самостоятельно, запустите установочный файл OSPanel: open_server_5_2_8_basic.exe На запрос, куда распаковать, укажите доступный для записи каталог, например c:\temp Дождитесь окончания установки. 2.1.2. Запустите OSPanel 13 2.1.3. В трее найдите иконку OSPanel, нажмите на неё правой кнопкой мыши, выберите «Настройки». В открывшемся окне на вкладке «Модули» под надписью «MySQL/MariaDB» выберите «MariaDB-10.2» («MariaDB-10.2-x64»). Затем нажмите кнопку «Сохранить», потом «Закрыть». 2.1.4. Запустите OSPanel, выбрав в меню «Запустить». Цвет иконки в трее должен смениться на зелёный. Если запуск не удался (цвет иконки стал красным), попробуйте сменить в настройках версию MariaDB на 10.1. Если выдается ошибка, связанная с файлом hosts, то в Настройках OSPanel на вкладке Сервер поставьте галочку напротив «Не вносить изменения в HOSTS файл» 14 2.2. Запуск PhpMyAdmin 2.2.1. После успешного запуска OSPanel выберите в меню через иконку в трее «Дополнительно-PhpMyAdmin». Откроется окно в браузере, введите в поле «Пользователь» root и нажмите кнопку «Вперёд». На открывшейся странице выберите вкладку SQL 2.3. Создание базы данных. 2.3.1. Для того, чтобы создать базу данных, в поле «Выполнить SQL-запрос(ы) на сервере "127.0.0.1"» введите команду* create database ivanov; *вместо ivanov подставьте свою фамилию в транслитерации. 15 В отчёте по лабораторной приведите запрос и результат выполнения команды (скриншот). 2.3.2. Ваша новая БД должна появиться в списке баз в левой колонке на странице. Выберите её, щёлкнув по ней левой кнопкой мыши. Работа со структурой таблиц. 2.4. 2.4.1. Для того, чтобы создать таблицу, в поле «Выполнить SQL-запрос(ы) на сервере "127.0.0.1"» необходимо ввести команду «create table (описание столбцов)» (см. п. 1.3). Создайте таблицу с именем l2t1 в БД из п.2.3 с тремя столбцами в соответствии с вашим вариантом по Таблице 2. Таблица 2 Вариант тип столбца 1 тип столбца 2 тип столбца 3 Вариант тип столбца 1 тип столбца 2 тип столбца 3 1 TINYINT FLOAT DATE 31 DATETIME VARCHAR MEDIUMBLOB 2 SMALLINT DOUBLE DATETIME 32 TIMESTAMP TINYBLOB LONGBLOB 3 MEDIUMINT NUMERIC(n,p) TIMESTAMP 33 TIME BLOB ENUM 4 INTEGER DATE TIME 34 YEAR MEDIUMBLOB SET 5 BIGINT DATETIME YEAR 35 CHAR LONGBLOB TINYINT 6 FLOAT TIMESTAMP CHAR 36 VARCHAR ENUM SMALLINT 7 DOUBLE TIME VARCHAR 37 TINYBLOB SET MEDIUMINT 8 NUMERIC(n,p) YEAR TINYBLOB 38 BLOB TINYINT INTEGER 9 DATE CHAR BLOB 39 MEDIUMBLOB SMALLINT BIGINT 10 DATETIME VARCHAR MEDIUMBLOB 40 LONGBLOB MEDIUMINT FLOAT 11 TIMESTAMP TINYBLOB LONGBLOB 41 ENUM INTEGER DOUBLE 12 TIME BLOB ENUM 42 SET BIGINT NUMERIC(n,p) 13 YEAR MEDIUMBLOB SET 43 TINYINT FLOAT DATE 14 CHAR LONGBLOB TINYINT 44 SMALLINT DOUBLE DATETIME 15 VARCHAR ENUM SMALLINT 45 MEDIUMINT NUMERIC(n,p) TIMESTAMP 16 TINYBLOB SET MEDIUMINT 46 INTEGER DATE TIME 17 BLOB TINYINT INTEGER 47 BIGINT DATETIME YEAR 18 MEDIUMBLOB SMALLINT BIGINT 48 FLOAT TIMESTAMP CHAR 19 LONGBLOB MEDIUMINT FLOAT 49 DOUBLE TIME VARCHAR 20 ENUM INTEGER DOUBLE 50 NUMERIC(n,p) YEAR TINYBLOB 21 SET BIGINT NUMERIC(n,p) 51 DATE CHAR BLOB 22 TINYINT FLOAT DATE 52 DATETIME VARCHAR MEDIUMBLOB 23 SMALLINT DOUBLE DATETIME 53 TIMESTAMP TINYBLOB LONGBLOB 16 24 MEDIUMINT NUMERIC(n,p) TIMESTAMP 54 TIME BLOB ENUM 25 INTEGER DATE TIME 55 YEAR MEDIUMBLOB SET 26 BIGINT DATETIME YEAR 56 CHAR LONGBLOB TINYINT 27 FLOAT TIMESTAMP CHAR 57 VARCHAR ENUM SMALLINT 28 DOUBLE TIME VARCHAR 58 TINYBLOB SET MEDIUMINT 29 NUMERIC(n,p) YEAR TINYBLOB 59 BLOB TINYINT NUMERIC(n,p) 30 DATE CHAR BLOB 60 MEDIUMBLOB SMALLINT DATE В отчёте по лабораторной приведите запрос и результат выполнения команды (скриншот), а также скриншот со структурой таблицы (в левой панели выделите таблицу, а в правой щёлкните по вкладке «Структура»). 2.4.2. Удалите созданную таблицу l2t1 командой drop table l2t1; 2.4.3. Создайте таблицу с именем использованием ограничений: l2t2 аналогичную предыдущей, для столбца 1 установите ограничение первичного ключа, для столбца 2 - чтобы он был обязателен для заполнения, для столбца 3 установите значение по умолчанию на ваш выбор. но с В отчёте по лабораторной приведите запрос и результат выполнения команды (скриншот), а также скриншот со структурой таблицы (в левой панели выделите таблицу, а в правой щёлкните по вкладке «Структура»). 2.4.4. Создайте таблицу с именем использованием ограничений: l2t3 аналогичную предыдущей, для столбца 3 – уникальность значения, столбец 1 – внешний ключ на столбец1 в таблице l2t2. но с В отчёте по лабораторной приведите запрос и результат выполнения команды (скриншот), а также скриншот вкладки «Дизайнер» вашей БД (в левой панели выделите БД, а в правой щёлкните по вкладке «Дизайнер»), на нём должна отобразиться связь ваших таблиц. 2.4.5. Добавьте в таблицу l2t3 столбец, названный вашей фамилией, и типом на ваш выбор, но отличным от других столбцов, с выбранным вами значением по умолчанию. Воспользуйтесь для этого командой alter table. В отчёте по лабораторной приведите запрос и результат выполнения команды (скриншот). 2.4.6. Удалите в таблице l2t3 2-й столбец, добавьте ограничение уникальности на 1-й столбец, удалите ограничение внешнего ключа. 17 В отчёте по лабораторной приведите тексты запросов и скриншот вкладки «Дизайнер» вашей БД. 2.4.7. Создайте таблицу l2t4 со столбцом-первичным ключом с автоматическим счетчиком. Используя конструкцию ALTER TABLE добавьте в таблицу l2t4 столбцы с типами, аналогичными типам первичных (альтернативных) ключей таблиц l2t2 и l2t3. Для новых столбцов добавьте ограничения внешнего ключа в соответствии с номером вашего варианта по Таблице 3. Таблица3 Вариант 1 21 41 2 22 42 3 23 43 4 24 44 5 25 45 6 26 46 7 27 47 8 28 48 9 29 49 10 30 50 11 31 51 12 32 52 13 33 53 14 34 54 15 35 55 16 36 56 17 37 57 18 38 58 19 39 59 20 40 60 Параметр 1 ON DELETE RESTRICT ON DELETE CASCADE ON DELETE SET NULL ON DELETE NO ACTION ON DELETE SET DEFAULT ON UPDATE RESTRICT ON UPDATE CASCADE ON UPDATE SET NULL ON UPDATE NO ACTION ON UPDATE SET DEFAULT ON DELETE RESTRICT ON DELETE CASCADE ON DELETE SET NULL ON DELETE NO ACTION ON DELETE SET DEFAULT ON UPDATE RESTRICT ON UPDATE CASCADE ON UPDATE SET NULL ON UPDATE NO ACTION ON UPDATE SET DEFAULT Параметр 2 ON UPDATE SET DEFAULT ON UPDATE NO ACTION ON UPDATE SET NULL ON UPDATE CASCADE ON UPDATE RESTRICT ON DELETE SET DEFAULT ON DELETE NO ACTION ON DELETE SET NULL ON DELETE CASCADE ON DELETE RESTRICT ON UPDATE NO ACTION ON UPDATE SET NULL ON UPDATE CASCADE ON UPDATE RESTRICT ON DELETE SET DEFAULT ON DELETE NO ACTION ON DELETE SET NULL ON DELETE CASCADE ON DELETE RESTRICT ON DELETE RESTRICT В отчёте по лабораторной приведите тексты запросов и скриншот вкладки «Дизайнер» вашей БД. 2.5. Составные ключи. 2.5.1. Создайте таблицу с именем l2t5 с типами столбцов из таблицы 2 для номера варианта=НомерВашегоВарианта+7. Группе из первого и третьего столбцов назначьте ограничение первичного ключа. Создайте таблицу l2t6 с внешним ключом на таблицу l2t5. В отчёте по лабораторной приведите выполненные запросы скриншот вкладки «Дизайнер» вашей БД. 18 2.6. Работа с данными в таблицах 2.6.1. Составьте и выполните запросы для добавления по 3 записи в таблицы l2t2 и l2t3. 2.6.2. Составьте и выполните запрос для добавления записи в таблицу l2t2, чтобы для 3-го столбца использовалось значение по умолчанию. 2.6.3. Составьте и выполните запрос добавления записей в таблицу l2t3 как выборки записей из таблицы l2t2 – воспользуйтесь командой INSERT INTO l2t3 SELECT (столбец1,столбец3) FROM l2t2; Тексты запросов п. 2.6.1-2.6.3 внесите в отчёт, добавьте скриншоты данных таблиц l2t2 и l2t3. 2.6.4. Добавьте несколько записей в таблицу l2t4. Сделайте скриншот содержимого таблицы l2t4. Удалите/обновите родительские записи в таблицах l2t2, l2t3, чтобы убедиться в работе ограничений внешнего ключа ON UPDATE, ON DELETE. Сделайте скриншот содержимого таблицы l2t4 после выполнения запросов. Тексты запросов и скриншоты внесите в отчет. 2.6.5. Составьте и выполните запрос для изменения всех записей в таблице l2t3. 2.6.6. Составьте и выполните запрос для изменения одной записи в таблице l2t3 в двух вариантах – 1) при помощи LIMIT, 2) при помощи условия выборки WHERE. 2.6.7. Составьте и выполните запрос для удаления одной записи в таблице l2t3, используя условие выборки. Тексты запросов п. 2.6.5-2.5.7 внесите в отчёт, добавьте скриншот данных таблицы l2t3. 2.7. Резервное копирование 2.7.1. Для сохранения ваших данных достаточно экспортировать данные вашей БД. Для этого в левой панели PhpMyAdmin выберите вашу БД, а в верхнем меню «Экспорт». Нажмите «OK», начнется скачивание файла выгрузки вашей БД. Приведите в отчете скриншот куска скаченного файла. Результаты оформить в виде отчёта по лабораторной 19