Как выбрать таблицу в sql

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

Давайте сначала посмотрим все столбцы из таблицы users:

SELECT * FROM users;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Вот и все наши данные, которые мы вносили в эту таблицу. Но предположим, что мы хотим посмотреть только столбец id_user (например, в прошлом уроке, нам надо было для заполнения таблицы topics (темы) знать, какие id_user есть в таблице users). Для этого в запросе мы укажем имя этого столбца:

SELECT id_user FROM users;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Ну, а если мы захотим посмотреть, например, имена и e-mail наших пользователей, то мы перечислим интересующие столбцы через запятую:

SELECT name, email FROM users;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Аналогично, вы можете посмотреть, какие данные содержат и другие наши таблицы. Давайте посмотрим, какие у нас существуют темы:

SELECT * FROM topics;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Сейчас у нас всего 4 темы, а если их будет 100? Хотелось бы, чтобы они выводились, например, по алфавиту. Для этого в SQL существует ключевое слово ORDER BY после которого указывается имя столбца по которому будет происходить сортировка. Синтаксис следующий:

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

По умолчанию сортировка идет по возрастанию, но это можно изменить, добавив ключевое слово DESC

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Теперь наши данные отсортированы в порядке по убыванию.

Сортировку можно производить сразу по нескольким столбцам. Например, следующий запрос отсортирует данные по столбцу topic_name, и если в этом столбце будет несколько одинаковых строк, то в столбце id_author будет осуществлена сортировка по убыванию:

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Сравните результат с результатом предыдущего запроса.

Очень часто нам не нужна вся информация из таблицы. Например, мы хотим узнать, какие темы были созданы пользователем sveta (id=4). Для этого в SQL есть ключевое слово WHERE, синтаксис у такого запроса следующий:

Для нашего примера условием является идентификатор пользователя, т.е. нам нужны только те строки, в столбце id_author которых стоит 4 (идентификатор пользователя sveta):

SELECT * FROM topics WHERE id_author=4;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Или мы хотим узнать, кто создал тему «велосипеды»:

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Конечно, было бы удобнее, чтобы вместо id автора, выводилось его имя, но имена хранятся в другой таблице. В последующих уроках мы узнаем, как выбирать данные из нескольких таблиц. А пока узнаем, какие условия можно задавать, используя ключевое слово WHERE.

ОператорОписание
= (равно)Отбираются значения равные указанному

SELECT * FROM topics WHERE id_author=4;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

> (больше)Отбираются значения больше указанного

SELECT * FROM topics WHERE id_author>2;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Пример:

SELECT * FROM topics WHERE id_author Результат:

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

>= (больше или равно)Отбираются значения большие и равные указанному

SELECT * FROM topics WHERE id_author>=2;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Пример:

SELECT * FROM topics WHERE id_author Результат:

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

!= (не равно)Отбираются значения не равные указанному

SELECT * FROM topics WHERE id_author!=1;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

IS NOT NULLОтбираются строки, имеющие значения в указанном поле

SELECT * FROM topics WHERE id_author IS NOT NULL;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

IS NULLОтбираются строки, не имеющие значения в указанном поле

SELECT * FROM topics WHERE id_author IS NULL;

SELECT * FROM topics WHERE id_author BETWEEN 1 AND 3;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

IN (значение содержится)Отбираются значения, соответствующие указанным

SELECT * FROM topics WHERE id_author IN (1, 4);

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

NOT IN (значение не содержится)Отбираются значения, кроме указанных

SELECT * FROM topics WHERE id_author NOT IN (1, 4);

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

LIKE (соответствие)Отбираются значения, соответствующие образцу

SELECT * FROM topics WHERE topic_name LIKE ‘вел%’;

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sqlВозможные метасимволы оператора LIKE будут рассмотрены ниже.

NOT LIKE (не соответствие)Отбираются значения, не соответствующие образцу

SELECT * FROM topics WHERE topic_name NOT LIKE ‘вел%’;

Метасимволы оператора LIKE

Поиск с использованием метасимволов может осуществляться только в текстовых полях.

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

На сегодня достаточно. В следующем уроке мы научимся составлять запросы к двум и более таблицам. А пока попробуйте самостоятельно составить запросы к таблице posts (сообщения).

