86248

Реализация информационно-поисковой системы с помощью программы MySQL-Front

Курсовая

Информатика, кибернетика и программирование

MySQL является решением для малых и средних приложений. Входит в LAMP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Русский

2015-04-04

1.21 MB

2 чел.

Министерство образования Российской Федерации

Московский государственный институт электроники и математики

(технический университет)

Курсовая работа

по дисциплине «Базы Данных»

Работу выполнили

студенты группы С-54:

Бизюк С.И.

Петров Г.И.

Кудрявцева А.С.

Преподаватель:

Профессор Зарудный Д.И.

Москва, 2007

Оглавление

1. Введение

1.1 Аннотация

Целью курсовой работы является реализация информационно-поисковой системы с помощью программы MySQL-Front, являющейся удобным средством управления базой данных. Знакомство и изучение возможностей данного программного обеспечения поможет повысить навыки графического проектирования баз данных.

1.2 MySQL

MySQL  — свободная система управления базами данных (СУБД). MySQL является собственностью компании MySQL AB, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого компания MySQL AB разрабатывает функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL является решением для малых и средних приложений. Входит в LAMP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и более медленные таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

1.3 phpMyAdmin

phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. phpMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.

На сегодняшний день phpMyAdmin широко применяется на практике. Последнее связано с тем, что разработчики интенсивно развивают свой продукт, учитывая все нововведения СУБД MySQL. Подавляющее большинство российских провайдеров используют это приложение, в качестве панели управления для того, чтобы предоставить своим клиентам возможность администрирования выделенных им баз данных.

Приложение распостраняется под лицензией GNU General Public License и поэтому многие другие разработчики интегрируют его в свои разработки, например XAMPP, Denwer.

Инициатором является немецкий разработчик Тобиас Ратшиллер (Tobias Ratschiller) и основывается, также как и phpPgAdmin, на аналогичном приложении MySQL-Webadmin возникшем в 1997 году.

2. Цель и задачи работы

Целью курсовой работы является реализация информационно-поисковой системы с помощью программы MySQL-Front, являющейся удобным средством управления базой данных. Знакомство и изучение возможностей данного программного обеспечения поможет повысить навыки графического проектирования баз данных.

В данной работе будут рассмотрены приемы работы phpMyAdmin. В ходе выполнения работы предполагается освоить следующие операции:

-Создание базы данных

-Изменение базы данных

-Управление базой данных

-Разграничение доступа к базе данных

-Создание SQL-запросов

Необходимо создать следующие виды запросов:

  1.  Запрос на создание базы данных.
  2.  Запрос на создание таблицы.
  3.  Запрос на добавление данных в таблицу.
  4.  Запрос на выборку данных из таблицы.
  5.  Запрос на изменение данных в таблице.
  6.  Запрос на удаление данных из таблицы.
  7.  Защита данных в СУБД MySQL.


3. Краткие сведения

3.1 Что такое MySQL?

MySQL - это система управления базами данных.

База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.

MySQL - это система управления реляционными базами данных.

В реляционной базе данных данные хранятся не все скопом, а в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц. SQL как часть системы MySQL можно охарактеризовать как язык структурированных запросов плюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.

Программное обеспечение MySQL - это ПО с открытым кодом.

ПО с открытым кодом означает, что применять и модифицировать его может любой желающий. Такое ПО можно получать по Internet и использовать бесплатно. При этом каждый пользователь может изучить исходный код и изменить его в соответствии со своими потребностями.

3.2 Основные достоинства MySQL

Перечислим  основные достоинства пакета MySQL:

- Многопоточность. Поддержка нескольких одновременных запросов.

-Оптимизация связей с присоединением многих данных за один проход.

-Записи фиксированной и переменной длины.

-ODBC драйвер в комплекте с исходным текстом

-Гибкая система привилегий и паролей.

-До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

-Поддержка ключевых полей и специальных полей в операторе CREATE.

-Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени.

-Интерфейс с языками C и perl.

-Основанная на потоках, быстрая система памяти.

-Утилита проверки и ремонта таблицы.

-Все данные хранятся в формате ISO8859_1.

-Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.

-Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице. Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей. Легкость управления таблицей, включая добавление и удаление ключей и полей.


4. Проектирование базы данных

Основная цель проектирования БД – это сокращение избыточности хранимых данных, а следовательно, экономия объема используемой памяти, уменьшение затрат на многократные операции обновления избыточных копий и устранение возможности возникновения противоречий из-за хранения в разных местах сведений об одном и том же объекте.

Проектирование базы данных состоит из двух основных фаз: логического и физического моделирования. Во время фазы логического моделирования разработчик собирает требования и разрабатывает модель, не зависящую от конкретной СУБД. В этой же фазе выполняется нормализация.

Во время фазы физического моделирования разработчик создает модель, оптимизированную для конкретного приложения и СУБД. Это та самая модель, которая и реализуется на практике.

4.1 Модели и базы данных

Модель - это визуализация информации, хранящийся в базе данных (например сущности, атрибуты сущности, связь между сущностями.

Вы можете создавать и обслуживать столько моделей, содержащих неограниченное число объектов, сколько необходимо для вашей задачи. Объектом может быть таблица базы данных с колонками и индексами, отношением между двумя таблицами, примечаниями и прочим.

Модели  могут быть восстановлены из существующих баз данных.

Чтобы создать  базу данных, модель можно экспортировать в код SQL или создать базу данных непосредственно изнутри MySQL-Front. В MySQL-Front можно создавать SQL запросы на основе существующей модели, что бы добавлять или изменять информацию в базе данных, или для выборки данных из базы.

Модели могут быть сохранены в SQL,HTML,XML-файлы или непосредственно сохранены в базу данных, поддерживающую распределенный доступ к модели.

Основные этапы проектирования базы данных:

1. Описание предметной области. Определение цели создания базы данных.

2. Определение сущностей предметной области (таблиц), которые должна содержать база данных.

3. Определение атрибутов сущностей (необходимых в таблицах полей).

4. Построение инфологической модели. Определение связей между сущностями (таблицами).

4.2 Предметная область: 

База данных файлообменника.

4.3 Инфологическая модель:

Пользователь (логин, ФИО, пароль, e-mail);

Каталог (id каталога, название каталога, размер каталога, кол-во файлов);

Файл (id файла, название файла, формат, размер файла);

4.4 Реляционная модель:

Пользователь (логин, ФИО, пароль, e-mail);

Каталог (id каталога, название каталога, размер каталога, кол-во файлов, логин);

Файл (id файла, название файла, формат, размер файла, id каталога);

5. Выполнение. Стандартными средствами phpMyAdmin.

5.1 Управление данными

5.1.1 Создание базы данных

Новую базу данных можно создать в разделе сервер или же на главной странице phpMyAdmin

SQL вариант:

CREATE DATABASE filechanger;

USE filechanger;

5.1.2 Создание таблиц

После того как мы создали базу данных, мы переходим на страницу где мы можем создавать таблички, щелчком по названию базы в левой части экрана.

Создаем табличку user, количество полей 4. Жмем ОК. После чего мы перешли на страницу где можно описать поля для нашей таблицы.

После того как мы заполнили желаемые поля для нашей таблицы жмем кнопку Сохранить.

SQL вариант таблицы:

CREATE TABLE `user` ( 

`login` VARCHAR( 50 ) NOT NULL ,
`FIO` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `login` ) 

);

5.1.3 Добавление данных в таблицу

После того как мы создали таблицу, мы можем начать ее заполнять, выбрав раздел «Вставка», в верхнем меню сайта.

SQL вариант:

INSERT INTO `user` ( `login` , `FIO` , `password` , `email` ) 
VALUES ( 

'Kik', 'Сидоров. А.К.', '12345', 'qq@mail.ru'

);

5.1.4 Изменение данных в таблице

Для редактирования созданной нами таблицы переходим в нее user->Обзор, после того как мы увидели нашу таблицу с данными, мы нажимаем на «Правка» и делаем необходимые нам изменения.

5.1.5 Удаление данных из таблицы

Выбрав в левой части необходимую нам таблицу -> обзор, находим не нужную нам информацию и жмем на «Удалить». Таким образом мы можем удалять построчно информацию, для удаления сразу нескольких записей нужно выделить строки подлежащие удалению (выделение – ставим галочки напротив не нужных нам строк)

5.1.6 Удаление таблицы

