Лабораторная работа №28 Организация доступа к базе данных

Задачи


Задание 1

Методика выполнения:

  1. Открыть web интерфейс PhpMyAdmin в браузере по адресу:
    http://user-ks-№.304.rus/pma (например http://user-ks-1.304.rus/pma)

  2. Подключиться к базе данных используя имя пользователя и пароль “1”

  3. Выбрать базу данных в списке слева (имя базы данных совпадает с именем пользователя)

  4. Создать таблицу lab1_1, состоящую из двух полей: Имя (name тип Varchar) и Возраст (age тип INT)


  5. На экране заполнения данных о полях нажатие кнопки “Предпросмотр SQL” позволит получить текст SQL-запроса на создание таблицы, который может быть использован в других заданиях.

  6. Убедиться что слева в списке таблиц базы данных появилась созданная таблица с необходимыми полями.

  7. Добавим данные в таблицу при помощи вкладки “Вставить” (Например ‘Ivanov’,30).
    После вставки будет показан текст SQL-запроса на добавление данных, который может быть использован в других заданиях.
    Проконтролировать добавление данных выбрав таблицу в списке слева.



  8. Изменить параметры поля таблицы. Для этого выбрать его в списке слева. Задать новые значения. Нажатие кнопки “Предпросмотр SQL” позволит получить текст SQL-запроса на изменение поля, который может быть использован в других заданиях, кнопки “Сохранить” - внесет изменения в базу данных.


  9. Сделать поле name ключевым. Для этого в списке слева выбрать таблицу, а в правой части на вкладке “Структура” сделать требуемое поле ключевым. Напротив имени поля появился символ ключевого поля, а слева в списке таблиц появился новый Индекс.



  10. Самостоятельно ввести не менее трех значений в базу данных.



  11. Удалить строку данных используя вкладку “Обзор” при выбранной слева таблице.



  12. Удалить таблицу из базы данных используя вкладку “Обзор” при выбранной слева базе данных.

  13. Интерфейс PhpMyAdmin позволяет направлять текстовые SQL запросы в базу данных. Для этого предназначена вкладка “SQL”. Повторить вышеописанные действия при помощи прямого ввода команд SQL.

/* 'String' кавычки, закрываем туда любой текст вносящийся в БД */

/* `SQL VARs NAME` тильда или обратный апостроф, */
/* закрываем туда любые переменные в БД */
/* `Тильду` можно не использовать в консоли mysql, но обязательна в PMA */

CREATE TABLE `lab1_1` (`name` varchar(30), `age` int(3));
SHOW COLUMNS FROM `lab1_1`;

INSERT INTO `lab1_1`(`NAME`, `age`) VALUES ('Ivanov', 30);
SELECT * FROM `lab1_1`;

ALTER TABLE `lab1_1` CHANGE `name` `name2` VARCHAR(32) NOT NULL;
SHOW COLUMNS FROM `lab1_1`;

ALTER TABLE `lab1_1` ADD PRIMARY KEY(`name2`);
SHOW COLUMNS FROM `lab1_1`;

INSERT INTO `lab1_1`(`name2`, `age`) VALUES ('Petrov', 18),('Pushkin', 22),('Esenin', 25);
SELECT * FROM `lab1_1`;

DELETE FROM `lab1_1` WHERE `lab1_1`.`name2`='Pushkin';
SELECT * FROM `lab1_1`;

DROP TABLE `lab1_1`;
SHOW TABLES;

Задание 2

CREATE TABLE `lab1_1` (`name` varchar(30), `age` int(3));
SHOW COLUMNS FROM `lab1_1`;

INSERT INTO `lab1_1`(`NAME`, `age`) VALUES ('Ivanov', 30);
SELECT * FROM `lab1_1`;

ALTER TABLE `lab1_1` CHANGE `name` `name2` VARCHAR(32) NOT NULL;
SHOW COLUMNS FROM `lab1_1`;

ALTER TABLE `lab1_1` ADD PRIMARY KEY(`name2`);
SHOW COLUMNS FROM `lab1_1`;

INSERT INTO `lab1_1`(`name2`, `age`) VALUES ('Petrov', 18),('Pushkin', 22),('Esenin', 25);
SELECT * FROM `lab1_1`;

DELETE FROM `lab1_1` WHERE `lab1_1`.`name2`='Pushkin';
SELECT * FROM `lab1_1`;

DROP TABLE `lab1_1`;
SHOW TABLES;

QUIT;

Задание 3

#include <stdio.h>
#include <my_global.h>
#include <mysql.h>
#include <mysqld_error.h>
#include <errmsg.h>
#include <stdlib.h>
MYSQL* mysql;
MYSQL_RES* res;
MYSQL_ROW row;
MYSQL_FIELD* field;
int i;

