Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

JavaScript Работа с MySQL на платформе NodeJS

markelov666

Умник
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Введние в Node.JS
​
Node.js - это платформа на котрой можно запустить JavaScript и использует асинхронное программирование.
Node.js можно использовать в приложениях баз данных.
Одна из самых популярных баз данных - MySQL.


База данных MySQL​
Чтобы иметь возможность экспериментировать с примерами кода, на вашем компьютере должен быть установлен MySQL.
После того, как MySQL будет запущен на вашем компьютере, вы сможете получить к нему доступ с помощью Node.js.
Для доступа к базе данных MySQL с помощью Node.js вам понадобится драйвер MySQL. В этом руководстве будет использоваться модуль «mysql», загруженный с NPM.
Чтобы загрузить и установить модуль «mysql», откройте командный терминал и выполните следующее:
C:\Users\Your Name>npm install mysql
Теперь вы скачали и установили драйвер базы данных mysql.
Node.js может использовать этот модуль для управления базой данных MySQL:
JavaScript:
var mysql = require('mysql');
Подключения к базе данных​
Начните с создания подключения к базе данных.
Используйте имя пользователя и пароль из вашей базы данных MySQL.
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
});
Сохраните приведенный выше код в файле с именем connect.js и запустите этот файл:
C:\Users\Your Name>node connect.js
Что даст вам такой результат:
Connected!


Запрос базы данных​
Используйте операторы SQL для чтения (или записи) базы данных MySQL. Это также называется «запросить» базу данных.
Объект подключения, созданный в приведенном выше примере, имеет метод для запроса базы данных:
JavaScript:
con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Result: " + result);
  });
});
Метод запроса принимает в качестве параметра инструкции sql и возвращает результат.


Создание базы данных​
Чтобы создать базу данных в MySQL, используйте оператор «CREATE DATABASE»
Создайте базу данных с именем «mydb»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  con.query("CREATE DATABASE mydb", function (err, result) {
    if (err) throw err;
    console.log("Database created");
  });
});
Сохраните приведенный выше код в файле с именем create_db.js и запустите файл:
C:\Users\Your Name>node create_db.js
Что даст вам такой результат:
Connected!
Database created


Создание таблицы​
Чтобы создать таблицу в MySQL, используйте оператор «CREATE TABLE».
Убедитесь, что вы указали имя базы данных при создании соединения
Создайте таблицу с именем «клиенты»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Table created");
  });
});
Сохраните приведенный выше код в файле с именем create_table.js и запустите файл:
C:\Users\Your Name>node create_table.js
Что даст вам такой результат:
Connected!
Table created


Вставить в таблицу​
Чтобы заполнить таблицу в MySQL, используйте оператор «INSERT INTO».
Вставьте запись в таблицу «клиенты»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "INSERT INTO customers (name, address) VALUES ('Company Inc', 'Highway 37')";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });
});
Сохраните приведенный выше код в файле с именем db_insert.js и запустите этот файл:
C:\Users\Your Name>node db_insert.js
Что даст вам такой результат:
Connected!
1 record inserted


Вставить несколько записей​
Чтобы вставить более одной записи, создайте массив, содержащий значения, и вставьте вопросительный знак в sql, который будет заменен массивом значений:
SQL:
INSERT INTO customers (name, address) VALUES ?
Заполните таблицу «клиенты» данными:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "INSERT INTO customers (name, address) VALUES ?";
  var values = [
    ['John', 'Highway 71'],
    ['Peter', 'Lowstreet 4'],
    ['Amy', 'Apple st 652'],
    ['Hannah', 'Mountain 21'],
    ['Michael', 'Valley 345'],
    ['Sandy', 'Ocean blvd 2'],
    ['Betty', 'Green Grass 1'],
    ['Richard', 'Sky st 331'],
    ['Susan', 'One way 98'],
    ['Vicky', 'Yellow Garden 2'],
    ['Ben', 'Park Lane 38'],
    ['William', 'Central st 954'],
    ['Chuck', 'Main Road 989'],
    ['Viola', 'Sideway 1633']
  ];
  con.query(sql, [values], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
});
Сохраните приведенный выше код в файле с именем db_insert_multple.js и запустите этот файл:
C:\Users\Your Name>node db_insert_multple.js
Что даст вам такой результат:
Connected!
Number of records inserted: 14


Объект результата​
При выполнении запроса возвращается объект результата.
Объект результата содержит информацию о том, как запрос повлиял на таблицу.
Объект результата, возвращенный из приведенного выше примера, выглядит так:
JavaScript:
{
  fieldCount: 0,
  affectedRows: 14,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '\'Records:14  Duplicated: 0  Warnings: 0',
  protocol41: true,
  changedRows: 0
}
Значения свойств можно отобразить так
Вернуть количество затронутых строк:
JavaScript:
console.log(result.affectedRows)
Что даст такой результат:
14


Получить вставленный идентификатор​
Для таблиц с полем идентификатора автоинкремента вы можете получить идентификатор только что вставленной строки, запросив объект результата.
Примечание: Чтобы получить вставленный идентификатор, можно вставить только одну строку.
Вставьте запись в таблицу «клиенты» и верните идентификатор:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "INSERT INTO customers (name, address) VALUES ('Michelle', 'Blue Village 1')";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted, ID: " + result.insertId);
  });
});
Сохраните приведенный выше код в файле с именем db_insert_id.js и запустите этот файл:
C:\Users\Your Name>node db_insert_id.js
Что даст вам что-то вроде этого взамен:
1 record inserted, ID: 15


Выбор из таблицы​
Чтобы выбрать данные из таблицы в MySQL, используйте оператор «SELECT».
Выберите все записи из таблицы «клиенты» и отобразите объект результата:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers", function (err, result, fields) {
    if (err) throw err;
    console.log(result);
  });
});
SELECT * вернет все столбцы
Сохраните приведенный выше код в файле с именем db_select.js и запустите этот файл:
C:\Users\Your Name>node db_select.js
Что даст вам такой результат:
JSON:
[
  { id: 1, name: 'John', address: 'Highway 71'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'},
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 9, name: 'Susan', address: 'One way 98'},
  { id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
  { id: 11, name: 'Ben', address: 'Park Lane 38'},
  { id: 12, name: 'William', address: 'Central st 954'},
  { id: 13, name: 'Chuck', address: 'Main Road 989'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]
Выбор столбцов​
Чтобы выбрать только некоторые столбцы в таблице, используйте оператор «SELECT», за которым следует имя столбца.
Выберите имя и адрес из таблицы «клиенты» и отобразите объект возврата:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT name, address FROM customers", function (err, result, fields) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_select2.js и запустите файл:
C:\Users\Your Name>node db_select2.js
Что даст вам такой результат:
JSON:
[
  { name: 'John', address: 'Highway 71'},
  { name: 'Peter', address: 'Lowstreet 4'},
  { name: 'Amy', address: 'Apple st 652'},
  { name: 'Hannah', address: 'Mountain 21'},
  { name: 'Michael', address: 'Valley 345'},
  { name: 'Sandy', address: 'Ocean blvd 2'},
  { name: 'Betty', address: 'Green Grass 1'},
  { name: 'Richard', address: 'Sky st 331'},
  { name: 'Susan', address: 'One way 98'},
  { name: 'Vicky', address: 'Yellow Garden 2'},
  { name: 'Ben', address: 'Park Lane 38'},
  { name: 'William', address: 'Central st 954'},
  { name: 'Chuck', address: 'Main Road 989'},
  { name: 'Viola', address: 'Sideway 1633'}
]
Объект результата​
Как видно из результата приведенного выше примера, объект результата - это массив, содержащий каждую строку как объект.
Чтобы вернуть, например, адрес третьей записи, просто обратитесь к свойству адреса третьего объекта массива.
Верните адрес третьей записи:
JavaScript:
console.log(result[2].address);
Что даст такой результат:
Apple st 652


Объект Fields​
Третий параметр функции обратного вызова - это массив, содержащий информацию о каждом поле в результате.
Выберите все записи из таблицы «клиенты» и отобразите объект полей :
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT name, address FROM customers", function (err, result, fields) {
    if (err) throw err;
    console.log(fields);
  });
});
Сохраните приведенный выше код в файле с именем db_select_fields.js и запустите этот файл:
C:\Users\Your Name>node db_select_fields.js
Что даст вам такой результат:
JSON:
[
  {
    catalog: 'def',
    db: 'mydb',
    table: 'customers',
    orgTable: 'customers',
    name: 'name',
    orgName: 'address',
    charsetNr: 33,
    length: 765,
    type: 253,
    flags: 0,
    decimals: 0,
    default: undefined,
    zeroFill: false,
    protocol41: true
  },
  {
    catalog: 'def',
    db: 'mydb',
    table: 'customers',
    orgTable: 'customers',
    name: 'address',
    orgName: 'address',
    charsetNr: 33,
    length: 765,
    type: 253,
    flags: 0,
    decimals: 0,
    default: undefined,
    zeroFill: false,
    protocol41: true
  }
]
Как видно из результата приведенного выше примера, объект fields представляет собой массив, содержащий информацию о каждом поле как об объекте.
Чтобы вернуть, например, имя второго поля, просто обратитесь к свойству name второго элемента массива
Верните имя второго поля:
JavaScript:
console.log(fields[1].name);
Что даст такой результат:
address


Выбрать с фильтром​
При выборе записей из таблицы вы можете отфильтровать выбор с помощью оператора «WHERE»
Выберите запись с адресом «Park Lane 38»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_where.js и запустите этот файл:
C:\Users\Your Name>node db_where.js
Что даст вам такой результат:
JSON:
[
  { id: 11, name: 'Ben', address: 'Park Lane 38'}
]
Подстановочные знаки​
Вы также можете выбрать записи, которые начинаются, включают или заканчиваются данной буквой или фразой.
Используйте подстановочный знак "%" для обозначения нуля, одного или нескольких символов
Выберите записи, адрес которых начинается с буквы «S»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address LIKE 'S%'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_where_s.js и запустите этот файл:
C:\Users\Your Name>node db_where_s.js
Что даст вам такой результат:
JSON:
[
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]
Экранирование значений запроса​
Если значения запроса являются переменными, предоставленными пользователем, вам следует избегать значений.
Это сделано для предотвращения SQL-инъекций, которые являются распространенным методом взлома сети для уничтожения или неправильного использования вашей базы данных.
В модуле MySQL есть методы для экранирования значений запроса
Экранировать значения запроса с помощью mysql.escape() метода:
JavaScript:
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log(result);
});
Вы также можете использовать «?» в качестве заполнителя для значений, которые вы хотите избежать.
В этом случае переменная отправляется вторым параметром в методе query()
Экранировать значения запроса с помощью «?» метода заполнителя:
JavaScript:
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ?';
con.query(sql, [adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});
Если у вас есть несколько заполнителей, массив содержит несколько значений в следующем порядке:
JavaScript:
var name = 'Amy';
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});
Сортировать результат​
Используйте оператор ORDER BY, чтобы отсортировать результат в порядке возрастания или убывания.
Ключевое слово ORDER BY по умолчанию сортирует результат по возрастанию. Чтобы отсортировать результат в порядке убывания, используйте ключевое слово DESC.
Отсортируйте результат в алфавитном порядке по имени:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers ORDER BY name", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_orderby.js и запустите этот файл:
C:\Users\Your Name>node db_orderby.js
Что даст вам такой результат:
JSON:
[
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 11, name: 'Ben', address: 'Park Lane 38'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'},
  { id: 13, name: 'Chuck', address: 'Main Road 989'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 1, name: 'John', address: 'Higheay 71'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 9, name: 'Susan', address: 'One way 98'},
  { id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'},
  { id: 12, name: 'William', address: 'Central st 954'}
]
ORDER BY DESC​
Используйте ключевое слово DESC, чтобы отсортировать результат в порядке убывания.
Отсортируйте результат в обратном алфавитном порядке по имени:
JavaScript:
var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers ORDER BY name DESC", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_orderby_desc.js и запустите файл:
C:\Users\Your Name>node db_orderby_desc.js
Что даст вам такой результат:
JSON:
[
  { id: 12, name: 'William', address: 'Central st 954'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'},
  { id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
  { id: 9, name: 'Susan', address: 'One way 98'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 1, name: 'John', address: 'Higheay 71'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 13, name: 'Chuck', address: 'Main Road 989'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'},
  { id: 11, name: 'Ben', address: 'Park Lane 38'},
  { id: 3, name: 'Amy', address: 'Apple st 652'}
]
Удалить запись​
Вы можете удалить записи из существующей таблицы с помощью оператора «DELETE FROM»
Удалите любую запись с адресом «Mountain 21»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "DELETE FROM customers WHERE address = 'Mountain 21'";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Number of records deleted: " + result.affectedRows);
  });
});
Обратите внимание на предложение WHERE в синтаксисе DELETE: предложение WHERE указывает, какую запись или записи следует удалить. Если вы опустите предложение WHERE, все записи будут удалены!
Сохраните приведенный выше код в файле с именем db_delete.js и запустите этот файл:
C:\Users\Your Name>node db_delete.js
Что даст вам такой результат:
Number of records deleted: 1