Для удаления таблицы мы должны выбрать в левой части экрана используемую нами базу и в открывшийся странице выбрать не нужные нам таблицы, ставя на против них галочки. Дальше в выпадающем списке 'С отмеченными' выбрать удалить и подтвердить удаление.

5.1.7 Удаление базы

Для того что бы удалить базу, жмем на нее в левой части экрана, в открывшийся странице, в правой  верхней ее части жмем на вкладку 'Удалить', далее подтверждаем удаление и наша база удалена.

5.2 Выборка данных

Для вывода данных отдельных таблиц использует раздел 'Обзор'.

6. Выполнение. Средствами SQL

Для выполнения SQL запросов мы будем пользоваться системой phpMyAdmin, а для выполнения SQL запросов раздел SQL.

 

Рисунок 1. (Окно раздела SQL)

6.1 Управление данными

6.1.1 Создание базы данных

Для создания базы данных нужно воспользоваться следующей командой:

CREATE DATABASE <Название базы данных>;

Пример:  

CREATE DATABASE `user`;

6.1.2 Создание таблицы

Оператор CREATE TABLE создает таблицу с заданным именем в текущей базе данных. Если нет активной текущей базы данных или указанная таблица уже существует, то возникает ошибка выполнения команды.

В версии MySQL 3.22 и более поздних имя таблицы может быть указано как db_name.tbl_name. Эта форма записи работает независимо от того, является ли указанная база данных текущей.

Начиная с MySQL 3.23 при создании таблицы можно использовать ключевое слово TEMPORARY. Временная таблица автоматически удаляется по завершении соединения, а ее имя действительно только в течение данного соединения. Это означает, что в двух разных соединениях могут использоваться временные таблицы с одинаковыми именами без конфликта друг с другом или с существующей таблицей с тем же именем (существующая таблица скрыта, пока не удалена временная таблица). С версии MySQL 4.0.2 для создания временных таблиц необходимо иметь привилегии CREATE TEMPORARY TABLES.

В версии MySQL 3.23 и более поздних можно использовать ключевые слова IF NOT EXISTS для того, чтобы не возникала ошибка, если указанная таблица уже существует. Следует учитывать, что при этом не проверяется идентичность структур этих таблиц.

В MySQL 4.1 можно указать LIKE чтобы создавать таблицу, основываясь на определении другой, уже существующей, таблицы. В MySQL 4.1 также можете определять тип автоматически создаваемого столбца.

Полный синтаксис оператора:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]

[table_options] [select_statement]

или

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name LIKE old_table_name;

create_definition:

 col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]

           [PRIMARY KEY] [reference_definition]

 или   PRIMARY KEY (index_col_name,...)

 или   KEY [index_name] (index_col_name,...)

 или   INDEX [index_name] (index_col_name,...)

 или   UNIQUE [INDEX] [index_name] (index_col_name,...)

 или   FULLTEXT [INDEX] [index_name] (index_col_name,...)

 или   [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)

           [reference_definition]

 или   CHECK (expr)

type:

       TINYINT[(length)] [UNSIGNED] [ZEROFILL]

 или   SMALLINT[(length)] [UNSIGNED] [ZEROFILL]

 или   MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]

 или   INT[(length)] [UNSIGNED] [ZEROFILL]

 или   INTEGER[(length)] [UNSIGNED] [ZEROFILL]

 или   BIGINT[(length)] [UNSIGNED] [ZEROFILL]

 или   REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]

 или   DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]

 или   FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]

 или   DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]

 или   NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]

 или   CHAR(length) [BINARY]

 или   VARCHAR(length) [BINARY]

 или   DATE

 или   TIME

 или   TIMESTAMP

 или   DATETIME

 или   TINYBLOB

 или   BLOB

 или   MEDIUMBLOB

 или   LONGBLOB

 или   TINYTEXT

 или   TEXT

 или   MEDIUMTEXT

 или   LONGTEXT

 или   ENUM(value1,value2,value3,...)

 или   SET(value1,value2,value3,...)

index_col_name:

       col_name [(length)]

reference_definition:

       REFERENCES tbl_name [(index_col_name,...)]

                  [MATCH FULL | MATCH PARTIAL]

                  [ON DELETE reference_option]

                  [ON UPDATE reference_option]