void show() {
    res = mysql_store_result(mysql);
    if (res == NULL) {
        printf("Error get data\n");
    } else {
        if (mysql_num_rows(res) > 0) {
            printf("Result: %i row\n", mysql_num_rows(res));
            i = 0;
            while (i < mysql_num_fields(res)) {
                field = mysql_fetch_field_direct(res, i);
                printf("%s\t", field->name);
                i++;
            }
            printf("\n");

            while ((row = mysql_fetch_row(res)) != NULL) {
                for (i = 0; i < mysql_num_fields(res); i++) {
                    printf("%s\t", row[i]);
                }
                printf("\n");
            }
            mysql_free_result(res);
        } else {
            printf("No data\n");
        }
    }
}

void error_query() {
    printf("Error query\n");
    printf("error N: %i %s\n", mysql_errno(mysql), mysql_error(mysql));
}

int main() {
    mysql = mysql_init(NULL);
    if (mysql == NULL) {
        printf("Error init\n");
    } else {
        printf("Init OK \n");
    }

    // Connect to DB and check correct
    if (!mysql_real_connect(mysql,
            "user-ks-##.304.rus", // DB Host
            "user-ks-##", // DB Login
            "1", // DB Password
            "user-ks-##", // DB Name
            NULL, // DB Port
            NULL, // DB Socket
            0 // Flags
            )) { // If error connect
        printf("Error connect\n");
        printf("error N: %i %s\n", mysql_errno(mysql), mysql_error(mysql));
    } else { // If connected
        printf("Connect OK\n");
        if (mysql_query(mysql, "SHOW TABLES;") != 0) {
            error_query();
        } else {
            show();
        }
        printf("\nTable creation. Press any key to continue\n\n");
        getchar();
        if (mysql_query(mysql, "CREATE TABLE `lab1_1` (`name` VARCHAR(30),`age` INT(3));") != 0) {
            error_query();
        } else {
            printf("successful\n");
        }
        sleep(1);
        if (mysql_query(mysql, "SHOW TABLES;") != 0) {
            error_query();
        } else {
            show();
        }
        printf("\nShow columns. Press any key to continue\n\n");
        getchar();
        if (mysql_query(mysql, "SHOW COLUMNS FROM `lab1_1`;") != 0) {
            error_query();
        } else {
            show();
        }
        printf("\nInsert (Ivanov,30). Press any key to continue\n");
        getchar();
        if (mysql_query(mysql, "INSERT INTO `lab1_1` (`name`,`age`) VALUES ('Ivanov','30');") != 0) {
            error_query();
        } else {
            printf("succesful\n");
        }
        sleep(1);
        if (mysql_query(mysql, "SELECT * FROM `lab1_1`;") != 0) {
            error_query();
        } else {
            show();
        }
        printf("\nSet primary key. Press any key to continue\n");
        getchar();
        if (mysql_query(mysql, "ALTER TABLE `lab1_1` ADD PRIMARY KEY(`name`);") != 0) {
            error_query();
        } else {
            printf("`name` assigned as primary key\n");
        }
        sleep(1);
        printf("\nInsert(Petrov,Egorov,Tolkov). Press any key to continue\n");
        getchar();
        if (mysql_query(mysql, "INSERT INTO `lab1_1`(`name`,`age`) VALUES ('Petrov','17'),('Egorov','18'),('Tolkov','18');") != 0) {
            error_query();
        } else {
            printf("succesful\n");
        }
        sleep(1);
        if (mysql_query(mysql, "SELECT * FROM `lab1_1`;") != 0) {
            error_query();
        } else {
            show();
        }
        getchar();
        printf("rename Ivanov to Sidorov. Press any key to continue\n\n");
        if (mysql_query(mysql, "UPDATE `lab1_1` SET `name`='Sidorov' WHERE `lab1_1`.`name`='Ivanov';") != 0) {
            error_query();
        } else {
            printf("successful\n");
        }
        sleep(1);
        if (mysql_query(mysql, "SELECT * FROM `lab1_1`;") != 0) {
            error_query();
        } else {
            show();
        }
        printf("\nDelete table. Press any key to continue\n\n");
        getchar();
        if (mysql_query(mysql, "DROP TABLE `lab1_1`;") != 0) {
            error_query();
        } else {
            printf("Table deleted\n");
        }
        sleep(1);
        if (mysql_query(mysql, "SHOW TABLES;") != 0) {
            error_query();
        } else {
            show();
        }
        mysql_close(mysql);
        printf("\nConnection closed\n");
    }
}
2 лайка