Основные запросы SQL работа с базой данных PHP


X

Основные запросы SQL работа с базой данных PHP

Вся работа с базой данных осуществляется с помощью четырех основных запросах: получение (SELECT), удаление (DELETE), обновление (UPDATE) и добавление данных (INSERT).

Если вы хотите сделать запрос к базе данных, сначала проговорите, как должен он работать и что он должен делать, пример:

Получить из базы данных "user" значения пользователя, а имено адрес и телефон, как буду его искать (по его id). Значит запрос будет примерно следующим: 

 

SELECT adres, phone FROM user WHERE id = $id

 

$id - это переменная которую я присвою заранее. 

Если вы хотите получить все поля пользователя:

 

SELECT * FROM user WHERE id = $id

 

А теперь посмотрим все запросы по одному:

SELECT

Самый простая и часто употребляемая команда, которая позволяет получить от сервера практически любую информацию из таблиц. Её синтаксис прост:

 

SELECT [имя_поля] FROM имя_таблицы

 

Если дословно: ВЫБРАТЬ поле ИЗ таблицы. Имена полей необходимо указывать через запятую или использовать * для вывода всех полей. В примерах, не забывайте указывать префикс таблиц, если он у вас есть. Вот и вся сложность.

Пример:

SELECT type, title FROM node

 

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

Многие задаются вопросом а где мои данные, я вроде выполнил запрос а как вывести их на экран, все очень просто, после запроса нужно превратить ответ в более удобный и читаемый формат, пример:

$sql ="SELECT * FROM user WHERE id = $id";


$poluchit_otvet = mysql_query($sql); //Выполнить запрос 


$prevratit_v_massiv = mysql_fetch_array($poluchit_otvet);


print_r($prevratit_v_massiv); //Отобразить массив

 

Этот запрос подайдет когда в ответе одна запись, если записей много их нужно выводить через цикл WHILE, пример:

 

$sql ="SELECT * FROM user"; //Вывод всех юзеров которые есть в БД


$poluchit_otvet = mysql_query($sql); //Выполнить запрос 


$prevratit_v_massiv = mysql_fetch_array($poluchit_otvet);


//Создаем пустой массив и наполняем его:


 $PageStaticList = array();

        $i = 0;

        while ($row = $result->fetch()) {

            $PageStaticList[$i]['id'] = $row['id'];

            $PageStaticList[$i]['phone'] = $row['phone'];

            $PageStaticList[$i]['adres'] = $row['adres'];

            $PageStaticList[$i]['email'] = $row['email'];

            $i++;

        }

 

Чтобы вывести эти значения я использую конструкцию foreach as, пример:

 

foreach ($PageStaticList as $arr): 


//Говору что циклить закончим когда все превратим в переменную - массив arr


echo $arr['phone'];


// Каждую пройденую итерацию, вывожу переменную phone,


//тем самым получаю все номера телефонов user - ов, которые есть в БД


endforeach;


 

 

WHERE

WHERE поле условие значение

Получение данных полей таблиц не составляет большого труда, достаточно знать имена полей(какие в них хранятся логические данные) и таблицы. Но есть одно но - в большинстве случаев нужны не все записи, а записи, удовлетворяющие определённому условию. Тут на помощь нам приходит выражение WHERE:

 

SELECT [имя_поля] FROM имя_таблицы WHERE поле условие значение

 

К нашему запросу мы добавили условие фильтра, позволяющего из общей массы отобрать только нужные нам данные.

Пример:

SELECT name, mail FROM users WHERE uid = 1

 

Данных “хакерским” запросом можно получить имя и email пользователя №1 системы, ограничив количество просматриваемых записей только записью, у которой uid = 1 т.е. супер-пользователя сайта.

Выражение WHERE довольно мощное и позволяет создавать очень сложные фильтры, и применять различные условия в зависимости от типа данных поля. Основные условия это:

  • знаки сравнения >, <, =, >=(больше или равно), <=(меньше или равно), <> или != (не равно).
  • оператор LIKE (шаблон) для строк. В шаблоне: % - любое количество, _ - 1 символ
  • AND, OR, NOT, XOR стандартные функции И, ИЛИ, НЕ, ОДИН ИЗ. Используйте ( ), для избежания двусмысленностей
  • IN (список_значений) аналог множественного OR

Примеры:

SELECT title FROM node WHERE type IN ('page', 'forum') AND status = 1;

 

Выбрать заголовки материалов типов page или forum которые опубликованны. Это же выражение можно переписать в следующем виде:

 

SELECT title FROM node WHERE (type = 'page' OR  type = 'forum') AND status = 1;

 

 

SELECT name, mail FROM users WHERE (name like '%sex%') OR (mail like '%sex%');

 

Позволит просмотреть записи, у которых часть ника или email содержит комбинацию символов ‘sex’.