reference_option:

       RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

table_options:

       TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }

или     AUTO_INCREMENT = #

или     AVG_ROW_LENGTH = #

или     CHECKSUM = {0 | 1}

или     COMMENT = "string"

или     MAX_ROWS = #

или     MIN_ROWS = #

или     PACK_KEYS = {0 | 1 | DEFAULT}

или     PASSWORD = "string"

или     DELAY_KEY_WRITE = {0 | 1}

или     ROW_FORMAT= { default | dynamic | fixed | compressed }

или     RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=#  RAID_CHUNKSIZE=#

или     UNION = (table_name,[table_name...])

или     INSERT_METHOD= {NO | FIRST | LAST }

или     DATA DIRECTORY="абсолютный путь к каталогу"

или     INDEX DIRECTORY="абсолютный путь к каталогу"

select_statement:

       [IGNORE | REPLACE] SELECT ...  (любое корректное выражение SELECT)

Ограничение CHECK

Ограничение CHECK используется для проверки допустимости данных, вводимых в поле таблицы.

Ограничение CHECK состоит из ключевого слова CHECK, сопровождаемого предложением предиката, который использует указанное поле. Любая попытка модифицировать или вставить значение поля, которое могло бы сделать этот предикат неверным, будет отклонена.

Задание ограничения CHECK производится при создании таблицы. Для этого после описания полей таблицы указывается ключевая фраза:

CONSTRAINT имя_ограничения CHECK (ограничение)

Пример:

Создаем таблицу содержащую пользовательские учетные записи где:

Запрос на создание таблицы.

CREATE TABLE `user` ( 

`login` VARCHAR( 50 ) NOT NULL ,
`FIO` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `login` ) 

);

