Главная страница
Навигация по странице:

  • Командa Действие

  • Название типа данных Типы данных в группе

  • Тип данных Длина Память

  • Тип данных Численность Диапазон

  • Тип данных Длина

  • Оператор Значение

  • Функция Действие

  • Развитие языков программирования растёт с большой скоростью


    Скачать 2.79 Mb.
    НазваниеРазвитие языков программирования растёт с большой скоростью
    АнкорKostern
    Дата28.04.2022
    Размер2.79 Mb.
    Формат файлаpdf
    Имя файлаKostelny_PHP-Junior-Kit.644079.pdf
    ТипДокументы
    #503693
    страница6 из 14
    1   2   3   4   5   6   7   8   9   ...   14
    Name
    Data
    Название записи будет здесь.
    А здесь уже будут данные которые были добавлены в запись.

    PHP: Junior Kit
    123
    Програмирование - это круто?
    Да! Это очень круто!
    -
    Табл. 15 - Пример таблицы в базе данных
    Как мы видим то тут у нас есть таблица, которая на данный момент хранит в себе две записи имеющая два столбца. То есть когда мы добавляем какую-нибудь запись в таблицу базы данных, запись будет иметь поля которые будут зависит от того какие есть столбцы в таблице.
    Но на практике все выглядит по-другому. Во-первых, столбцы могут иметь свои типы данных и такие параметры, как например длина определенного поля в записи. В нашем примере в таблице которую мы просто себе представили как типичную таблицу, которая есть в Microsoft
    Office Exel, наши столбцы имели текстовые типы данных.
    Запись, которая добавляется в таблицу зависит от столбцов таблицы. А вы заметили, что я не дал названия таблице? На практике мы должны будем давать обязательно названия для наших таблиц, если мы хотим к ним обращаться в базе данных. Это логично, поскольку как можно обратиться к человеку, если мы не знаем его имени?
    Кроме того что мы должны будем давать названия для таблиц, мы также должны будем дать название и для нашей базы данных внутри которой будут храниться таблицы. Хорошо, а теперь после того как я рассказал вам, как все устроено на простом понятном человеческом языке пора переходить к тому что я должен рассказать какие средства мы будет использовать для создания баз данных и их редактирования.
    В начале книги я вам говорил об таком типе баз данных как
    MySQL. Этот тип БД устанавливается автоматически вместе с локальным сервером XAMPP. Кроме того что мы будем использовать этот тип баз данных, мы будем также использовать Систему-Управления-Баз-
    Данных(СУБД) - phpMyAdmin.
    Приложение phpMyAdmin можно найти по адресу localhost/phpmyadmin. Данное приложение дает полноценный

    PHP: Junior Kit
    124
    комфортный интерфейс для работы с базами данных, а также с таблицами. Создавать таблицы мы будем с помощью языка программирования SQL, который предназначен для работы с БД и таблицами. Начнется этот раздел с того что мы ознакомимся с MySQL, потом мы больше углубимся в мир программирования баз данных.
    10.1 MySQL
    MySQL был создан в 1995 годом гигантом корпорацией Oracle, которая на данный момент создала очень много полезного и много пользовательского программного обеспечения, которое используются во всем мире. Но кроме Oracle над этим проектом работала также компания
    Sun Microsystems. Изначально MySQL это была попытка повышения производительности работы БД(баз данных). И должен сказать, что эта попытка была довольно таки успешной.
    MySQL используют во всем мире, многие ИТ-компании используют эту систему. Поскольку она очень эффективная и продуктивная а также легка в использовании. Хорошо, а теперь давайте поговорим об том какую СУБД(Система-Управления-Баз-Данных) мы будем использовать для того чтобы работать с базами данных.
    Когда мы устанавливали XAMPP то мы автоматически установили вместе с MySQL одну из самых популярных СУБД – phpMyAdmin. Эта система создана на двух языках программирования
    PHP и JavaScript. Но суть заключается в том что данная СУБД позволяет легко через графический интерфейс управлять базами данных, а также данными которые внутри их. Перейти в phpMyAdmin можно по адресу в браузере: localhost/phpmyadmin. На изображении которое показано внизу можете увидеть интерфейс phpMyAdmin:

    PHP: Junior Kit
    125
    -
    Рис. 16 - Главная страница администратора phpMyAdmin
    На первый взгляд может показать что это очень сложный интерфейс, который имеет много кнопок а также много всяких данных об наших базах данных. Но по-настоящему все очень просто.
    В центре страницы вы можете увидеть настрой для phpMyAdmin.
    В этих настройках можете выбрать язык для приложения, а также дизайн если вам не очень то и нравится такой серый интерфейс. С левой стороны вы можете увидеть список с базами данных, которые есть на данном веб- сервере. На изображении, которое показано выше есть мои базы данных, поэтому если у вас их нет не надо думать что что-то не так.
    С помощью этого меню вы можете перейти на страницу для создания баз данных, или же на страницу с данными одной из выбранных баз данных. Сверху страницы есть также меню которое предназначено для того чтобы переходить на другие страницы phpMyAdmin.

    PHP: Junior Kit
    126
    Программировать таблицы, а точнее создавать таблицы для наших баз данных можно с помощью языка программирования запросов SQL.
    Об этом я уже говорил. Можете заметить, что в верхнем меню есть пункт который как раз и называется SQL, нажав на эту кнопку, вас перенаправит на страницу для создания SQL запросов.
    С помощью SQL вы можете создавать базы данных, таблицы баз данных, редактировать базы данных, а также таблицы и сами данные которые внутри их. На данный момент полностью рассматривать данное меню нету смысла, нам для начала хватить каких-то поверхностных знаний для того чтобы понимать данную систему. Двигаемся дальше. Вы наверное уже заметили что справа страницы есть поля в которых показаны данные об том какой сервер для баз данных мы используем, название сервера, хост и т.д.
    Это небольшое поле хорошо использовать для того если вам надо будет узнать какие-то данные об сервере. Например, когда мы будем подключаться к базе данных через РНР, то нам надо будет знать хост сервера к которому мы хотим с вами подключиться. В самом внизу страницы, есть окно консоли для того чтобы работать с MySQL через консоль.
    Об этом способе работе с MySQL я ещё расскажу. А сейчас же давайте создадим нашу первую базу данных для нашего небольшого приложения. Для этого перейдите в меню которое слева, давайте перейдем по ссылке “Создать БД”.

    PHP: Junior Kit
    127
    После этого нас должно перенаправит на страницу для создания БД:
    -
    Рис. 17 - Страница создания и просмотра характеристик баз
    данных
    На этой странице кроме того что вы можете создавать и удалять базы данных вы можете также узнать данные о них. Также здесь есть список баз данных, которое есть на данном веб-сервере. Ну а теперь давайте создадим нашу первую с вами базу данных. Для этого в поле названия базы данных введите желаемое вами имя для вашей базы данных.
    Я назову свою базу test, вы конечно же можете подобрать другое название. Но название БД не должно состоять из символов русского алфавита, и в начале не должно быть пробелов или каких-то других символов как например: @!-+;:’” и т.п.
    После создания базы данных вы сможете начать работать с ней, то есть редактировать таблицы и данные которые внутри таблиц. А теперь давайте создадим нашу первую таблицу. Для этого перейдите в

    PHP: Junior Kit
    128
    созданную вами базу данных в левом меню. После этого вы попадете в интерфейс для просмотра структуры базы данных и доступных таблиц.
    Поскольку в вашей базе данных нету ещё таблиц, то вы должны будете увидеть такое сообщение:
    -
    Рис. 18 - Интерфейс создания таблицы для БД в phpMyAdmin
    Есть несколько способов создать таблицы. Например, таблицу можно создать через окно которое показано на изображении выше. Но можно также и через SQL запрос. Поскольку мы изучаем с вами сейчас язык программирования PHP, то знания о том как строить запросы через
    SQL понадобиться. А все потому что когда мы будем с вами работать с базами данных через РНР, то у нас не будет какого то интерфейса для создания записей в таблицах и т.д. И поэтому единственным способом работы с базами данных через РНР будет использование SQL-запросов.
    Поэтому, для начала мы создадим нашу первую таблицу программным путем. Нам надо понять синтаксис SQL, без понимания синтаксиса мы просто не сможем понять для чего нужны все эти символы, которые мы используем во время создания запроса. Наша первая таблица будет называться test, на данный момент мы создадим только один столбец:
    CREATE TABLE test ( name varchar(20) NOT NULL
    );
    Хорошо, а теперь давайте рассмотрим что и как работает. Во- первых, для создания таблицы мы использовали команду CREATE
    TABLE. После этого мы указали имя таблицы test. Но команда

    PHP: Junior Kit
    129
    CREATE не только предназначена для создания таблицы, но также для создания базы данных. Для этого надо просто заменить аргумент TABLЕ на DATABASE:
    CREATE DATABASE test;
    Но давайте все-таки вернемся к теме о том как мы с вами создали нашу таблицу. После команды создания таблицы и названия таблицы мы открыли дужки внутри которых мы и начали прописывать параметры таблицы. То есть создавать столбцы для нашей таблицы. Чтобы создать столбец сначала мы указываем имя столбца, после этого мы указываем тип данных для столбца и в конце мы указываем также параметры заполнения столбца.
    В нашем примере мы назвали наш первый столбец name, для столбца мы указали строковый(текстовый) тип данных varchar, а внутри дужек мы указали максимальную длину символов которые могут быть в созданной записи столбца. И в конце дали параметр NOT NULL, что значит что данный столбец не может быть пустым. То есть значение столбца не должно равняться NULL. Теперь вы уже немного понимаете синтаксис и как выглядит создание таблицы. Поэтому давайте сделаем таблицу для списка пользователей на веб-сайте:
    CREATE TABLE my_posts( id int(11) AUTO_INCREMENT, username varchar(20) NOT NULL, password varchar(20) NOT NULL,
    PRIMARY KEY(id)
    );
    Мы сделали маленькую таблицу с тремя столбцами, и на этот раз она выглядит уже намного интереснее и сложнее. И это значит что можно будет уже больше взаимодействовать с такой таблицей. Нашими тремя столбцами стали такие столбца как идентификатор пользователя, логин пользователя и пароль пользователя.

    PHP: Junior Kit
    130
    Выглядит просто, но по-настоящему таблицы для хранения данных пользователей выглядят по-другому, и имеет другие параметры. А также для таких таблиц в которых хранятся данные об пользователях используется шифрование. Но об безопасности у нас будет отдельный раздел. А теперь посмотрите на первый столбец. Здесь мы поставили числовой тип данных INT с максимальной длиной в 11 символов.
    Заметьте параметр AUTO_INCREMENT, здесь вы можете увидеть знакомое вам слово инкремент.
    Объясню вам что это за параметр который мы только что с вами поставили. Как можно понять из названия это автоматический инкремент.
    То есть вместо того чтобы самому вручную добавлять снова и снова идентификатор пользователя увеличивая его на единицу, мы просто воспользуемся автоматическим инкрементом. То есть теперь, когда в эту таблицу будет добавляться новая запись, то её идентификатор будет увеличиваться на единицу.
    Следующее два столбцы рассматривать нету смысла, поскольку вам уже и так понятно какой в них тип данных и параметры. Переходим к последнему элементу в запросе. Это команда(PRIMARY KEY) для указания ключа для таблицы, в нашем случае это идентификатор пользователя id.
    А теперь выполните этот запрос и теперь вы сможете увидеть таблицу в БД. На этом я завершу этот подраздел, у вас есть теперь основы понимания того что такое таблица и как её можно создавать в базе данных. Следующий подраздел будет посвящен более глубокому изучению SQL и таблиц в базах данных.
    10.2
    Таблицы в SQL
    В предыдущем разделе я как раз и сказал что данный раздел будет посвящен более глубокому изучению таблиц в SQL. Сейчас мы будем работать с вами с SQL через встроенную консоль в phpMyAdmin.
    Разницы между запросами которые создаются через страницу создания

    PHP: Junior Kit
    131
    запросов, и через консоль - нету. Все так же само, просто методы создания другие.
    В встроенной консоли phpMyAdmin вы можете нажимать спокойно кнопку enter не беспокоясь о то что вы запустите ту или иную команду. А если нам надо будет выполнить запрос, то надо нажать на две клавиши ctr+enter. Сейчас я перешел через меню в базу данных test, и сейчас я сделаю запрос на создание таблицы для списка заданий:
    -
    Рис. 20 - Создание таблицы в phpMyAdmin с помощью встроенной
    консоли
    Использовать эту таблицу мы конечно же не будем, но использовать для примера это хорошая идея. Как мы видим то в этой таблице нету никаких новых параметров. Это больше напоминает нам ту таблицу, которая была показана в предыдущем примере.
    Выполните данный запрос, и в результате вы увидите то же самое сообщение, что вы видели когда создавали таблицу через страницу создания таблиц на SQL. Мы уже умеем создавать сами таблицы, но как насчёт того чтобы создать какие то записи в таблице? Для этого есть команда INSERT, и давайте рассмотрим пример, который показанный ниже:
    INSERT INTO todo (title, mission) VALUES
    (‘Learn PHP’, ‘I need to learn.’);
    Как вы видите, то здесь мы добавляем новую запись в таблицу todo. Чтобы лучше понять что мы сейчас делаем, выполните данный

    PHP: Junior Kit
    132
    запрос и перейдите в эту таблицу в базе данных. В результате вы сможете увидеть, что у нас теперь есть одна запись в таблице.
    Ну а теперь вернемся к коде запроса который мы только что выполнили. Сначала мы указываем, в какую именно таблицу мы хотим добавить запись, и делаем мы это с помощью команды INSERT и предложения INTO, после чего указываем имя таблицы, к которой мы хотим применить операцию.
    Важно понимать, что такое предложение в SQL. Предложение это не команда, предложением можно больше назвать дополнением для команды которое дает больше возможностей для создания более динамического запроса. Ну а что идет дальше? Дальше в дужках мы указываем какие поля будет иметь запись. В нашем запросе это title и learn
    . После этого идет предложение VALUES которое указывает какие именно данные мы хотим занести в указанные нами поля. В дужках мы указали краткие строковые данные.
    Можете попробовать сами создать какую запись в таблице. Только главное чтобы столбцы и параметры таблицы были указаны правильно. А как насчёт того чтобы попробовать извлечь данные из какой то записи из таблицы? Для этого есть команда SELECT, после команды мы указываем с каких полей записей хотим взять данные, и после этого указываем предложение FROM для того чтобы указать из какой таблицы мы хотим взять эти данные. Давайте рассмотрим небольшой пример:
    SELECT * FROM todo;
    Только что мы сделали запрос на то чтобы взять все данные из таблицы todo. А указанием того что мы хотим взять данные со всех полей столбцов стал оператор *. Если мы хотим с вами взять какой то определенный столбец то достаточно ввести после команды SELECT название нужного нам столбца:
    SELECT title FROM todo;
    Но снова таки, здесь уже будут взяты все поля со столбца title.
    Если мы хотим только один чётко определенный объект то надо задать

    PHP: Junior Kit
    133
    условие поиска с помощью предложения WHERE, задав условие для поиска:
    SELECT title FROM todo WHERE id = 1;
    Выполнив этот запрос, мы получим поле title, id которого имеет значение равное 1. Или можно взять все элементы по id, задав такое условие поиска:
    SELECT * FROM todo WHERE id = 1;
    Как вы смогли понять то команда WHERE нужна для того чтобы задать условие поиска. Задав условие поиска, мы можем динамично искать любые данные в таблице. Можно брать не только один элемент, но и несколько, как показано это в этом примере:
    SELECT id,title FROM todo WHERE title =
    “Hello”;
    Я решил вам показать таблицу в которой показаны самые востребованные команды в SQL:
    Командa
    Действие
    INSERT
    Создание записи в таблице.
    CREATE
    Создание БД/таблицы.
    SELECT
    Извлечение данных в таблице.
    UPDATE
    Обновить данные в записи.
    DELETE
    Удалить данные в записи.
    RENAME
    Переименовать таблицу.
    ALTER
    Модификация столбца.

    PHP: Junior Kit
    134
    DESCRIBE
    Описание таблицы.
    -
    Табл. 16 - Самые востребованные команды в SQL
    Команда INSERT
    Простым примером манипуляции записями таблиц может быть команда INSERT, с помощью которой вы можете добавлять данные в БД и в таблицу:
    INSERT INTO my_posts (title, data, author)
    VARIABLES (‘PHP Junior Kit’, ‘It’s nice book dude.’,
    ‘Demian Kostelny’);
    После аргумента INTO идут столбцы, в которые мы хотим добавить данные, после чего идет ещё предложение VARIABLES, которое указывает какие именно данные надо добавить. Можете сделать тестовый запрос в таблице, не обязательно указывать те же самые данные как у меня. Можете написать что то своё, только главное чтобы все было совместно со столбцами таблицы.
    Команда DELETE
    Хорошо, мы умеем создавать и извлекать данные, а как насчёт удаления данных? Для этого есть команда DELETE которая используется для удаления указанных нами данных. Например, вот как выглядит запрос удаления записи в таблице где значение столбца author равняется Mike
    Freeman:
    DELETE * FROM my_posts WHERE author = ‘Mike
    Freeman’;
    Заметьте, что в нашем примере мы удаляем все записи в таблице, где автором записей является Mike Freeman.
    Команда UPDATE
    А что делать если нам надо обновить столбцы в таблице? Для этого в SQL есть команда UPDATE:

    PHP: Junior Kit
    135
    UPDATE [таблица] SET [что именно изменить]
    WHERE [условие поиска];
    Небольшой пример, где показана таблица в которой сохраняются контактные данные, и где производиться изменение данных номер телефона пользователя Gordon Freeman:
    UPDATE contacts SET phone = ‘85983921’, email =
    ‘gordon.freeman@gordonfree.com’
    WHERE name
    =
    ‘Gordon’, last_name = ‘Freeman’;
    Обновление понадобиться тогда когда пользователь захочет изменить какие-то данные об себе. У нас также будет отдельный PHP пример с формой которая используется для изменения данных пользователем.
    Команда ALTER
    Если нам понадобиться сделать какую-нибудь модификацию столбцов в определенной таблице, то воспользуйтесь командной ALTER.
    Команда может добавлять/изменять/удалить столбец. Пример добавления нового столбца в таблицу:
    ALTER my_table ADD note varchar(200);
    В примере в таблицу my_table мы добавили столбец с названием note и текстовым типом данных varchar. Или ещё вот пример переименования столбца:
    ALTER my_table
    RENAME
    COLUMN note
    TO super_note;
    Или вот пример удаления столбца:
    ALTER my_table DROP note;
    Ну или если нам надо будет заменить тип данных есть такая команда:
    ALTER my_table MODIFY super_note text(500);
    Но это ещё не все то, на что способна команда ALTER. Можно выключить PRIMARY KEY таблицы:

    PHP: Junior Kit
    136
    ALTER my_table DISABLE PRIMARY KEY;
    Ну и конечно же включить:
    ALTER my_table ENABLE PRIMARY KEY;
    На этой нотке я завершаю этот подраздел, и мы углубляемся дальше в мир программирования баз данных.
    10.3
    Типы данных в SQL
    Я показал вам только 3 типа данных SQL, но по-настоящему их намного больше. Все типы данных делятся на разные группы. Например, есть группа с строковыми данными т.е. текстовыми. Внизу показана таблица с группами типов данных:
    Название типа данных
    Типы данных в группе
    Целые числа int; tinyint; bignit; smallint; bit; numeric; decimal; money; smallmoney;
    Приблизительные числа float; real;
    Дата и время date; time; datetime; smalldatetime;datetimeof fset;
    Строковые char; text; varchar;
    -
    Табл. 17 - Числовая группа типов данных в SQL
    Дальше мы будем рассматривать каждую группу по отдельности и типы данных которое есть в определенной группе. Сначала мы рассмотрим группы с целыми числами. Также я хотел сказать что в таблице я указал не все типы данных, я сделал это для того чтобы облегчить материал, поскольку их много, а знать все не обязательно.
    Главное знать самые востребованные для работы.

    PHP: Junior Kit
    137
    Целые числа
    Вы уже знаете как оперировать с числами в РНР, в SQL работают также само как и те числа с которыми мы встречаемся каждый день. В нижней таблице показано описание типов данных в этой группе:
    Тип данных
    Длина
    Память
    Bigint от -2^63 (-9 223 372 036 854 775 808) до 2^63-1
    (9 223 372 036 854 775 807)
    8 байт
    Int от –2^31 (–2 147 483 648) до 2^31-1 (2 147 483 647)
    4 байта smallint от -2^15 (-32 768) до
    2^15-1 (32 767)
    2 байта tinyint от 0 до 255 1 байт
    -
    Табл. 17 - Группа целых чисел в SQL
    Какой-то большой разницы между этими типами данных нету. Только они имеют разную максимальную длину и разный размер памяти. Ну и вот небольшой пример с числовым типом данных:
    CREATE TABLE data (
    … cool bigint(1000) NOT NULL
    );
    Чтобы указать в таблице, какой именно тип будет использоваться со знаком или без знака есть команда метод UNSINGED:
    CREATE TABLE data ( cool bignint(600) UNSINGED

    PHP: Junior Kit
    138
    );
    После выполнения этого запроса создаться таблица, в котором будет поле cool с большим числовым типом данных bigint, поле сможет иметь положительный или отрицательный знак. В заключение о группе целых чисел скажу что использование этих типов данных зависит от ситуации когда нам надо будет использовать их. Например, если нам надо будет создать поле в котором будет очень большая цифра которая не поддерживается другими числовыми типами данных.
    Приблизительные числа
    Об приблизительных числах мало что можно сказать. Но использование приблизительных чисел нужно для того чтобы показать числа которые имеют очень большую длину после точки. Об этом я уже говорил в разделе об числах в PHP. Пример в котором создается таблица с столбцом avog с числом Авогардо:
    CREATE TABLE science ( avog float(6) NOT NULL
    );
    Дата и время
    Мы уже проходили с вами тему о дате и времени только в языке программирования в PHP. Общее значение времени в SQL и РНР почти такое же самое. В SQL дата и время, как и РНР имеет свой формат и диапазон. Посмотрите на таблицу показанную ниже:
    Тип данных
    Численность
    Диапазон
    Time чч:мм:сс[.нннннн]
    От
    00:00:00.000000 до 23:59:59
    Date
    ГГГГ-ММ-ДД
    От
    0001-01-01 до 31.12.99

    PHP: Junior Kit
    139
    smalldate
    ГГГГ-ММ-ДД чч:мм:сс От
    01.01.1900 до 06.06.2079 datetime
    ГГГГ-ММ-ДД чч:мм:сс[.ннн]
    От 01.0.1753 до
    31.12.1999 datetime2
    ГГГГ-ММ-ДД чч:мм:сс[.ннннннн]
    От
    0001-01-01 00:00:00.000000 до
    9999-12.31 23:59:59.999999
    Datetimeoffest
    ГГГГ-ММ-ДД чч:мм:сс[.ннннннн](
    в офрмате UTC)
    От
    0001-01-01 00:00:00.000000 до
    9999-12.31 23:59:59.999999
    (в фомате UTC)
    -
    Табл. 18 - Группа типов данных даты и времни в SQL
    Внимательно рассмотрев таблицу, можно заметить какая есть разница между этими двумя типами данных. Но кроме все этого есть куча функций, которые могут иметь эти типы данных. Вот пример представления данных даты с помощью типа данных date:
    CREATE TABLE dates ( example_date DATE NOT NULL
    );
    А сейчас давайте сделаем модификацию нашей таблицы с постами, добавив столбец с типом данных date:
    ALTER my_posts ADD creating_date date;
    Ну и небольшой пример как можно доставать данные из таблицы в зависимости от времени даты:
    SELECT * FROM my_posts WHERE creating_date =
    “2018-06-06”;

    PHP: Junior Kit
    140
    Строковые данные
    Вы уже знаете два типа данных из этой группы типов данных, это text и varchar. Посмотрите на таблицу под номером 19 чтобы лучше понять характеристику этих типов данных:
    Тип данных
    Длина
    Char от 1 до 8000
    Varchar от 1 до 8000
    Text от 1 до 2 147 483 647
    -
    Табл. 19 - Группа строковых типов данных в SQL
    Примеры приводить не буду, в разделе о таблицах вы уже насмотрелись примеров с varchar и text. Разве что скажу, для чего нужен тип данных char. char - может иметь в себе один символов, и так наиболее часто бывает, что этот тип данных используют только для одного символа. Например, в языке программирования C# есть этот тип данных, и вместить в себе он может только один символ.
    1 0.4 Операторы
    Для создания более гибких и динамических запросов к БД надо использовать операторы. Например, вот пример того как буду извлекаться данные из таблицы где идентификатор равен больше чем 5:
    SELECT * FROM todo WHERE id > 5;
    С этим оператором вы уже встречались в подразделе об числовых операторах. Посмотрите на таблицу ниже, в которой я привел математические операторы для SQL-запросов:

    PHP: Junior Kit
    141
    Оператор
    Значение
    =
    Равно
    >
    Больше чем
    <
    Меньше чем
    >=
    Больше или равно
    <=
    Меньше или равно
    <>
    Не равно
    -
    Табл. 20 - Математические операторы в SQL
    Работа этих операторов такая же самая как и в PHP. Долго задерживаться не будем, поэтому перейдем к булевым операторам.
    Булевы операции
    А если нам надо будет извлечь не только данные где идентификатор больше за число 5 но и title равен строке “Hello world!
    ”. Вот пример:
    SELECT * FROM todo WHERE id > 5 AND title =
    “Hello world!”;
    Так уже больше интересно. Можно сделать запросы динамичнее добавив ещё операторов:
    Оператор
    Значение
    AND
    Логическое “И”
    OR
    Логическое “ИЛИ”

    PHP: Junior Kit
    142
    NOT
    Логическое “НЕ”
    -
    Табл. 21 - Логические операторы в SQL
    Давайте для лучшего закрепления материала рассмотрим такой пример:
    SELECT * FROM todo WHERE id > 5 OR NOT title =
    “Super todolist”;
    Специальные операторы
    Кроме тех операторов, которые были рассмотрены выше есть и специальные операторы. Это IN, BETWEEN, LIKE и IS NULL. Как и логические операторы, эти специальные операторы делают запросы более динамическими и расширенными.
    Первый оператор, который мы рассмотрим это будет оператор IN.
    Так что же из себя представляет этот оператор. Оператор IN это набор со значениями которые мы указываем, он проверяет есть ли в таблице заданные значения того или иного объекта.
    Вот пример простого запроса с категориями:
    SELECT
    *
    FROM todo
    WHERE category
    IN
    (‘Science’, ‘Blockchain’, ‘Technologies’);
    Описать этот запрос на простом понятном для человека языке можно так: запрос берёт все элементы в которых значение категории может быть или Science, или Blockchain, или Technologies.
    Надеюсь, вы поняли работу этого операторы. Двигаемся дальше и сейчас мы узнаем об операторе BETWEEN. Этот оператор работает очень похоже на оператор IN, но только уже здесь устанавливается диапазон значений.
    Например:
    SELECT * FROM todo WHERE id BETWEEN 10 AND 20;
    Запрос извлечет элементы, в которых идентификатор в диапазоне от 10 к 20. Или вот ещё пример с буквами:

    PHP: Junior Kit
    143
    SELECT * FROM todo WHERE category BETWEEN “A”
    AND “C”;
    Следующий оператор это LIKE. Он ищет в указанном столбце указанные в условии подстроки. Рассмотрим простой пример:
    SELECT * FROM todo WHERE title LIKE “A”;
    После выполнения этого запроса из таблицы todo будут извлечены данные которые в которых title начинается на букву А. Но важно помнить что данный оператор работает только со строковыми
    данными. Если нам понадобиться найти значения в которых будут значения NULL. То надо использовать оператор IS NULL:
    SELECT * FROM todo WHERE id IS NULL;
    Мы не получим никаких данных из поля id поскольку они будут пусты. На этом я завершаю этот подраздел об операторах в SQL.
    Заключение об операторах
    В заключение об операторах в SQL скажу, что они позволяют создавать более гибкие и динамические запросы, что позволяет расширить круг возможностей.
    10.5
    Агрегатные функции
    Для того чтобы взаимодействовать с группой полей в таблице надо использовать агрегатные функции. В таблице, которая находиться ниже можно посмотреть список агрегатных функций:
    Функция
    Действие
    COUNT
    Выдаёт количество полей в таблице.
    SUM
    Выдаёт сумму выбранных полей.

    PHP: Junior Kit
    144
    AVG
    Выдаёт средние значение выбранных полей.
    MAX
    Выдаёт наибольшее значение выбранных полей.
    MIN
    Выдаёт наименьшее значение выбранных полей.
    -
    Табл. 22 - Агрегатные функции
    Вопрос, как использовать агрегатные функции в SQL? Например, вот запрос с командой SELECT где после команды SELECT я использую агрегатную функцию:
    SELECT SUM(id) FROM todo;
    Это была функция SUM. И если выполнить такой запрос, то мы получим сумму всех id в таблице todo. Можно уже считать, что мы рассмотрели функцию SUM, а как насчёт функции COUNT?
    Как было сказано то данная функция возвращает значение количества выбранных полей в таблице:
    SELECT COUNT(title) FROM todo;
    Результатом этого запроса будет значение количества полей столбца title. Эту команду полезно использовать, если нам надо получить количество пользователей.
    Функция GROUP BY
    Функция GROUP BY используется в команде SELECT для агрегации записей выбранных в таблице. Например можно сделать такой запрос с такой конструкцией:
    SELECT title, year FROM posts GROUP BY year;
    После выполнения этого запроса результаты будут по группированы по столбцу year. То есть результат будет показан по

    PHP: Junior Kit
    145
    возрастанию значения года. Само название команды переводиться как - группировать по.
    Говорить об других агрегатных функциях нету смысла. Почему?
    Поскольку я уже вам показал, как можно использовать агрегатные функции, а также с некоторыми вы уже встречались в PHP, только они использовались немного по-другому. Например есть агрегатная функция
    MAX и в разделе о функциях в под разделе об функциях для работы с числовыми данными вы встречались с функцией max() которая работает также само как и та самая агрегатная функция.
    На этом я завершаю этот подраздел об агрегатных функциях.
    10.6
    Транзакции
    Транзакция это единица работы БД. Если транзакция была выполнена успешно, то модификация данных, сделанная во время транзакции становиться частью базы данных. Но если транзакция прошла не успешно и получилась ошибка, то будет сделан откат данных.
    Простым примером транзакции может быть то как мы делаем запрос на создание таблицы и мы получаем успешный результат что таблица создана. Это успешная транзакция как вы смогли уже понять. Для того чтобы можно было работать с транзакциями в SQL есть функции которые я привел ниже:
    Функция
    Действие
    BEGIN
    Начало транзакции.
    COMMIT
    Внесение изменений.
    ROLLBACK
    “Откат” внесенных изменений.
    -
    Табл. 23 - Команды для транзакций

    PHP: Junior Kit
    146
    Команды транзакций в действии
    Как уже было сказано, эта команда задает начало транзакции. Вот пример запроса который отправляет транзакцию MySQL:
    BEGIN:
    INSERT INTO todo (title,author) VALUES (‘Super title’, ‘Mr. Freeman’);
    COMMIT:
    SELECT * FROM todo;
    После выполнения такого запроса вы получите результат вывода всех записей с помощью команды COMMIT. Команда COMMIT отмечает успешное завершение транзакции, и если надо можно ввести команду которая выполниться после завершения транзакции, как и было показано в нашем примере.
    Дальше у нас идет последняя команда и это команда ROLLBACK которая как было описано выше используется для того чтобы сделать
    “откат” внесенных изменений транзакцией. Команда может делать любой
    “откат” к любым изменениям транзакций. Важно также сказать, что транзакциям можно давать названия. Вот пример запроса с использованием ROLLBACK:
    BEGIN TRAN @my_tran:
    INSERT
    INTO users
    (username)
    VALUES
    (‘Superuser’);
    COMMIT:
    SELECT * FROM users;
    ROLLBACK TRAN @my_tran;
    Как мы видим, то в этом примере мы задали имя для нашей транзакции после чего мы с помощью команды ROLLBACK сделали откат изменений.

    PHP: Junior Kit
    147 10.7
    Резервное копирование базы данных
    Данные, которые будут храниться в вашей базе данных могут становить какую то ценность. И поэтому чтобы не потерять их если могут случиться какие то события которые могут навредить данным в вашей
    БД, надо делать резервные копии БД. Для этого в MySQL есть команда mysqldump: mysqldump -u пользователь -pпароль база_данных
    Как вы смогли понять, то здесь мы вводим имя и пароль пользователя mysql. Например, если у нас локальный сервер то запрос с этой командой выглядел бы вот так: mysqldumo -u root -p test
    После выполнения такого запроса в консоли мы получим вывод данных на экран, которые есть в базе данных. Но, а если мы хотим выгрузить данные в файл то нам уже надо выполнить такую команду: mysqldump -u пользователь -pпароль test > test.sql
    Выполнив эту команду, данные из БД test будут выгружены в файл todo.sql. Если заглянуть в этот файл то можно будет увидеть код запроса для создания таблиц. Но если нам понадобиться создать копию структуры отдельной таблицы то перед именем базы данных надо будет ввести название таблицы: mysqldump -u пользователь -pпароль test todo > todo.sql
    А чтобы сделать копию структуры всех баз данных надо ввести вместо названия базы данных команду --all-databases: mysqldump
    -u пользователь -pпароль --all- databases > all_db.sql
    Хорошо, ну а что делать, если у нас есть копия БД и мы хотим её загрузить на сервер баз данных? Для этого нам просто надо будет

    PHP: Junior Kit
    148
    воспользоваться командой mysql, например загрузка всех баз данных на сервер: mysql -u пользователь -pпароль < all_db.sql
    Но если нам надо будет выгрузить только одну базу данных то тогда нам надо будет воспользоваться ключом D: mysql -u пользователь -pпароль -D test < test.sql
    Или вот ещё пример где показано как можно выгрузить отдельную таблицу: mysql -u пользователь -pпароль test < todo.sql
    На этом я завершаю раздел об работе с mysql в общем, следующий раздел будет об том как можно работать с MySQL через РНР, и конечно же мы будем делать реальные примеры. А сейчас же, как и в каждом разделе я закончу этот запрос для вас вопросами и упражнениями для самоконтроля.
    Вопросы и упражнения для самоконтроля
    1. Что такое mysql?
    2. Что такое база данных?
    3. Какими способами можно создать БД?
    4. Для чего используется SQL?
    5. Какие есть способы создания таблицы в БД?
    6. Зачем нужна команда SELECT?
    7. Для чего нужно предложение AUTO_INCREMENT?
    8. Создайте таблицу products которая бы использовалась для хранения покупок. В таблице должны быть столбцы с именем продукта, описанием и его ценой.
    9. Как можно использовать команду INSERT? Сделайте запрос в свою таблицу с этой командой.

    PHP: Junior Kit
    149 10. Для чего нужно предложение PRIMARY KEY?
    11. Какие вы знаете типы данных в SQL?
    12. Какие есть группы типов данных в SQL?
    13. К какой группе принадлежит тип данных money?
    14. Какие есть типы данных в группе даты и времени?
    15. Что такое агрегатные функции?
    16. Зачем нужна функция COUNT?
    17. Создайте таблицу в которой один столбец будет иметь числовые данные. После этого воспользуйтесь командой INSERT и создайте
    5 полей записей в этом столбце. После чего воспользуйтесь функцией SUM что сложить значения всех полей.
    18. Что такое транзакции и для чего они нужны?
    19. Как задается начал транзакции?
    20. Опишите работу команды COMMIT?
    21. Как можно сделать откат данных?
    22. Какая команда используется для резервного копирования данных?
    23. Как можно сделать копирование данных только одной таблицы в базе данных?
    24. Как можно сделать копирование всех баз данных?
    25. Как делается выгрузка данных в базу данных?
    26. Как выгрузить одну отдельную таблицу в БД?

    PHP: Junior Kit
    150 11 Доступ к MySQL через PHP
    Как вы смогли понять из названия раздела, то этот раздел будет посвящен тому как получить доступ и как работать с MySQL через PHP.
    В php есть отдельный раздел функций, в котором есть функции с помощью которых можно реализовать доступ к MySQL, а также делать запросы к базам данных и таблицам и многое другое с помощью чего можно работать с MySQL.
    В этом разделе будут показаны реальные примеры использования
    MySQL в PHP, но кроме этого также и где можно использовать то что мы выучили о PHP. Первое что мы должны сделать, это подключиться к самой базе данных. Эти знания нам очень понадобиться когда мы уже будем программировать само наше приложение.
    Конечно же, самым простым способом показать все это на реальном примере создания очень простого блога. Блог не будет иметь регистрации, но он сможет прекрасно продемонстрировать то, как будет выглядеть работа с базой данных.
    Хорошо, тогда начинаем создавать наш примитивный блог.

    PHP: Junior Kit
    151 11.1 Доступ к MySQL через PHP
    Мы не сможем просто взять и осуществить доступ к базе данных через РНР если мы не будем подключены к ней. Первое что мы должны сделать - это подключиться к базе данных. Для этого в PHP есть функция mysqli_connect
    , внутри функции мы должны указать локальный сервер, пользователя, пароль пользователя и имя базы данных к которой мы хотим подключиться.
    Например, вот как будет выглядеть подключение к базе данных если мы используем локальный сервер:
    $connect = mysqli_connect("localhost", "root",
    "", "test");
    ?>
    Как вы смогли заметить, то мы оставили пустым поле с паролем, а все потому что мы используем локальный сервер. Но если у вас другая операционная система, например Linux то может быть другое название пользователя и пароль. А все через то, что при установке MySQL на Linux надо обязательно указать пароль и имя пользователя. Но это конечно же все зависит от того какую вы используете операционную систему.
    Вернемся к подключению к базе данных, лучше указывать имя сервера, имя пользователя и т.д. в отдельных переменных, так будет легче читать код:
    $host = "localhost";
    $username = "root";
    $password = "";
    $db = "test";
    $connect = mysqli_connect($host, $username,
    $password, $db);
    ?>

    PHP: Junior Kit
    152
    Поскольку мы с вами в этом разделе будем создавать блог, то у нас будет отдельный файл внутри которого и будет воспроизводиться подключение к базе данных. Сделаем наш файл более динамическим, добавим проверку на успешное подключение к нашей базе данных:
    $host = "localhost";
    $username = "root";
    $password = "";
    $db = "test";
    $connect = mysqli_connect($host, $username,
    $password, $db); if ( !$connect ) { echo "Подключение не удалось"; echo "Произошла ошибка:" . mysqli_connect_errno; exit;
    }
    ?>
    Здесь функция mysqli_connect_errno() выводит ошибку если она произошла. Это будет полезно использовать, если мы не сможем подключиться к самой базе данных. Теперь немного представим структуру нашего блога:
    |
    |- classes/
    |---db.php
    Как видно из схемы, то у нас будет папка которая называется classes
    . Внутри папки будут находиться классы, которые мы будем использовать в нашем приложении. Мы рассмотрели способ подключения к базе данных. Но как насчёт построения запросов? Об этом будет в следующем подразделе.

    PHP: Junior Kit
    153 11.2
    Создание запросов к MySQL в PHP
    Создание запросов через РНР позволяет получает данные с базы данных и обрабатывать их уже в РНР скрипте. После чего эти данные можно отображать на страницах своего приложения. В предыдущем подразделе мы с вами подключились к базе данных. Теперь надо сделать таблицу для постов и тестовый запрос для того чтобы посмотреть работает ли все, вот код нашей таблицы на SQL:
    CREATE TABLE posts ( id int(11) AUTO_INCREMENT, title varchar(20) NOT NULL, data text(350) NOT NULL, author varchar(20) NOT NULL,
    PRIMARY(id)
    );
    Создайте в нашей базе данных запрос с этим кодом, и переходим к следующему зданию. Нам надо создать тестовый запрос, и этот запрос будет создавать запись в базе данных с помощью команда INSERT. Для этого нам для начала надо подключить файл с подключением к базе данных, после чего мы обратимся к переменной, с помощью которой мы подключаемся к базе данных. Вот как это выглядит на практике:
    $request = $connect->query("INSERT INTO posts
    (title, data, author) VALUES (‘Super Test’,‘Here is data for request’,‘Anonymous’) "); if ($request) { echo "ALL IS WORKING";
    } else {

    PHP: Junior Kit
    154
    echo "ERROR WITH REQUEST";
    }
    ?>
    Как вы смогли заметить то здесь мы создаём файл не в папке classes, а папке нашего приложения в общем. Назовём этот файл index.php после чего перейдём по адресу нашего приложения в браузере и в результате если мы правильно все подключили, мы должны получить ответ об том что запрос был отправлен и всё прошло успешно.
    Сообщением которое сообщает об успешном запросе есть строка
    “ALL IS WORK”. Если вы видите тоже самое то тогда запрос был успешным и значит вы можете перейти в БД и посмотреть в таблицу, после чего вы увидите что данные которые были указаны в запросе который создался через PHP-скрипт были получены.
    Хорошо, а давайте теперь попробуем извлечь эти данные? Тут уже все будет немного сложнее. После того как мы сделаем запрос, мы должны будем воспользоваться специальной функцией mysqli_fetch_assoc() чтобы извлечь данные:
    $query = "SELECT * FROM posts";
    $request = connect->query($query); if ($request) { while ($row = mysqli_fetch_assoc($request))
    { echo $row["id"] . $row["title"] .
    $row["data"] . $row["author"];
    }
    }
    ?>

    PHP: Junior Kit
    155
    Как вы смогли здесь заметить, я использую цикл while для того чтобы вывести все записи из таблицы. Конечно, можно было сделать так чтобы взять из таблицы только одну запись. Именно переменная row содержит массив из данными, и как вы смогли заметить то индексы элементов массива это названия столбцов в таблице.
    А функция mysqli_fetch_assoc() как раз и используется для того чтобы извлечь данные из заданного запроса. Теперь если вы перейдете на страницу вашего приложения, т.е. index.php то вы сможете увидеть вывод записей из вашей таблицы, если вы сделали все правильно.
    Конечно же, здесь не будет дизайна. Но зато мы сможем увидеть все записи, которые были в таблице. Кроме цикла while можно было также воспользоваться циклом for, но нам надо будет подсчитать число записей с помощью функции num_rows:
    // …
    $rows = $request->num_rows; for ($i = 0; $i < $rows; $i++) { echo "Title:" . $request-
    >fetch_assoc()["title"]; echo "Data:" . $request-
    >fetch_assoc()["data"]; echo "Author:" . $request-
    >fetch_assoc()["author"];
    }
    ?>
    Думаю, вы уже смогли здесь заметить что я использую другую функцию fetch_assoc а также что я вызываю её так как метод какого то класса. Это повязано с тем, что переменная request получает значение от класса mysqli и именно через это мы можем вызвать функции для MySQL через эту переменную с помощью этой стрелочки
    ->

    PHP: Junior Kit
    156
    Я просто вам показал, как можно создавать запросы к базе данных с помощью РНР, но когда мы завершим создание запросов нам надо будет закрыть соединение с базой данных, для этого есть функция close():
    // Конец файла index.php
    $request->close();
    $connect->close();
    ?>
    Как вы можете увидеть, то сначала мы закрыли соединение для запроса, и после чего мы закрыли соединение с базой данных в нашем скрипте. Есть также и второй способ закрыть соединение с БД, это с помощью функции mysqli_close():
    // Конец файла index.php mysqli_close($connect);
    ?>
    На этом я завершу этот подраздел, и мы перейдем к более практическим задачам и созданию своего примитивного блога с использованием MySQL.
    11.3
    Создание блога
    У нас уже есть таблица для записей блога. А как насчёт других элементов? Как например страницы для создания записи, редактирования и т.д. Для начала мы должны будем создать форму для создания записей после чего сделать скрипт который обрабатывал эту форму.
    Начнём с формы, в нашей таблице есть 3 столбца(это если не считать id), значит в нашей форме должно быть 3 поля для каждого столбца:
    1   2   3   4   5   6   7   8   9   ...   14


    написать администратору сайта