Видеоуроки php + mysql

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

Источник

SQL-запросы по-быстрому: краткий и понятный гайд

Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql Как выбрать таблицу в sql. Смотреть фото Как выбрать таблицу в sql. Смотреть картинку Как выбрать таблицу в sql. Картинка про Как выбрать таблицу в sql. Фото Как выбрать таблицу в sql

SQL (Structured Query Language) — это язык структурированных запросов. Он позволяет читать, записывать, удалять, сортировать и фильтровать информацию в базе данных.

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

Структура SQL-запроса

Запрос на выборку данных выглядит вот так:

Рассмотрим подробнее, как производится выборка.

SELECT и FROM

SELECT и FROM — обязательные ключевые слова в этом запросе. С их помощью можно указать, откуда и какие данные можно выбрать:

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

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

Групповой символ упрощает запрос, но при этом снижает производительность. Поэтому лучше использовать его в редких случаях.

WHERE

Обычно нам нужна определенная информация из таблицы. Но как ее быстро найти? WHERE помогает извлечь информацию, отфильтровав ее по одному или нескольким условиям. Это очень удобно!

С WHERE применяются такие операции:

Фильтр по нескольким условиям

Данные можно фильтровать не только по одному, а и по нескольким условиям и значениям. Для этого используются операторы IN, NOT IN, AND, OR.

В результате этого запроса будут выбраны все сотрудники из подразделений ИТ и маркетинга.

Будут выбраны все сотрудники, кроме тех, кто работает в подразделениях ИТ и маркетинга.

GROUP BY

С помощью необязательного предложения GROUP BY создаются группы данных. Это удобно для получения итоговых значений. Например, нужно узнать, сколько человек работает в отделе продаж. Инструкция может выглядеть так:

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

Предложение GROUP BY указывается после WHERE и перед ORDER BY.

В GROUP BY можно указать столько столбцов, сколько нужно. В результате группы вкладываются друг в друга.

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

В предложении GROUP BY можно указать только столбцы выборки или выражения. В нем не указывается функция группирования и не применяются псевдонимы.

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

HAVING

С помощью предложения GROUP BY можно также указывать, какие группы включить в результат, а какие — исключить из него. Для этого используется предложение HAVING. Оно очень напоминает WHERE, но фильтрует не строки, а группы.

HAVING можно использовать с любыми операторами. В этом предложении используется тот же синтаксис, что и в предложении WHERE:

Этот код похож на предыдущий, но возвращает только те группы, в которых найдены три или больше сотрудников. Фильтрация выполняется по итоговому значению группы. Этим HAVING отличается от WHERE, которое фильтрует по значениям строк.

Эти предложения можно использовать вместе. Например, можно узнать, сколько сотрудников в подразделениях со штатом более трех человек, получают более 1000:

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

ORDER BY

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

Давайте отсортируем список фамилий сотрудников:

В предложении ORDER BY можно указывать и те столбцы, которые не выбраны в операторе SELECT:

Так список фамилий сотрудников будет отсортирован по размеру зарплаты.

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

Так мы увидим список сотрудников, который сначала отсортирован по фамилии, а затем — по имени.

Вместо имен столбцов можно указать их порядковые номера в операторе SELECT:

Этот код также возвращает список сотрудников с сортировкой по фамилии, а затем — по имени.

Сортировка по убыванию

В предыдущих примерах мы сортировали по возрастанию (это делается по умолчанию). Но можно сортировать и по убыванию. Для этого укажем слово DESC:

Так мы отсортируем список с именами и фамилиями в обратном алфавитном порядке.

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

Слово DESC — это сокращение от слова DESCENDING. В запросах можно использовать как полную, так и сокращенную форму. Для сортировки в порядке возрастания тоже существует ключевое слово. Его полная форма — ASCENDING, а сокращенная — ASC. Поскольку по умолчанию выполняется сортировка по возрастанию, то это слово не указывают.

Объединение таблиц

Иногда нам нужны данные из нескольких таблиц. Рассмотрим пример:

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

Такое объединение называется внутренним. Для него можно использовать специальный синтаксис с ключевым словом INNER JOIN. Приведенный ниже код выдаст те же результаты, что и предыдущий фрагмент:

Вместо предложения WHERE используется предложение ON, синтаксис которого совпадает с синтаксисом WHERE.

Число объединяемых таблиц в SQL не ограничено, но может ограничиваться в разных СУБД. Обратите внимание: чем больше таблиц объединяется, тем ниже производительность. Поэтому не рекомендуем объединять таблицы без особой необходимости.

Вместо заключения

SQL — простой для освоения и при этом мощный язык. Он появился в 1970-х и до сих пор используется, хотя наряду с ним появляются новые похожие языки. Этот язык используется различными СУБД: MySQL, SQLite, Oracle Database, Microsoft Access, Microsoft SQL Server, dBASE, IBM DB2.

Сегодня SQL — не просто язык формирования запросов. С его помощью можно упорядочивать и изменять данные, делать выборки, управлять доступом к ним, совместно использовать информацию и обеспечивать ее целостность. Пользуйтесь!

Что такое индексы в Mysql и как их использовать для оптимизации запросов

Как исправить ошибку доступа к базе 1045 Access denied for user

Основные понятия о шардинге и репликации

Настройка Master-Master репликации на MySQL за 6 шагов

Примеры ad-hoc запросов и технологии для их исполнения

Анализ медленных запросов (профилирование) в MySQL с помощью Percona Toolkit

Типы и способы применения репликации на примере MySQL

Как создать и использовать составной индекс в Mysql

Настройка Master-Slave репликации на MySQL за 6 простых шагов

Синтаксис и оптимизация Mysql LIMIT

Правильная настройка Mysql под нагрузки и не только. Обновлено.

И как правильно работать с длительными соединениями в MySQL

Запрос для определения версии Mysql: SELECT version()

Check-unused-keys для определения неиспользуемых индексов в базе данных

3 примера установки индексов в JOIN запросах

Анализ медленных запросов с помощью EXPLAIN

Что значит и как это починить

Описание, рекомендации и значение параметра query_cache_size

Быстрый подсчет уникальных значений за разные периоды времени

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

Правила выбора типов данных для максимальной производительности в Mysql

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

Источник

Примеры SQL-запросов в MariaDB (MySQL)

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

Простые примеры использования SELECT

> SELECT FROM

[JOIN ] [ WHERE ORDER BY LIMIT ]

* где fields1 — поля для выборки через запятую, также можно указать все поля знаком *; table — имя таблицы, из которой вытаскиваем данные; conditions — условия выборки; fields2 — поле или поля через запятую, по которым выполнить сортировку; count — количество строк для выгрузки.
* запрос в квадратных скобках не является обязательным для выборки данных.

1. Обычная выборка данных

> SELECT * FROM users

* в данном примере мы получаем список всех записей из таблицы users.

2. Выборка данных с объединением двух таблиц (JOIN)

SELECT u.name, r.* FROM users u JOIN users_rights r ON r.user_id=u.id

* в данном примере идет выборка данных с объединением таблиц users и users_rights. Объединяются они по полям user_id (в таблице users_rights) и id (users). Извлекается поле name из первой таблицы и все поля из второй.

3. Выборка с интервалом по времени и/или дате

а) известна точка начала и определенный временной интервал:

> SELECT * FROM users WHERE date >= DATE_SUB(NOW(), INTERVAL 1 HOUR)

* будут выбраны данные за последний час (поле date).

б) известны дата начала и дата окончания:

> SELECT * FROM users WHERE date >= ‘2017-10-25’ AND date SELECT * FROM users WHERE DATE(date) BETWEEN ‘2018-03-25 00:15:00’ AND ‘2018-04-25 15:33:09’;

* выбираем данные в промежутке между 25.03.2018 0 часов 15 минут и 25.04.2018 15 часов 33 минуты и 9 секунд.

г) вытаскиваем данные за определенные месяц и год:

> SELECT * FROM study WHERE MONTH(date) = 4 AND YEAR(date) = 2018

* извлечем данные, где в поле date присутствуют значения для апреля 2018 года.

4. Выборка максимального, минимального и среднего значения

> SELECT max(area), min(area), avg(area) FROM country

* max — максимальное значение; min — минимальное; avg — среднее.

5. Использование длины строки