ORDER BY

 

ORDER BY [BINARY] имя_поля [DESC]

 

Выражение в запросе позволяет отсортировать выводимые строки по заданным полям. При этом оно не влияет на получаемый результат, а только упорядочивает его вывод. Если используется выражение WHERE, то ORDER BY должно быть после него.
Необязательное BINARY позволяет осуществлять сортировку строковых данных с учётом регистра, а DESC изменить порядок сортировки на обратный.

Пример:

SELECT name FROM users WHERE status = 1 ORDER BY access DESC;

 

Вывод только ников пользователей, отсортированных по времени их последнего входа на сайт.

LIMIT

 

LIMIT количество, смещение  или  LIMIT число или LIMIT число OFFSET смещение

 

Данное выражение MySQL, в дополнение к WHERE позволяет ограничить количество выводимых SELECT строк заданным количеством. Если указано смещение, то заданное количество строк будет пропущено при начале отсчёта вывода.

Пример:

SELECT name FROM users WHERE status = 1 ORDER BY access DESC LIMIT 5;

 

Вывод только 5 ников пользователей, отсортированных по времени их последнего входа на сайт.

DELETE

В отличии от команды SELECT, следующие команды приводят к изменениям данных в таблицах. Поэтому будьте внимательны к правильности их ввода. Команда DELETE используется для удаления одной или нескольких строк в таблице. Синтаксис команды прост:

 

DELETE FROM имя_таблиц;

 

Имена столбцов не используются, поскольку применяется для удаления целых строк а не значений из строк. Зачастую имеет смысл удалить только часть строк, по заданным критериям, поэтому в команде SELECT можно использовать инструкции WHEREORDER BY и LIMIT.

Пример:

DELETE FROM users WHERE (name like '%sex%') OR (mail like '%sex%');

 

Используя данную команду, мы почистим таблицу пользователей от тех, кто содержит в любой части поля ника или email последовательность ‘sex’

Если вам нужно выполнить полную очистку(удаление) всех данных в таблице - воспользуйтесь командой:

 

TRUNCATE TABLE имя_таблицы

 

При этом структура таблицы разрушается и заново создаётся. При этом все данные удаляются.

UPDATE

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

 

UPDATE имя_таблицы SET имя_поля = значение

 

Как и в предыдущей команде, тут можно использовать инструкции WHERE, ORDER BY и LIMIT, чтобы ограничить количество и диапазон затрагиваемых строк.

Пример:

UPDATE users SET status = 0 WHERE (name like '%sex%') OR (mail like '%sex%');

 

В любимом нашем примере мы вместо удаления, снимем флаг активности для отфильтрованных пользователей.

INSERT

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

 

INSETR INTO имя_таблицы VALUES (значения1), (значения2),...

 

Значения должны быть все (по числу полей в таблице), записаны через запятую, и их порядок должен соответствовать порядку следования столбцов в таблице. Альтернативный синтаксис:

INSETR INTO имя_таблицы (имена_полей) VALUES (значения1), (значения2),...

В данном случае порядок значений для полей должен соответствовать перечисленному порядку. Пропущенные поля будут заполнены значениями по умолчанию. И ещё один тип синтаксиса:

 

INSETR INTO имя_таблицы SET имя_поля = значение, …

 

В данном варианте необходимо указывать, через запятую, имена полей и их значения

Пример:

INSERT INTO role VALUES (3,"Суперадмин"),(4,"Модератор");

 

Данным запросом была добавлены новые роли с именем Суперадмин и Модератор.

 

FastFinder Просмотров сегодня +1 03 дек 2018 команда сайта
Создание сайтов и мобильных приложений от 5 500 руб. Любой сложности!
Реклама Собственный фреймворк. Большие и сложные проекты. ТОП 100 разработчиков РФ.
Создание сайтов от 5 500 руб.
Мобильные приложения от 50 000 руб.
irogex.ru
Наши проекты Инстаграм от 6 500 руб.
Конструкторы Ugears купить в Иркутске от 690 руб. с Доставкой!
Реклама UGEARS это путешествие в удивительную атмосферу гармонии природы и совершенства конструкторской мысли
Конструктор Навигатор дат - 690 руб.
Конструктор Комбайн - 2990 руб.
ugears-irk.ru
Оплата и Доставка Контакты
Стоматология в Улан-Удэ | ДентаВита | Шок цены от 100 руб!
Реклама От всей нашей семьи хотим выразить огромную благодарность стоматологической клинике
Осмотр, консультация от 150 руб.
Рентгеновский снимок от 100 руб.
dentavita03.ru
Наши цены Отзывы
Реклама помогает поддерживать
и развивать наш сервис.


Подробнее
(ссылка откроется в новой вкладке)
  Реклама