Mysql запросы — как единственно верный способ вывода данных

Alias for Columns Examples

The following SQL statement creates two aliases, one for the CustomerID column and one for the CustomerName column:

Example


SELECT CustomerID AS ID, CustomerName AS Customer FROM Customers;

The following SQL statement creates two aliases, one for the CustomerName column and one for the ContactName column. Note: It requires double quotation marks or square brackets if the alias name contains spaces:

Example

SELECT CustomerName AS Customer, ContactName AS FROM Customers;

The following SQL statement creates an alias named «Address» that combine four columns (Address, PostalCode, City and Country):

Example

SELECT CustomerName, Address + ‘, ‘ + PostalCode + ‘ ‘ + City + ‘, ‘ + Country AS Address FROM Customers;

Note: To get the SQL statement above to work in MySQL use the following:

SELECT CustomerName, CONCAT(Address,’, ‘,PostalCode,’, ‘,City,’, ‘,Country) AS Address FROM Customers;

SQL References

SQL Keywords ADD ADD CONSTRAINT ALTER ALTER COLUMN ALTER TABLE ALL AND ANY AS ASC BACKUP DATABASE BETWEEN CASE CHECK COLUMN CONSTRAINT CREATE CREATE DATABASE CREATE INDEX CREATE OR REPLACE VIEW CREATE TABLE CREATE PROCEDURE CREATE UNIQUE INDEX CREATE VIEW DATABASE DEFAULT DELETE DESC DISTINCT DROP DROP COLUMN DROP CONSTRAINT DROP DATABASE DROP DEFAULT DROP INDEX DROP TABLE DROP VIEW EXEC EXISTS FOREIGN KEY FROM FULL OUTER JOIN GROUP BY HAVING IN INDEX INNER JOIN INSERT INTO INSERT INTO SELECT IS NULL IS NOT NULL JOIN LEFT JOIN LIKE LIMIT NOT NOT NULL OR ORDER BY OUTER JOIN PRIMARY KEY PROCEDURE RIGHT JOIN ROWNUM SELECT SELECT DISTINCT SELECT INTO SELECT TOP SET TABLE TOP TRUNCATE TABLE UNION UNION ALL UNIQUE UPDATE VALUES VIEW WHERE

MySQL Functions String Functions ASCII CHAR_LENGTH CHARACTER_LENGTH CONCAT CONCAT_WS FIELD FIND_IN_SET FORMAT INSERT INSTR LCASE LEFT LENGTH LOCATE LOWER LPAD LTRIM MID POSITION REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPACE STRCMP SUBSTR SUBSTRING SUBSTRING_INDEX TRIM UCASE UPPER

Numeric Functions ABS ACOS ASIN ATAN ATAN2 AVG CEIL CEILING COS COT COUNT DEGREES DIV EXP FLOOR GREATEST LEAST LN LOG LOG10 LOG2 MAX MIN MOD PI POW POWER RADIANS RAND ROUND SIGN SIN SQRT SUM TAN TRUNCATE

Date Functions ADDDATE ADDTIME CURDATE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURTIME DATE DATEDIFF DATE_ADD DATE_FORMAT DATE_SUB DAY DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR EXTRACT FROM_DAYS HOUR LAST_DAY LOCALTIME LOCALTIMESTAMP MAKEDATE MAKETIME MICROSECOND MINUTE MONTH MONTHNAME NOW PERIOD_ADD PERIOD_DIFF QUARTER SECOND SEC_TO_TIME STR_TO_DATE SUBDATE SUBTIME SYSDATE TIME TIME_FORMAT TIME_TO_SEC TIMEDIFF TIMESTAMP TO_DAYS WEEK WEEKDAY WEEKOFYEAR YEAR YEARWEEK

Advanced Functions BIN BINARY CASE CAST COALESCE CONNECTION_ID CONV CONVERT CURRENT_USER DATABASE IF IFNULL ISNULL LAST_INSERT_ID NULLIF SESSION_USER SYSTEM_USER USER VERSION

SQL Server Functions String Functions ASCII CHAR CHARINDEX CONCAT Concat with + CONCAT_WS DATALENGTH DIFFERENCE FORMAT LEFT LEN LOWER LTRIM NCHAR PATINDEX QUOTENAME REPLACE REPLICATE REVERSE RIGHT RTRIM SOUNDEX SPACE STR STUFF SUBSTRING TRANSLATE TRIM UNICODE UPPER

Numeric Functions ABS ACOS ASIN ATAN ATN2 AVG CEILING COUNT COS COT DEGREES EXP FLOOR LOG LOG10 MAX MIN PI POWER RADIANS RAND ROUND SIGN SIN SQRT SQUARE SUM TAN

Date Functions CURRENT_TIMESTAMP DATEADD DATEDIFF DATEFROMPARTS DATENAME DATEPART DAY GETDATE GETUTCDATE ISDATE MONTH SYSDATETIME YEAR

Advanced Functions CAST COALESCE CONVERT CURRENT_USER IIF ISNULL ISNUMERIC NULLIF SESSION_USER SESSIONPROPERTY SYSTEM_USER USER_NAME

MS Access Functions String Functions Asc Chr Concat with & CurDir Format InStr InstrRev LCase Left Len LTrim Mid Replace Right RTrim Space Split Str StrComp StrConv StrReverse Trim UCase

Numeric Functions Abs Atn Avg Cos Count Exp Fix Format Int Max Min Randomize Rnd Round Sgn Sqr Sum Val

Date Functions Date DateAdd DateDiff DatePart DateSerial DateValue Day Format Hour Minute Month MonthName Now Second Time TimeSerial TimeValue Weekday WeekdayName Year

Other Functions CurrentUser Environ IsDate IsNull IsNumeric

SQL OperatorsSQL Data TypesSQL Quick Ref

Синтаксис

Ключевое слово WHERE используется с оператором SELECT для извлечения только тех записей, которые удовлетворяют указанным условиям. Основной синтаксис может быть задан с помощью:

SELECT column_list FROM table_name WHERE condition;

Здесь column_list — это имена столбцов/полей, таких как имя, возраст, страна и т.д. таблицы базы данных, значения которой вы хотите получить. Однако, если вы хотите получить значения всех столбцов, доступных в таблице, вы можете использовать следующий синтаксис:

SELECT * FROM table_name WHERE condition;

Теперь давайте рассмотрим несколько примеров, которые демонстрируют, как это на самом деле работает.

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

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Vasya Pupkin | 2001-05-01 |   5000 |       4 |
|      2 | Vanya Pupkin | 2002-07-15 |   6500 |       1 |
|      3 | Petya Pupkin | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

Простые mysql запросы

Зная структуру БД, таблиц в БД и полей, можно посылать следующие запросы в MySQL.

слово select, говорит само за себя, и становится понятно, что пользуясь данными запросами, мы будем выбирать (читать) информацию из БД.

SELECT count(*) FROM table_name;

Выведет количество всех записей в таблице

SELECT * FROM table_name;

Выбирает все записи из таблицы БД

SELECT * FROM table_name LIMIT 2,3;

Выбирает 3 записи из таблицы, начиная с 2 записи. Этот запрос полезен при создании блока страниц навигации.

SELECT * FROM person ORDER BY number;

Выберет все записи из таблицы person в порядке возрастания значений поля number.

SELECT * FROM person ORDER BY number DESC;

Выбирает все записи из person, но уже в порядке убывания (т.е. в обратном порядке).

SELECT * FROM person ORDER BY number LIMIT 5;

Выбирает 5 записей из таблицы person, в порядке возрастания.

SELECT * FROM person WHERE name=’Anna’;

Выбирает все записи из таблицы person, где поле name соответствует значению Anna.

SELECT * FROM person WHERE name LIKE ‘An%’;

Выбирает все записи из таблицы person, в которой значения поля nameначинаются с An.

SELECT * FROM person WHERE name LIKE ‘%na’ ORDER BY number ;

Выбирает все записи из таблицы person, где name заканчивается на na, и упорядочивает записи в порядке возрастания значения number.

SELECT name, last_name FROM person;

Выбирает все значения полей name и last_name из таблицы person.

SELECT DISTINCT site FROM table_name;

Выбирает уникальные (DISTINCT) значения поля site из таблицы table_name. Например, при 5 значениях поля site: sitear.ru, sitear.ru, sitear.ru, yaveterinar.ru, wi-korporaciya.ru; выведет только 3 уникальные значения: sitear.ru, yaveterinar.ru, wi-korporaciya.ru;

SELECT * from person where age in (12,15,18);

Выведет все записи таблицы person в которых значения поля age будет равно 12 или 15 или 18.

select max(age) from person;

Выберет максимальное значение age из таблицы person.

select name, min(age) from person;

Выберет минимальное значение age из таблицы person.

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

insert into table_name(site, description) values (‘sitear.ru’, ‘SiteAR – создание сайтов’)

Вставит в таблицу table_name, а точнее в поля site и description данной таблицы, соответствующие значения.

направлены на изменение уже имеющихся данных в таблице БД.

update table_name set site = ‘domain.com’ where id = ‘3’

Изменяет значение поля site на domain.com в таблице table_name где id равен 3.

delete from table_name where id = ‘3’

Удаляет запись из table_name где id равен 3.

Select Data With PDO (+ Prepared Statements)

The following example uses prepared statements.

Here we select the id, firstname and lastname columns from the MyGuests table. The records will be ordered by the lastname column, and it will be displayed in an HTML table:

Example (PDO)

<?phpecho «<table style=’border: solid 1px black;’>»; echo «<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>»;class TableRows extends RecursiveIteratorIterator {   function __construct($it) {     parent::__construct($it, self::LEAVES_ONLY);   }  function current() {    return «<td style=’width:150px;border:1px solid black;’>» . parent::current(). «</td>»;   }  function beginChildren() {     echo «<tr>»;   }   function endChildren() {     echo «</tr>» . «\n»;   } } $servername = «localhost»; $username = «username»;$password = «password»;$dbname = «myDBPDO»; try {  $conn = new PDO(«mysql:host=$servername;dbname=$dbname», $username, $password);  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   $stmt = $conn->prepare(«SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname»);   $stmt->execute();  // set the resulting array to associative  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);   foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {     echo $v;  }} catch(PDOException $e) {  echo «Error: » . $e->getMessage();}$conn = null;echo «</table>»;?>

Alias for Columns

The following SQL statement creates two aliases, one for the CustomerID column and one for the CustomerName column:

Example

SELECT CustomerID AS ID, CustomerName AS Customer FROM Customers;

The following SQL statement creates two aliases. Notice that it requires double quotation marks or square brackets if the alias name contains spaces:

Example

SELECT CustomerName AS Customer, ContactName AS FROM Customers;

The following SQL statement creates an alias named «Address» that combine four columns (Address, PostalCode, City and Country):

Example

SELECT CustomerName, Address + ‘, ‘ + PostalCode + ‘ ‘ + City + ‘, ‘ + Country AS Address FROM Customers;

Note: To get the SQL statement above to work in MySQL use the following:

SELECT CustomerName, CONCAT(Address,’, ‘,PostalCode,’, ‘,City,’, ‘,Country) AS Address FROM Customers;

Select and Filter Data With MySQLi

The following example selects the id, firstname and lastname columns from the MyGuests table where the lastname is «Doe», and displays it on the page:

Example (MySQLi Object-oriented)

<?php$servername = «localhost»;$username = «username»;$password = «password»;$dbname = «myDB»;// Create connection$conn = new mysqli($servername, $username, $password, $dbname);// Check connectionif ($conn->connect_error) {  die(«Connection failed: » . $conn->connect_error); } $sql = «SELECT id, firstname, lastname FROM MyGuests WHERE lastname=’Doe'»;$result = $conn->query($sql);if ($result->num_rows > 0) {  // output data of each row  while($row = $result->fetch_assoc()) {    echo «id: » . $row. » — Name: » . $row. » » . $row. «<br>»;   }} else {  echo «0 results»;} $conn->close(); ?>

Code lines to explain from the example above:

First, we set up the SQL query that selects the id, firstname and lastname columns from the MyGuests table where the lastname is «Doe». The next line of code runs the query and puts the resulting data into a variable called $result.

Then, the checks if there are more than zero rows returned.

If there are more than zero rows returned, the function puts all the results into an associative array that we can loop through. The loop loops through the result set and outputs the data from the id, firstname and lastname columns.

The following example shows the same as the example above, in the MySQLi procedural way:

Example (MySQLi Procedural)

<?php$servername = «localhost»;$username = «username»;$password = «password»;$dbname = «myDB»;// Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) {   die(«Connection failed: » . mysqli_connect_error());}$sql = «SELECT id, firstname, lastname FROM MyGuests WHERE lastname=’Doe'»;$result = mysqli_query($conn, $sql);if (mysqli_num_rows($result) > 0) {  // output data of each row   while($row = mysqli_fetch_assoc($result)) {    echo «id: » . $row. » — Name: » . $row. » » . $row. «<br>»;   }} else {  echo «0 results»;}mysqli_close($conn); ?>

You can also put the result in an HTML table:

Example (MySQLi Object-oriented)

<?php$servername = «localhost»;$username = «username»;$password = «password»;$dbname = «myDB»;// Create connection$conn = new mysqli($servername, $username, $password, $dbname);// Check connectionif ($conn->connect_error) {  die(«Connection failed: » . $conn->connect_error); } $sql = «SELECT id, firstname, lastname FROM MyGuests WHERE lastname=’Doe'»;$result = $conn->query($sql);if ($result->num_rows > 0) {  echo «<table><tr><th>ID</th><th>Name</th></tr>»;   // output data of each row  while($row = $result->fetch_assoc()) {    echo «<tr><td>».$row.»</td><td>».$row.» «.$row.»</td></tr>»;   }  echo «</table>»;} else {  echo «0 results»;} $conn->close(); ?>

Select Data With PDO (+ Prepared Statements)

The following example uses prepared statements.

It selects the id, firstname and lastname columns from the MyGuests table and displays it in an HTML table:

Example (PDO)

<?phpecho «<table style=’border: solid 1px black;’>»; echo «<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>»;class TableRows extends RecursiveIteratorIterator {   function __construct($it) {     parent::__construct($it, self::LEAVES_ONLY);   }  function current() {    return «<td style=’width:150px;border:1px solid black;’>» . parent::current(). «</td>»;   }  function beginChildren() {     echo «<tr>»;   }   function endChildren() {     echo «</tr>» . «\n»;   } } $servername = «localhost»; $username = «username»;$password = «password»;$dbname = «myDBPDO»; try {  $conn = new PDO(«mysql:host=$servername;dbname=$dbname», $username, $password);   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  $stmt = $conn->prepare(«SELECT id, firstname, lastname FROM MyGuests»);   $stmt->execute();  // set the resulting array to associative  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);   foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {     echo $v;   }} catch(PDOException $e) {  echo «Error: » . $e->getMessage();}$conn = null;echo «</table>»;?>

Alias for Tables Example

The following SQL statement selects all the orders from the customer with CustomerID=4 (Around the Horn). We use the «Customers» and «Orders» tables, and give them the table aliases of «c» and «o» respectively (Here we use aliases to make the SQL shorter):

Example

SELECT o.OrderID, o.OrderDate, c.CustomerNameFROM Customers AS c, Orders AS oWHERE c.CustomerName=’Around the Horn’ AND c.CustomerID=o.CustomerID;

The following SQL statement is the same as above, but without aliases:

Example

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerNameFROM Customers, OrdersWHERE Customers.CustomerName=’Around the Horn’ AND Customers.CustomerID=Orders.CustomerID;


Aliases can be useful when:

  • There are more than one table involved in a query
  • Functions are used in the query
  • Column names are big or not very readable
  • Two or more columns are combined together

Оператор WHERE

Чаще всего подзапрос будет найден в операторе WHERE. Эти подзапросы также называются вложенными подзапросами.

Например:

PgSQL

SELECT e.employee_id, e.last_name FROM employees e WHERE e.department_id IN (SELECT d.department_id FROM departments d WHERE d.department_name = ‘HR’ OR d.department_name = ‘Accounting’);

1 2 3 4 5 6 7 8

SELECTe.employee_id,

e.last_name

FROMemployeese

WHEREe.department_idIN

(SELECTd.department_id

FROMdepartmentsd

WHEREd.department_name=’HR’

ORd.department_name=’Accounting’);

Часть подзапроса оператора SELECT выше:

PgSQL

(SELECT d.department_id FROM departments d WHERE d.department_name = ‘IT’ OR d.department_name = ‘Accounting’);

1 2 3 4

(SELECTd.department_id

FROMdepartmentsd

WHEREd.department_name=’IT’

ORd.department_name=’Accounting’);

Этот подзапрос позволяет вам найти все значения department_id из таблицы departments, которые имеют department_name ‘IT’ или ‘Accounting’. Затем подзапрос используется для фильтрации результатов из основного запроса с использованием условия IN.

Этот подзапрос может быть записан как INNER JOIN следующим образом:

PgSQL

SELECT e.employee_id, e.last_name FROM employees e INNER JOIN departments d ON e.department_id = d.department_id WHERE d.department_name = ‘IT’ OR d.department_name = ‘Accounting’;

1 2 3 4 5 6 7

SELECTe.employee_id,

e.last_name

FROMemployeese

INNER JOINdepartmentsd

ONe.department_id=d.department_id

WHEREd.department_name=’IT’

ORd.department_name=’Accounting’;

Этот INNER JOIN будет работать более эффективно, чем исходный подзапрос

Важно отметить, однако, что не все подзапросы могут быть переписаны с помощью объединений (JOIN)

Оператор SELECT

Как упоминалось в начале статьи, SQL-запросы почти всегда начинаются с оператора SELECT. SELECT в запросах указывает, какие столбцы из таблицы должны нужно вернуть в наборе результатов. Запросы также почти всегда включают оператор FROM, который используется для указания таблицы, к которой нужно обратиться.

В общем SQL-запросы следуют такому синтаксису:

Например, чтобы извлечь столбец name из таблицы dinners, нужен такой запрос:


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

Вместо того чтобы называть конкретный столбец или набор столбцов, вы можете использовать оператор SELECT со звездочкой (*) – она служит заполнителем, представляющим все столбцы в таблице. Следующая команда отобразит все столбцы таблицы tourneys:

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

Оператор сравнения в выражении WHERE определяет способ сравнения указанного столбца со значением. Вот некоторые распространенные операторы сравнения SQL:

Оператор Действие
= Равно
!= Не равно
< Меньше, чем
> Больше, чем
<= Меньше или равно
>= Больше или равно
BETWEEN проверяет, находится ли значение в заданном диапазоне
IN проверяет, содержится ли значение строки в наборе указанных значений
EXISTS проверяет, существуют ли строки при заданных условиях
LIKE проверяет, соответствует ли значение указанной строке
IS NULL Проверяет значения NULL
IS NOT NULL Проверяет все значения, кроме NULL

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

SQL позволяет использовать подстановочных знаков, и это особенно удобно при работе с выражениями WHERE. Знак процента (%) представляют ноль или более неизвестных символов, а подчеркивания (_) представляют один неизвестный символ. Они полезны, если вы пытаетесь найти конкретную запись в таблице, но не знаете точно, что это за запись. Чтобы проиллюстрировать это, предположим, что вы забыли любимое блюдо нескольких своих подруг, но вы уверены, что это блюдо начинается на t. Вы можете найти его название с помощью запроса:

Исходя из вышеприведенного вывода, это tofu.

Иногда приходится работать с базами данных, в которых есть столбцы или таблицы с относительно длинными или трудно читаемыми названиями. В этих случаях вы можете сделать эти имена более читабельными, создав псевдонимы – для этого есть ключевое слово AS. Псевдонимы, созданные с помощью AS, являются временными (они существуют только на время запроса, для которого они созданы):

Как видите, теперь SQL отображает столбец name как n, столбец birthdate как b и dessert как d.

На данный момент мы рассмотрели некоторые наиболее часто используемые ключевые слова и предложения в запросах SQL. Они полезны для базовых запросов, но они не помогут, если вам нужно выполнить вычисление или получить скалярное значение (одно значение, а не набор из нескольких различных значений) на основе ваших данных. Здесь вам понадобятся агрегатные функции.

Фильтрация записей с помощью условия WHERE

Следующая команда SQL возвращает всех сотрудников из таблицы сотрудников, чья зарплата превышает 6000. Ключевое слово WHERE просто отфильтровывает нежелательные данные.

SELECT * FROM employees
WHERE salary > 6000;

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

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

SELECT emp_id, emp_name, salary
FROM employees
WHERE salary > 6000;

В результате вы получите таблицу состоящую из указаных выше столбцов:

+--------+--------------+--------+
| emp_id | emp_name     | salary |
+--------+--------------+--------+
|      1 | Vasya Pupkin |   5000 |
|      2 | Vanya Pupkin |   6500 |
|      3 | Petya Pupkin |   8000 |
+--------+--------------+--------+

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

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

Синтаксис:

> SELECT <fields1> FROM <table>

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

> 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 <= ‘2017-11-25’

* выбираем данные в промежутке между 25.10.2017 и 25.11.2017.

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


> 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)

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

<основной запрос> LIMIT <число1>

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

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

> SELECT * FROM users LIMIT 15;

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

> SELECT * FROM users LIMIT 15, 10;

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

Использование запросов в 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»);

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

Завершить подключение:

mysql_close();

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

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

$result = mysql_query(«SELECT * FROM users»); while ($mass = mysql_fetch_array($result)) {     echo $mass . ‘<br>’; }

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

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


С этим читают