Объект результата​
При выполнении запроса возвращается объект результата.
Объект результата содержит информацию о том, как запрос повлиял на таблицу.
Объект результата, возвращенный из приведенного выше примера, выглядит так:
JavaScript:
{
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}
Значения свойств можно отобразить так
Вернуть количество затронутых строк:
JavaScript:
console.log(result.affectedRows)
Что даст такой результат:
1


Удалить таблицу​
Вы можете удалить существующую таблицу с помощью оператора "DROP TABLE"
Удаляем таблицу «клиенты»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "DROP TABLE customers";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Table deleted");
  });
});
Сохраните приведенный выше код в файле с именем db_drop_table.js и запустите этот файл:
C:\Users\Your Name>node db_drop_table.js
Что даст вам такой результат:
Table deleted


Удалить, только если существует​
Если таблица, которую вы хотите удалить, уже удалена или по какой-либо другой причине не существует, вы можете использовать ключевое слово IF EXISTS, чтобы избежать ошибки.
Удалите таблицу «клиенты», если она существует:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "DROP TABLE IF EXISTS customers";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_drop_table_if.js и запустите этот файл:
C:\Users\Your Name>node db_drop_table_if.js
Если таблица существует, результат будет выглядеть так:
JavaScript:
{
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverstatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}
Если таблица не существует, объект результата будет выглядеть так:
JavaScript:
{
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverstatus: 2,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}
Как видите, единственное отличие состоит в том, что для свойства warningCount установлено значение 1, если таблица не существует.


Обновить таблицу​
Вы можете обновить существующие записи в таблице с помощью оператора «UPDATE»
Замените столбец адреса с «Valley 345» на «Canyon 123»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result.affectedRows + " record(s) updated");
  });
});
Обратите внимание на предложение WHERE в синтаксисе UPDATE: предложение WHERE указывает, какую запись или записи следует обновить. Если вы опустите предложение WHERE, все записи будут обновлены!
Сохраните приведенный выше код в файле с именем db_update.js и запустите этот файл:
C:\Users\Your Name>node db_update.js
Что даст вам такой результат:
1 record(s) updated


Объект результата​
При выполнении запроса возвращается объект результата.
Объект результата содержит информацию о том, как запрос повлиял на таблицу.
Объект результата, возвращенный из приведенного выше примера, выглядит так:
JavaScript:
{
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '(Rows matched: 1 Changed: 1 Warnings: 0',
  protocol41: true,
  changedRows: 1
}
Значения свойств можно отобразить так
Вернуть количество затронутых строк:
JavaScript:
console.log(result.affectedRows)
Что даст такой результат:
1


Ограничьте результат​
Вы можете ограничить количество записей, возвращаемых из запроса, используя оператор "LIMIT"
Выберите 5 первых записей в таблице «клиенты»:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 5";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Сохраните приведенный выше код в файле с именем db_limit.js и запустите этот файл:
C:\Users\Your Name>node db_limit.js
Что даст вам такой результат:
JSON:
[
  { id: 1, name: 'John', address: 'Highway 71'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 5, name: 'Michael', address: 'Valley 345'}
]
Начать с другой позиции​
Если вы хотите вернуть пять записей, начиная с третьей записи, вы можете использовать ключевое слово «OFFSET»
Начните с позиции 3 и верните следующие 5 записей:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 5 OFFSET 2";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Примечание: «OFFSET 2» означает начало с третьей позиции, а не со второй!
Сохраните приведенный выше код в файле с именем db_offset.js и запустите файл:
C:\Users\Your Name>node db_offset.js
Что даст вам такой результат:
JSON:
[
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'}
]
Более короткий синтаксис​
Вы также можете написать свой оператор SQL, например, «LIMIT 2, 5», который возвращает то же, что и в приведенном выше примере смещения
Начните с позиции 3 и верните следующие 5 записей:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 2, 5";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Примечание: Номера поменяны местами: «LIMIT 2, 5» совпадает с «LIMIT 5 OFFSET 2».


Присоединяйтесь к двум или более таблицам​
Вы можете комбинировать строки из двух или более таблиц на основе связанного столбца между ними, используя оператор JOIN.
Представьте, что у вас есть таблица "пользователи" и таблица "продукты"
пользователи:
JSON:
[
  { id: 1, name: 'John', favorite_product: 154},
  { id: 2, name: 'Peter', favorite_product: 154},
  { id: 3, name: 'Amy', favorite_product: 155},
  { id: 4, name: 'Hannah', favorite_product:},
  { id: 5, name: 'Michael', favorite_product:}
]
продукты:
JSON:
[
  { id: 154, name: 'Chocolate Heaven' },
  { id: 155, name: 'Tasty Lemons' },
  { id: 156, name: 'Vanilla Dreams' }
]
Эти две таблицы можно объединить, используя favorite_product поле пользователя и поле продуктов id.
Выберите записи с совпадением в обеих таблицах:
JavaScript:
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT users.name AS user, products.name AS favorite FROM users JOIN products ON users.favorite_product = products.id";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
Примечание: вы можете использовать INNER JOIN вместо JOIN. Оба они дадут одинаковый результат.
Сохраните приведенный выше код в файле под названием db_join.js и запустите файл:
C:\Users\Your Name>node db_join.js
Что даст вам такой результат:
JSON:
[
  { user: 'John', favorite: 'Chocolate Heaven' },
  { user: 'Peter', favorite: 'Chocolate Heaven' },
  { user: 'Amy', favorite: 'Tasty Lemons' }
]
Как видно из приведенного выше результата, возвращаются только записи с совпадением в обеих таблицах.


Left Join​
Если вы хотите вернуть всех пользователей, независимо от того, есть ли у них любимый продукт или нет, используйте оператор LEFT JOIN
Выберите всех пользователей и их любимый продукт:
SQL:
SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT JOIN products ON users.favorite_product = products.id
Что даст вам такой результат:
JSON:
[
  { user: 'John', favorite: 'Chocolate Heaven' },
  { user: 'Peter', favorite: 'Chocolate Heaven' },
  { user: 'Amy', favorite: 'Tasty Lemons' },
  { user: 'Hannah', favorite: null },
  { user: 'Michael', favorite: null }
]
Right Join​
Если вы хотите вернуть все продукты и пользователей, которые выбрали их в качестве избранных, даже если ни один пользователь не указал их в качестве избранных, используйте оператор RIGHT JOIN
Выберите все продукты и пользователя, которому они нравятся:
SQL:
SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT JOIN products ON users.favorite_product = products.id
Что даст вам такой результат:
JSON:
[
  { user: 'John', favorite: 'Chocolate Heaven' },
  { user: 'Peter', favorite: 'Chocolate Heaven' },
  { user: 'Amy', favorite: 'Tasty Lemons' },
  { user: null, favorite: 'Vanilla Dreams' }
]
Примечание: Hannah и Michael, у которых нет любимого продукта, не включены в результат.
 
Последнее редактирование:
Сверху Снизу