CREATE TABLE `folder` ( 

`id` INT( 50 ) NOT NULL ,
`name` VARCHAR( 50 ) NOT NULL ,
`size` FLOAT( 50 ) NOT NULL ,
`number` INT( 50 ) NOT NULL ,
`login` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` ) 

);

CREATE TABLE `file` ( 

`f_id` VARCHAR( 50 ) NOT NULL ,
`format` VARCHAR( 50 ) NOT NULL ,
`f_size` VARCHAR( 50 ) NOT NULL ,
`f_name` VARCHAR( 50 ) NOT NULL ,
`id` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `f_id` ) 

);

Рисунок 3. Результат (структура таблицы).

6.1.3 Добавление данных в таблицу

Для добавления строк в таблицу в SQL есть запрос INSERT со следующим синтаксисом:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

       [INTO] tbl_name [(col_name,...)]

       VALUES (expression,...),(...),...

       [ ON DUPLICATE KEY UPDATE col_name=expression, ... ]

или INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

       [INTO] tbl_name [(col_name,...)]

       SELECT ...

или INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

       [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 и более поздних.

Пример:  Добавляем пользователей в таблицу `user`

INSERT INTO `user` ( `login` , `FIO` , `password` , `email` ) 
VALUES ( 

'Kik', 'Сидоров. А.К.', '12345', 'qq@mail.ru'

);

INSERT INTO `user` ( `login` , `FIO` , `password` , `email` ) 
VALUES ( 

'Ворчун', 'Петров В.В.', 'trnc65k7', 'vor4un@rambler.ru'

);

INSERT INTO `user` ( `login` , `FIO` , `password` , `email` ) 
VALUES ( 

'Sam', 'Иванов К.Т.', '75lof865045', 'sam11@rambler.ru'

);

Рисунок 4. Результат (Добавленные данные).

6.1.4 Изменение данных в таблице

Оператор UPDATE обновляет столбцы в соответствии с их новыми значениями в строках существующей таблицы.

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name

   SET col_name1=expr1 [, col_name2=expr2, ...]

   [WHERE where_definition]

   [LIMIT #]

В выражении SET указывается, какие именно столбцы следует модифицировать и какие величины должны быть в них установлены. В выражении WHERE, если оно присутствует, задается, какие строки подлежат обновлению. В остальных случаях обновляются все строки. Если задано выражение ORDER BY, то строки будут обновляться в указанном в нем порядке.

Если указывается ключевое слово LOW_PRIORITY, то выполнение данной команды UPDATE задерживается до тех пор, пока другие клиенты не завершат чтение этой таблицы.

Если указывается ключевое слово IGNORE, то команда обновления не будет прервана, даже если при обновлении возникнет ошибка дублирования ключей. Строки, из-за которых возникают конфликтные ситуации, обновлены не будут.

Пример: Изменение данных в таблице пользователей.

UPDATE user SET password = '11111111111' WHERE login = 'Sam';

6.1.5 Удаление данных из таблицы

Оператор удаления записей имеет формат вида:

 DELETE FROM <имя таблицы>

 [WHERE <условие>]

Результатом выполнения оператора DELETE является удаление из указанной таблицы строк, которые удовлетворяют условию, определенному операндом WHERE. Если необязательный операнд WHERE опущен, т. е. условие отбора удаляемых записей отсутствует, удалению подлежат все записи таблицы.

Пример: Удаление пользователя из таблицы.

DELETE FROM user WHERE login='Sam';

6.1.6 Удаление таблицы

DROP  TABLE  <name>;

6.1.7 Удаление базы

DROP DATABASE <name>;

6.2 Выборка данных из таблицы

 Для выборки данных используется команда SELECT. Команда выборки записей имеет формат  вида:

 SELECT [ALL | DISTINCT]

<список данных>

FROM <список таблиц>

[WHERE<условие выборки>]

[GROUP BY<имя столбца> [, < имя столбца >]…]

[HAVING<условие поиска>]

[ORDER BY<спецификация> [, < спецификация >]…]

Это наиболее важный оператор из всех операторов SQL. Функциональные возможности его огромны.

Оператор SELECT позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL), или не иметь (DISTINCT) повторяющиеся строки. По умолчанию в ответную таблицу включаются все строки, в том числе и повторяющиеся. В отборе данных участвуют записи одной или нескольких таблиц, перечисленных в списке операнда FROM..

Список данных может содержать имена столбцов, участвующих в запросе, а также выражения над столбцами. В простейшем случае в выражениях можно записывать имена столбцов, знаки арифметических операций (+, — ,*,/), константы и круглые скобки. Если в списке данных записано выражение, то наряду с выборкой данных выполняются вычисления, результаты которого попадают в новый (создаваемый) столбец ответной таблицы.

При использовании в списках данных имен столбцов нескольких таблиц для указания принадлежности столбца некоторой таблице применяют конструкцию вида: <имя таблицы>.<имя столбца>.

Операнд WHERE задает условия, которым должны удовлетворять записи в результирующей таблице. Выражение <условие выборки> является логическим. Его элементами могут быть имена столбцов, операции сравнения, арифметические операции, логические связки (И, ИЛИ, НЕТ), скобки, специальные функции LIKE, IN  и  т. д.

6.2.1. SQL Запрос на выборку SELECT с GROUP BY 

Group by <NAME> позволяет выполнять операции над группами, в которых значение столбца

NAME одинаковое.

Запрос:

 

SELECT login, FIO, email FROM user GROUP BY FIO;

6.2.2.  SQL Запрос на выборку SELECT с ORDER BY 

Выборка данных с сортировкой по возрастанию/убыванию значений нужного столбца.

Запрос:

SELECT login , FIO, email FROM user ORDER by FIO ASC

Результат.

Запрос:

SELECT login , FIO, email FROM user ORDER by FIO DESC

Результат.

6.2.3.  SQL Запрос на выборку с вложенным SELECT

При выборки также можно использовать SELECT, в SELECT то есть вложенные SELECT.

Запрос

6.2.4.  SQL Запрос на выборку SELECT c JOIN

При выборки можно использовать оператор JOIN, для выборки данных из нескольких таблиц одновременно.

Запрос:

Результат.

6.2.5.  SQL Запрос на выборку SELECT c Between

При использовании с символами Between проверяет нахождение значения в интервале с помощью алфавитного порядка, с числами с помощью сравнения величин, с датами с помощью приведения формата даты к унифицированному формату.

Запрос:

SELECT * FROM `folder` WHERE number BETWEEN 1 AND 4;

Результат:

6.2.7.  SQL Запрос на выборку SELECT c Like

LIKE сравнивает строку с шаблоном без учета регистра. В шаблоне «_» означает один произвольный символ, «%» несколько произвольных символов.

Запрос:

SELECT * FROM `folder` WHERE name LIKE 'music';

Результат:

6.2.8.  SQL Запрос на выборку SELECT c UNION

UNION используется для объединения результатов работы нескольких команд SELECT в один набор результатов.

Запрос: (SELECT `login` , `fio` , `email` FROM `user` WHERE PASSWORD =12345) UNION (SELECT `login` , `fio` , `email` FROM `user` WHERE PASSWORD =7545)

Результат.

6.2.9.  SQL Запрос на выборку SELECT c арифметическими операторами.

Запрос:  

SELECT * FROM `user` WHERE password>5;

SELECT * FROM `user` WHERE email >='r';

SELECT * FROM `folder` WHERE number >=3;

SELECT * FROM `folder` WHERE size >=40;

7. Защита данных

Для обеспечения защиты данных от несанкционированного доступа, в СУБД MySQL используются команды GRANT и REVOKE. Они позволяют системным администраторам создавать пользователей MySQL, а также предоставлять права пользователям или лишать их прав на четырех уровнях привилегий:

- Глобальный уровень 

Глобальные привилегии применяются ко всем базам данных на указанном сервере. Эти привилегии хранятся в таблице mysql.user.

- Уровень базы данных 

Привилегии базы данных применяются ко всем таблицам указанной базы данных. Эти привилегии хранятся в таблицах mysql.db и mysql.host.

- Уровень таблицы 

Привилегии таблицы применяются ко всем столбцам указанной таблицы. Эти привилегии хранятся в таблице mysql.tables_priv.

- Уровень столбца 

Привилегии столбца применяются к отдельным столбцам указанной таблицы. Эти привилегии хранятся в таблице mysql.columns_priv.

Если привилегии предоставляются пользователю, которого не существует, то этот пользователь создается.

GRANT и REVOKE имеют следующий синтаксис:

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]

   ON {tbl_name | * | *.* | db_name.*}

   TO user_name [IDENTIFIED BY [PASSWORD] 'password']

       [, user_name [IDENTIFIED BY 'password'] ...]

   [REQUIRE

       [{SSL| X509}]

       [CIPHER cipher [AND]]

       [ISSUER issuer [AND]]

       [SUBJECT subject]]

   [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |

                         MAX_UPDATES_PER_HOUR # |

                         MAX_CONNECTIONS_PER_HOUR #]]

REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]

   ON {tbl_name | * | *.* | db_name.*}

   FROM user_name [, user_name ...]

В таблице приведен список возможных значений параметра priv_type для операторов GRANT и REVOKE:

Чтобы лишить пользователя привилегий, предоставленных командой GRANT, можно воспользоваться значением priv_type в GRANT OPTION:

mysql> REVOKE GRANT OPTION ON ... FROM ...;

Для таблицы можно указать только следующие значения priv_type: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, INDEX и ALTER.

Для столбца можно указать только следующие значения priv_type (при использовании оператора column_list): SELECT, INSERT и UPDATE.

Таким образом СУБД MySQL позволяет ограничить доступ пользователю не только к таблицам, но и  к каждому столбцу таблицы.

Новых пользователей можно добавлять, используя команду GRANT:

Рассмотрим несколько примеров:

GRANT ALL PRIVILEGES ON *.* TO superuser@localhost

IDENTIFIED BY 'superpass' WITH GRANT OPTION;

user - полноценный суперпользователь - он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль 123.

GRANT CREATE, INSERT, UPDATE, DELETE, DROP, SELECT

ON*.* TO user@localhost IDENTIFIED BY '123' WITH

GRANT OPTION;

user может использовать команды CREATE, INSERT, UPDATE, DELETE, DROP, SELECT. Иными словами он может все необходимое для работы с базой данных. Он также может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль 123.

GRANT SELECT, UPDATE (`id`,`name`,`size`,`number`)

ON filechanger.folder TO user@localhost

IDENTIFIED BY '123' WITH GRANT OPTION;

В данном примере пользователь user получает доступ к столбцам name, director таблицы movies из базы данных video.

Этот пример демонстрирует гибкость системы разграничения привилегий доступа к данным СУБД MySQL.

При разграничении привилегий следует помнить следующее:

- Нельзя предоставить другому пользователю привилегию, которой нет у вас самого. Привилегия GRANT позволяет предоставлять только те привилегии, которыми вы обладаете;

- Если при создании нового пользователя не указать оператор IDENTIFIED BY, будет создан пользователь без пароля. Это ненадежно с точки зрения безопасности.

- Не следует назначать привилегии ALTER обычным пользователям. Это дает пользователю возможность разрушить систему привилегий путем переименования таблиц!


ALL [PRIVILEGES]

Задает все простые привилегии, кроме WITH GRANT OPTION

ALTER

Разрешает использование ALTER TABLE

CREATE

Разрешает использование CREATE TABLE

CREATE TEMPORARY TABLES

Разрешает использование CREATE TEMPORARY TABLE

DELETE

Разрешает использование DELETE

DROP

Разрешает использование DROP TABLE.

EXECUTE

Разрешает пользователю запускать хранимые процедуры (для MySQL 5.0)

FILE

Разрешает использование SELECT ... INTO OUTFILE и LOAD DATA INFILE.

INDEX

Разрешает использование CREATE INDEX and DROP INDEX

INSERT

Разрешает использование INSERT

LOCK TABLES

Разрешает использование LOCK TABLES на таблицах, для которых есть привилегия SELECT.

PROCESS

Разрешает использование SHOW FULL PROCESSLIST

REFERENCES

Зарезервировано для использования в будущем

RELOAD

Разрешает использование FLUSH

REPLICATION CLIENT

Предоставляет пользователю право запрашивать местонахождение головного и подчиненных серверов.

REPLICATION SLAVE

Необходимо для подчиненных серверов при репликации (для чтения информации из бинарных журналов головного сервера).

SELECT

Разрешает использование SELECT

SHOW DATABASES

SHOW DATABASES выводит все базы данных.

SHUTDOWN

Разрешает использование mysqladmin shutdown

SUPER

Позволяет установить одно соединение (один раз), даже если достигнуто значение max_connections, и запускать команды CHANGE MASTER, KILL thread, mysqladmin debug, PURGE MASTER LOGS и SET GLOBAL

UPDATE

Разрешает использование UPDATE

USAGE

Синоним для "без привилегий".

Файл

Каталог

Пользователь


 

А также другие работы, которые могут Вас заинтересовать

28411. Персона нон грата 30 KB
  persona non grata нежелательная персона нежелательное лицо Согласно статье 9 Венской конвенции о дипломатических сношениях 1961 год принимающее государство может в любое время и без необходимости объяснения причины объявить любого члена дипломатического корпуса персоной нон грата даже до того как этот человек прибыл в страну. Обычно лицо объявленное персоной нон грата должно покинуть страну в противном случае государство может отказаться признавать это лицо членом дипломатической миссии. Объявление лица персоной нон...
28413. ВАЛИЗА 115.1 KB
  каждая из которых обладает неприкосновенностью – не подлежит ни вскрытию ни задержанию властями иностранного государства. хотя и говорит о недопустимости ее вскрытия и задержания но устанавливает что в тех случаях когда компетентные власти государства пребывания имеют серьезные основания полагать что в В. была вскрыта в их присутствии уполномоченным представителем иностранного государства.
28415. Привилегии и иммунитеты дипломатического представительства 28 KB
  Привилегии lexprivus – особые правовые преимущества льготы. Иммунитеты и привилегии предоставляются не для личных выгод а для обеспечения эффективного осуществления функций дипломатических представительств как органов представляющих государство. В Венской конвенции 1961 года дипломатические иммунитеты и привилегии подразделены на иммунитеты и привилегии дипломатического представительства и личные иммунитеты и привилегии членов дипломатического персонала и их семей. К первой категории относятся: неприкосновенность помещений...
28419. Привилегии и иммунитеты международных организаций 168.91 KB
  Большое влияние на становление и объем привилегий и им_мунитетов международных организаций оказала практика при_менения дипломатических привилегий и иммунитетов т. Тот факт что привилегии и иммунитеты международных организаций почти совпадают или близки по объему привиле_гиям и иммунитетам дипломатических представительств госу_дарств за рубежом однако не дает никаких оснований считать или именовать первые как дипломатические привилегии и иммунитеты поскольку осуществление дипломатии присуще только государствам но не международным...