> SELECT * FROM users WHERE CHAR_LENGTH(name) = 5;

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

6. Использование лимитов (LIMIT)

Применяется для ограничения количества выводимых результатов. Синтаксис:

* где число1 — сколько результатов вернуть; число2 — сколько результатов пропустить, необязательный параметр — если его не писать, то отсчет начнется с первой строки.

а) извлечь максимум 15 строк:

> SELECT * FROM users LIMIT 15;

б) выбрать строки с 16 по 25 (запрос со смещением):

> SELECT * FROM users LIMIT 15, 10;

* 15 строк пропускаем, 10 извлекаем.

Примеры более сложных запросов или используемых редко

1. Объединение с группировкой выбранных данных в одну строку (GROUP_CONCAT)

> SELECT GROUP_CONCAT(DISTINCT CONVERT(id USING ‘utf8’) SEPARATOR ‘, ‘) as ids FROM users

* из таблицы users извлекаются данные по полю id, все они помещаются в одну строку, значения разделяются запятыми.

2. Группировка данных по двум и более полям

> SELECT * FROM users GROUP BY CONCAT(title, ‘::’, birth)

* итого, в данном примере мы сделаем выгрузку данных из таблицы users и сгруппируем их по полям title и birth. Перед группировкой мы делаем объединение полей в одну строку с разделителем ::.

3. Объединение результатов из двух таблиц (UNION)

> (SELECT id, fio, address, ‘Пользователи’ as type FROM users)
UNION
(SELECT id, fio, address, ‘Покупатели’ as type FROM customers)

* в данном примере идет выборка данных из таблиц users и customers.

4. Выборка средних значений, сгруппированных за каждый час

SELECT avg(temperature), DATE_FORMAT(datetimeupdate, ‘%Y-%m-%d %H’) as hour_datetime FROM archive GROUP BY DATE_FORMAT(datetimeupdate, ‘%Y-%m-%d %H’)

* здесь мы извлекаем среднее значение поля temperature из таблицы archive и группируем по полю datetimeupdate (с разделением времени за каждый час).

5. Использование операторов IF и CASE

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

а) выбрать пол мужской или женский:

* в данном примере мы возвращаем слово «мужчина», если поле sex равно ‘m‘, иначе — «женщина».

б) заменяем идентификатор времени года более понятным человеку значением:

SELECT CASE season_id WHEN 1 THEN ‘зима’ WHEN 2 THEN ‘весна’ WHEN 3 THEN ‘лето’ WHEN 4 THEN ‘осень’ ELSE ‘неправильный идентификатор времени года’ END as season FROM ` seasons

* в данном примере мы используем оператор CASE. Если 1, то вернем слово «зима», если 2 — «весна» и так далее.

Вставка (INSERT)

> INSERT INTO

( ) VALUES ( )

> INSERT INTO

VALUES ( )

* где table — имя таблицы, в которую заносим данные; fields — перечисление полей через запятую; values — перечисление значений через запятую.
* первый вариант позволит сделать вставку только по перечисленным полям — остальные получат значения по умолчанию. Второй вариант потребует вставки для всех полей.

1. Вставка нескольких строк одним запросом:

* в данном примере мы одним SQL-запросом добавим 3 записи.

2. Вставка из другой таблицы (копирование строк, INSERT + SELECT):

Синтаксис при копировании строк из одной таблицы в другую выглядит так:

> INSERT INTO SELECT * FROM WHERE ;

* где table1 — куда копируем; table2 — откуда копируем.

а) скопировать все без разбора:

> INSERT INTO cities-new SELECT * FROM cities;

* в данном примере мы скопируем все строки из таблицы cities в таблицу cities-new.

б) скопировать определенные столбцы строк с условием:

> INSERT INTO cities-new (`name`, `country`) SELECT `name`, `country` FROM cities WHERE name LIKE ‘М%’;

* извлекаем все записи из таблицы cities, названия которых начинаются на «М» и заносим в таблицу cities-new.

в) копирование с обновлением повторяющихся ключей.

Если копировать таблицы несколько раз, то может возникнуть проблема повторения первичного ключа. В базах данных значения таких ключей должны быть уникальными и при попытке вставить повтор мы получим ошибку «Duplicate entry ‘xxx’ for key ‘PRIMARY’». Чтобы новые строки вставить, а повторяющиеся обновить (если есть изменения), используем «ON DUPLICATE KEY UPDATE»:

> INSERT INTO cities-new SELECT * FROM cities ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `country`=VALUES(`country`);

* в данном примере, как и в предыдущих, мы копируем данные из таблицы cities в таблицу cities-new. Но при совпадении значений первичного ключа мы будем обновлять поля name и country.

Обновление (UPDATE)

> UPDATE

SET =’ ‘ WHERE

* где table — имя таблицы; field — поле, для которого будем менять значение; value — новое значение; conditions — условие (без него делать update опасно — можно заменить все данные во всей таблице).

Обновление с использованием замены (REPLACE):

UPDATE cities SET name = REPLACE(name, ‘Масква’, ‘Москва’);

UPDATE cities SET name = REPLACE(name, ‘Масква’, ‘Москва’) WHERE country = ‘Россия’;

UPDATE cities SET name = REPLACE(name, ‘Ма’, ‘Мо’) WHERE name = ‘Масква’;

Если мы хотим перестраховаться, результат замены можно сначала проверить с помощью SELECT:

SELECT REPLACE(name, ‘Ма’, ‘Мо’) FROM cities WHERE name = ‘Масква’;

Удаление (DELETE)

* где table — имя таблицы; conditions — условие (как и в случае с UPDATE, использовать DELETE без условия опасно — СУБД не запросит подтверждения, а просто удалит все данные).

Более сложный вариант — удаление данных с объединением таблиц. Запрос будет такого вида:

> DELETE u FROM users u JOIN users_rights r ON r.user_id=u.id WHERE r.admin=’1′

* в данном примере мы удалим записи только из таблицы users (u), которые при объединении с таблицей users_rights будут соответствовать условию r.admin=’1′.

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

> CREATE TABLE IF NOT EXISTS `users_rights` (
`id` int(10) unsigned NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`rights` int(10) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

* где table — имя таблицы (в примере users_rights); field1, field2 — имя полей (в примере создается 3 поля — id, user_id, rights); options1, options2 — параметры поля (в примере int(10) unsigned NOT NULL); table options — общие параметры таблицы (в примере ENGINE=InnoDB DEFAULT CHARSET=utf8).

Использование запросов в PHP

Подключаемся к базе данных:

mysql_connect (‘localhost’, ‘login’, ‘password’) or die («MySQL connect error»);
mysql_select_db (‘db_name’);
mysql_query(«SET NAMES ‘utf8′»);

* где подключение выполняется к базе на локальном сервере (localhost); учетные данные для подключения — login и password (соответственно, логин и пароль); в качестве базы используется db_name; используемая кодировка UTF-8.

Также можно создать постоянное подключение:

mysql_pconnect (‘localhost’, ‘login’, ‘password’) or die («MySQL connect error»);

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

* в PHP выполняется автоматически, кроме постоянных подключений (mysql_pconnect).

Запрос к MySQL (Mariadb) в PHP делается функцией mysql_query(), а извлечение данных из запроса — mysql_fetch_array():

* в данном примере выполнен запрос к таблице users. Результат запроса помещен в переменную $result. Далее используется цикл while, каждая итерация которого извлекает массив данных и помещает его в переменную $mass — в каждой итерации мы работаем с одной строкой базы данных.

Используемая функция mysql_fetch_array() возвращает ассоциативный массив, с которым удобно работать, но есть еще альтернатива — mysql_fetch_row(), которая возвращает обычный нумерованный массив.

Экранирование

При необходимости включения в строку запроса спецсимвола, например, %, необходимо использовать экранирование с помощью символа обратного слэша — \

> SELECT * FROM producrions WHERE kpd = ‘100\%’

* если выполнить такой запрос без экранирования, знак %, будет восприниматься как любое количество символов после 100.

Использование переменных

Пременные задаются с помощью знака собаки, например:

* мы создали переменную number со значением 101.

Теперь можно применить переменную в запросе, например:

> INSERT INTO users (`user_number`, `user_name`) VALUES (@number, CONCAT(‘Пользователь ‘, @number));

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *