По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Такой большой и интересный инструмент - а разворачивать как? В одной из предыдущих статей мы знакомились с таким инструментом разработчика, как ELK. Сегодня мы разберемся, как правильно подготовить этот комплекс для практической работы. Для начала напомним, что ELK это один из наиболее удобных инструментов разработчика, предназначенный для быстрого выявления неполадок в работе объемных программ путем сбора и анализа логов. Этот комплекс состоит из трех приложений: поисковика Elasticsearch, сборщика данных Logstash и визуализатора Kibana. Весь комплекс разрабатывается компанией Elastic. Ознакомимся с системными требованиями. На каждом из серверов в системе рекомендуется иметь не менее 8 физических ядер и не менее 48 Гб оперативной памяти. Кроме того, если данные планируется собирать с крупной системы, то объем внутренней памяти будем оценивать по принципу "чем больше тем лучше". 8 Тб это рекомендуемые требования, но этот показатель может варьироваться. Ну и, разумеется, чем выше скорость соединения между серверами - тем быстрее будет проводиться обработка информации. Рекомендуемый показатель - 1Гб/с. Система из трех таких серверов позволит обрабатывать до тысячи событий в секунду, собирать и отображать 95% данных за отдельные периоды времени (5 минут, сутки),хранить данные до 90 дней и обслуживать до 10 клиентов по протоколу HTTP одновременно. Поскольку все элементы данного решения реализованы на Java, первым делом нужно установить актуальную версию Oracle Java. Также рекомендуется изучить дополнительную информацию о компонентах ELK на предмет совместимости версий. Если на Вашей рабочей станции установлены Ubuntu или Debian, устанавливаем соединение с репозиторием для скачивания Oracle Java. Если вы пользуетесь CentOS то качаем программную среду на сервер с сайта разработчика. После того, как процесс установки завершится рекомендуется проверить актуальную версию с помощью соответствующей команды консоли. Если все хорошо, то это значит, что почва подготовлена, и можно переходить к следующему этапу А им станет скачивание и установка поискового инструмента Elasticsearch. Это также не вызовет особой сложности достаточно скопировать в систему публичный ключ репозитория, установить с ним соединение (пользователи Debian и Ubuntu могут столкнуться с отсутствием загрузочного пакета apt-transport-https его нужно будет установить дополнительно), скачать актуальную версию Elasticsearch и запустить процесс установки. Чтобы работа приложения была корректной, его стоит добавить в автозагрузку. Затем проверяем, штатно ли прошла установка, запустив программу. Итак, все запустилось нормально. Можно переходить к этапу конфигурирования Elasticsearch. Это не займет много времени нужно будет отредактировать пару строк в файле конфигурации /etc/elasticsearch/elasticsearch.yml. Во-первых, чтобы не собирать лишнюю информацию, указываем хост локального интерфейса, через который будет передавать данные Logstash (по умолчанию, данные собираются со всех сетевых интерфейсов), а во-вторых, указываем путь к хранилищу данных, откуда мы и будем с ними работать. Рекомендуется выделить под хранилище значительные объемы памяти чем сложнее проект, тем больше будут весить собираемые логи. После завершения процесса настройки перезапускаем и проверяем программу. Далее нас ждет установка веб-панели Kibana. Этот процесс почти не отличается от установки Elasticsearch, ключи репозиториев будут одинаковыми. В целом, все то же самое устанавливаем соединение с репозиторием, скачиваем, устанавливаем, добавляем в автозагрузку, запускаем, проверяем. Стоит обозначить, что приложение загружается довольно долго, поэтому проверку лучше осуществить через пару минут после отдачи команды на запуск приложения. Редактирование настроек Kibana можно осуществить через файл /etc/kibana/kibana.yml. Здесь нас интересует строка с указанием интерфейса, который будет "слушать" Kibana. Это могут быть все интерфейса, либо один определенный в данном случае нужно будет указать конкретный ip-адрес нужного сервера. Далее проверим сам веб-интерфейс, для этого указываем адрес - например, http://10.1.4.114:5601. Наконец, перейдем к этапу установки Logstash. Здесь все то же самое, только перед проверочным запуском программу нужно настроить. Можно отредактировать основной файл настроек /etc/logstash/logstash.yml, но рациональнее будет создать несколько файлов конфигурации в директории /etc/logstash/conf.d, чтобы группировать настройки по назначению. Создаем файлы input.conf и output.conf. В первом файле мы указываем порт, на который будем принимать информацию, а также параметры ssl, если в этом есть необходимость. Во втором файле указываем параметры передачи данных в Elasticsearch. Данные лучше передавать под указанным дополнительно индексом, также используя маску в виде даты. Также можно отключить функцию отправки данных в общий лог системы, чтобы не занимать место в хранилище дублированными фрагментами информации. Кроме этого, потребуется создать файл с параметрами обработки данных. Дело в том, что не всегда удобно работать с полным объемом, и приходится делать выборку ключевых данных. Создаем файл filter.confи указываем параметры, на основании которых будут фильтроваться необходимые данные. Также при необходимости можно настроить, например, корректное отображение даты или географического местоположения сервера, с которого будет поступать информация. Завершив конфигурирование, можно проверить работу программы, запустив ее и просмотрев внутренний файл лога /var/log/logstash/logstash-plain.log. Основной пакет программ установлен теперь осталось установить программы, которые будут отправлять данные, на сервера. Компания Elastic предлагает использовать Filebeat, но можно воспользоваться и альтернативными вариантами. Здесь процесс установки аналогичен предыдущим. Файл настроек по умолчанию позволяет сразу работать с программой, но можно и подредактировать его при необходимости. Если все сделано правильно, программный комплекс уже начал собирать логи. Следующим шагом будет открытие веб-интерфейса Kibana и настройка паттерна индекса, чтобы лог открывался в веб-интерфейсе по умолчанию, а в сохраняемых данных не было путаницы.
img
В данной статье мы рассмотрим такие вопросы как, копирование, перенос и удаление файлов. Копирование нескольких файлов и папок в том числе рекурсивно. Удаление файлов и папок в том числе рекурсивно. Использование групповых символов. Отбор файлов по типу, размеру, дате и.т.д. Утилиты tar, cpio и dd. Исходя из обозначенных выше вопросов будем разбираться со следующим списком команд: cp, find, mkdir, mv, ls, rm, rmdir, touch, tar, cpio, dd, file, gzip, gunzip, bzip2, xz, file globbing. А также захватим основные виды архиваторов и посмотрим, как с ними работать. Команда touch Данная команда меняет отметки времени файла. При помощи этой команды мы можем создавать новые файлы и менять время доступа к файлу. Например, мы можем посмотреть, что в текущей директории нет текстовых фалов. Убедится мы можем командой ls, а посмотреть в какой директории pwd. Соответственно вводим touch 123.txt и файл появляется. Есть так же другая команда для создания директорий mkdir. Описание можно по ней посмотреть, через ввод команды man mkdir. Данная команда создает директорию, например, mkdir folder1 создаст нам директорию folder1. Для просмотра используем команду ls. По данной команде мы тоже можем посмотреть мануал man ls. В описании написано, что показывает содержимое папки. Мы так же ее можем использовать с ключем –l, листинг, т.е в виде списка. В таком формате мы можем увидеть, кто владелец папки или файла, группу права на папку или файл. Достаточно информативно получается использование данной команды. Создадим еще один файл 456.txt и файл 1.txt в папке folder1 touch 456.txt touch folder1/1.txt и групповое создание файлов touch folder1/{2,3}.txt, а так же мы можем посмотреть, что у нас получилось в папке folder1. Команда cp Команда предназначена для копирования файлов и директорий. Самый простой пример сделать копию: cp 123.txt copy123.txt. Можно скопировать директорию cp folder1 folder2. И команда откажется выполнятся, потому, что по умолчанию рекурсивно не работает. В папке folder1 находятся файлы. И если мы хотим это осуществить то используем ключ –r или –R. Данная команда очень важна, т.к приходится использовать ее достаточно часто, например при настройке, какого–нибудь важного демона. Прежде чем вносить правки в файл конфигурации данного демона, оригинальный конфигурационный файл лучше всего скопировать. Команда mv Данная команда позволяет перенести файлы или папки, или переименовать (перенести данные из одного имени в другое). Для примера, скажем файл 456.txt перенести в файл something.txt, т.е mv 456.txt something.txt. Как мы видим файл 456 исчез, а появился something.txt Данная команда можем переносить так же в другую папку, например, глубже mv something.txt folder1/ Вот так будет выглядеть команда. А также можно вернуть его обратно, командой: mv folder1/something.txt . В конце знак точки выполняет функцию обозначения текущей папки. Аналогичные действия мы можем производить с папками. С помощью команд mv и cp. Команда rm Данная команда предназначена для удаления папок и файлов. rm 123.txt - удаление файла rm folder1 – удаление каталога, но команда выдает ошибку. Это происходит потому, что в папке находится файл. Если мы хотим удалить рекурсивно, то необходимо добавить ключ –r, а если без предупреждений и принудительно , то еще ключик –f. Итоговая команда будет выглядеть следующим образом. rm –rf folder1 Есть еще одна команда которая удаляет непосредственно папки, называется она rmdir. Мануал посмотреть вы можете по ней командой man rmdir. Данная команда удаляет непосредственно пустые директории. Работает достаточно близко по функционалу к rm. Команда file Команда определяет тип файла. Перейдем в папку Folder. cd folder Попробуем определить тип файла file yandex.url, как мы можем убедится команда выдает, что данный файл является текстовым. Если мы наберем, например, File *, то команда применится ко всем файлам в текущей директории и определит все типы файлов. Важной частью работы с файлами и папками являются Групповые Символы. * - все что угодно (заменяет любое количество символов) ? – любой символ (одиночный символ, ?? – два символа) ! – не (отрицание) [ac] – a или с [a-c] – a,b,c Создал несколько новых файлов: touch bag.txt touch bat.txt touch cat.txt touch sat.txt ls * - дает занимательную картинку, где видны файлы и папки. Команда ls *.* нам покажет только те файлы которые имеют расширения. Первая звездочка, означает любое имя, вторая звездочка указывает на любое расширение. Мы можем указать на конкретное количество символов обозначив их знаками “?”. Например, ls *.??? – это означает, что подходят любые файлы, у которых расширение из 3-х любых символов. Знаки вопросов и звездочек, можно использовать с сочетаниями букв и других символов. Можно сказать, покажи нам все файлы, которые начинаются с букв a или b, команда ls [ab]*. Также можно использовать конструкцию ls [a-m]*. Следовательно, работают все конструкции с групповыми символами. Команда find Данная команда будет осуществлять поиск файлов по иерархической структуре папок. Попробуем найти в директории все файлы: find * . Получим вот такой ответ на данную команду. У данной команды очень много ключей. Можем для примера взять такую конструкцию find . –name “In*” . Данная конструкция обозначает поиск в текущей папке, по имени, которое начинается с In и имеет в имени любое количество символов. Данную команду можно использовать для поиска файлов например по размеру: find . –size +5M . Следовательно, данным запросом мы ищем все файлы в текущем каталоге с размером более 5 MB. Команда cpio Работа с архивами очень важная часть операций с файлами. Для того, чтобы разобраться в данном вопросе рассмотрим следующую команду. Данная команда позволяет копировать файлы в архивы и из архивов. Данная команда позволяет работать с архивами, грубо говоря это двоичный архиватор. Смотрим, что есть в директории ls. Далее даем вот такую команду: ls | cpio –o > ../test.cpio В результате получили файл Пояснения, что мы сделали. Мы взяли вывод команды ls по конвейеру передали на вход команды cpio с ключем –o, который создает архив и то, что должно получится мы указали папку .. т.е родительская директория и файл test.cpio. Команда выполнилась и вывела число блоков, сколько обработалось. И переместившись на уровень выше, в родительскую директорию мы можем увидеть, что файл появился. А можем сделать следующую вещь: find . –name ”*.txt” | cpio –o > test2.cpio. Т.е мы можем выполнит поиск всех текстовых файлов в текущей директории и заархивировать, причем положить в текущую директорию. Создадим папку mkdir extract. И перейдем в нее cd /root/extract. Теперь мы попробуем разархивировать cpio –id < .. / test2.cpio Как мы видим все текстовые файлы появились. По сути, что мы сделали. Мы сказали команде cpio подняться на уровень выше взять test2.cpio и разархивировать в текущий каталог. Как видите там же попался каталог folder2, а попался т.к в нем тоже есть текстовые файлы. Напоминаю, что команда find работает так же со вложенными файлами, поэтому данный каталог и попал в архив. Команда dd Еще немного про архивы. Конвертирует и копирует файлы. Данная команда умеет копировать, не части файловой системы, как файлы или папки, а умеет копировать блочные устройства или его части, например, диск. Для того, чтобы показать, как это работает я примонтировал еще один раздел на 5 ГБ. Далее пишем следующее, находясь в директории cd /root/extract. dd if=/dev/sdc of=drive.img dd - сама команда if (Input файл) - диск of (Output файл) - путь куда положить. Мы видим, что команда столько-то получила, столько-то отправила данных в файл. Как можно увидеть, команда отработала. Следовательно, команда dd может сделать целиком резервную копию блочного устройства. Команда gzip Переходим непосредственно к архиваторам. Утилита, которая позволяет разжимать и упаковывать файлы. gzip drive.img Получаем в итоге, что вместо drive.img гигантского, получился более компактный drive.img.gz т.е команда gzip не просто создает архив , но и убивает оригинальный файл. Соответственно если мы хотим его отзиповать, то используем команду gunzip drive.img.gz Все архиваторы различаются по типу сжатия. Команда bzip2 Данный архиватор уже работает с блоками. Если его запустить аналогичным образом предыдущему архиватору, то получим файл немного меньшего размера. Это значить, что данный архиватор работает более эффективно с данным типами файлов. Разархивация осуществляется так же аналогично. Команда tar Теперь посмотрим легендарный архиватор tar Наиболее часто использующийся архиватор. С множеством функций и ключей. Пример использования. tar cvf archive.tar folder2 Синтаксис простой, команда с – создать , v - показывать процесс, f - файл, archive.tar - путь к месту где создастся архив, folder2 папка которую архивируем. Теперь мы можем подключить сжатие архиватора gzip, в опции надо добавить ключ “z” и выходной файл надо назвать archive.tar.gz. Для разархивации мы указываем ключи xvf и путь до архива.
img
SQL расшифровывается как Structured Query Language, или структурированный язык запросов. Команды SQL – это инструкции, которые даются базе данных для выполнения задач, функций и запросов с данными. SQL-командами можно пользоваться для поиска по базе данных и выполнения различных функций: создания и удаления таблиц, добавления данных в таблицы и их редактирования. Ниже приведен список основных команд (их иногда называют операторами), которые необходимо знать при работе с SQL. SELECT и FROM SELECT в запросе определяет, какие столбцы данных отобразить в результатах. Кроме того, в SQL есть возможности отображать данные не из столбца таблицы. В примере ниже показаны 3 столбца, взятые из таблицы студентов Student (через SELECT и FROM) и один вычисляемый столбец. В базе данных хранятся ID (studentID), имя (FirstName) и фамилия (LastName) студента. Мы можем объединить столбцы с именем и фамилией и создать вычисляемое поле с полным именем (FullName). SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName FROM student; Вывод: +-----------+-------------------+------------+------------------------+ | studentID | FirstName | LastName | FullName | +-----------+-------------------+------------+------------------------+ | 1 | Monique | Davis | Monique Davis | | 2 | Teri | Gutierrez | Teri Gutierrez | | 3 | Spencer | Pautier | Spencer Pautier | | 4 | Louis | Ramsey | Louis Ramsey | | 5 | Alvin | Greene | Alvin Greene | | 6 | Sophie | Freeman | Sophie Freeman | | 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd | | 8 | Donald D. | Chamberlin | Donald D. Chamberlin | | 9 | Raymond F. | Boyce | Raymond F. Boyce | +-----------+-------------------+------------+------------------------+ 9 rows in set (0.00 sec) CREATE TABLE Название CREATE TABLE говорит само за себя – оператор создает таблицу. Вы можете задать название таблицы и настроить, какие столбцы будут присутствовать в таблице. CREATE TABLE table_name ( column_1 datatype, column_2 datatype, column_3 datatype ); ALTER TABLE ALTER TABLE изменяет структуру таблицы. Вот так можно добавить столбец в базу данных: ALTER TABLE table_name ADD column_name datatype; CHECK CHECK ограничивает диапазон значений, которые можно добавить в столбец. Когда вы настраиваете ограничение CHECK для отдельного столбца, оператор проверяет, что в этом столбце присутствуют строго определенные значения. Если же CHECK настраивается для таблицы, то он может ограничивать значения в отдельных столбцах на основании значений из других столбцов этой строки. В следующем примере при создании таблицы Persons используется ограничение CHECK для столбца «Возраст» (Age). Таким образом проверяется, что в таблицу не попадают лица младше 18 лет. CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CHECK (Age>=18) ); Следующий синтаксис используется для присвоения названия оператору CHECK и настройки CHECK для нескольких столбцов: CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, City varchar(255), CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes') ); WHERE (AND, OR, IN, BETWEEN и LIKE) Оператор WHERE используется для ограничения количества возвращаемых строк. Сначала, в качестве примере, мы покажем оператор SELECT и его результат без оператора WHERE. Затем добавим оператор WHERE, в котором используются сразу 5 из вышеуказанных квалификаторов. SELECT studentID, FullName, sat_score, rcd_updated FROM student; +-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | +-----------+------------------------+-----------+---------------------+ 9 rows in set (0.00 sec) Теперь повторим запрос SELECT, но ограничим возвращаемые строки оператором WHERE. STUDENT studentID, FullName, sat_score, recordUpdated FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8) AND sat_score NOT IN (1000, 1400); +-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | +-----------+----------------------+-----------+---------------------+ 5 rows in set (0.00 sec) UPDATE Для обновления записи в таблице используется оператор UPDATE. Условием WHERE можно уточнить, какие именно записи вы бы хотели обновить. Вы можете обновлять по одному или нескольким столбцам сразу. Синтаксис выглядит так: UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; В примере ниже обновляется название записи (поле Name) с Id 4: UPDATE Person SET Name = “Elton John” WHERE Id = 4; Помимо этого, можно обновлять столбцы в таблице значениями из других таблиц. Чтобы получить данные из нескольких таблиц, воспользуйтесь оператором JOIN. Синтаксис выглядит так: UPDATE table_name1 SET table_name1.column1 = table_name2.columnA table_name1.column2 = table_name2.columnB FROM table_name1 JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key В примере ниже мы обновляем поле «Менеджер» (Manager) для всех записей: UPDATE Person SET Person.Manager = Department.Manager FROM Person JOIN Department ON Person.DepartmentID = Department.ID GROUP BY GROUP BY позволяет объединять строки и агрегировать данные. Вот так выглядит синтаксис GROUP BY: SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; HAVING HAVING позволяет сортировать данные, которые собираются через GROUP BY. Таким образом, пользователю показывается лишь ограниченный набор записей. Вот так выглядит синтаксис HAVING: SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value; AVG() AVG, или среднее, вычисляет среднее значение числового столбца из набора строк, которые возвращает оператор SQL. Вот так выглядит синтаксис: SELECT groupingField, AVG(num_field) FROM table1 GROUP BY groupingField А вот пример этого оператора для таблицы Student: SELECT studentID, FullName, AVG(sat_score) FROM student GROUP BY studentID, FullName; AS AS позволяет переименовать столбец или таблицу с помощью псевдонима. SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table И вот так будет выглядеть результат. +-------------+------------------------+ | AgeOfServer | NonWarrantyPeriod | +-------------+------------------------+ | 36 | 24 | | 24 | 12 | | 61 | 49 | | 12 | 0 | | 6 | -6 | | 0 | -12 | | 36 | 24 | | 36 | 24 | | 24 | 12 | +-------------+------------------------+ Кроме того, через оператор AS вы можете задать название таблицы – так будет проще обращаться к ней в JOIN. SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust JOIN order_table AS ord ON cust.cust_number = ord.cust_number Результат выглядит так. +-------------+------------+-----------+-----------------+--------------+ | product | ord_number | price | cust_name | cust_number | +-------------+------------+-----------+-----------------+--------------+ | RAM | 12345 | 124 | John Smith | 20 | | CPU | 12346 | 212 | Mia X | 22 | | USB | 12347 | 49 | Elise Beth | 21 | | Cable | 12348 | 0 | Paul Fort | 19 | | Mouse | 12349 | 66 | Nats Back | 15 | | Laptop | 12350 | 612 | Mel S | 36 | | Keyboard| 12351 | 24 | George Z | 95 | | Keyboard| 12352 | 24 | Ally B | 55 | | Air | 12353 | 12 | Maria Trust | 11 | +-------------+------------+-----------+-----------------+--------------+ ORDER BY ORDER BY позволяет сортировать результирующий набор данных по одному или нескольким элементам в разделе SELECT. Ниже дан пример сортировки студентов по имени (FullName) в порядке убывания. Изначально используется стандартная сортировка по возрастанию (ASC), поэтому для сортировки в обратном порядке мы применяем DESC. SELECT studentID, FullName, sat_score FROM student ORDER BY FullName DESC; COUNT COUNT вычисляет количество строк и возвращает результирующее значение в столбце. Ниже приводятся возможные сценарии использования COUNT: Подсчет всех строк в таблице (не требуется Group by) Подсчет общего числа подмножеств данных (в операторе обязательно прописывается Group By) Этот оператор SQL выводит количество всех строк. Кроме того, что вы можете настроить название результирующего столбца COUNT с помощью AS. SELECT count(*) AS studentCount FROM student; DELETE DELETE используется для удаления записи из таблицы. Будьте внимательны! Вы можете удалить несколько записей в таблице, либо сразу все. С помощью условия WHERE вы указываете, какие записи необходимо удалить. Синтаксис выглядит так: DELETE FROM table_name WHERE condition; Вот так выглядит удаление из таблицы Person записи с Id 3: DELETE FROM Person WHERE Id = 3; INNER JOIN JOIN, или внутреннее соединение, выбирает записи, соответствующие значениям в двух таблицах. SELECT * FROM A x JOIN B y ON y.aId = x.Id LEFT JOIN LEFT JOIN возвращает все строки из левой таблицы и соответствующие им строки из правой таблицы. Строки из левой таблицы возвращаются даже при пустых значениях в правой таблице. Если для строк из левой таблицы нет соответствия в правой, то в значениях последней будет стоять null. SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id RIGHT JOIN RIGHT JOIN возвращает все строки из правой таблицы и соответствующие им строки из левой. В отличие от левого соединения, здесь возвращаются все строки из правой таблицы, даже если им ничего не соответствует в левой. В таком случае, в значениях столбцов из левой таблицы будет стоять null. SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id FULL OUTER JOIN FULL OUTER JOIN возвращает все строки, соответствующие условиям в любой из таблиц. Если в левой таблице есть строки, которым ничего не соответствует в правой, то они все равно отобразятся в результирующих значениях. То же самое распространяется и на строки из правой таблицы без соответствующих значений в левой. SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName INSERT INSERT используется для добавления данных в таблицу. INSERT INTO table_name (column_1, column_2, column_3) VALUES (value_1, 'value_2', value_3); LIKE LIKE используется в связке с WHERE или HAVING (в составе оператора GROUP BY) и ограничивает выбранные строки по элементам, если в столбце содержится определенный шаблон символов. Этот SQL запрос выбирает студентов, чье значение в FullName начинается с «Monique» или заканчивается с «Greene». SELECT studentID, FullName, sat_score, rcd_updated FROM student WHERE FullName LIKE 'Monique%' OR FullName LIKE '%Greene'; +-----------+---------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+---------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | +-----------+---------------+-----------+---------------------+ 2 rows in set (0.00 sec) Перед LIKE вы можете добавить NOT, и тогда строки, соответствующие условию, будут исключаться, а не добавляться. Этот SQL исключает записи, у которых в столбце FULL NAME содержится «cer Pau» и «Ted». SELECT studentID, FullName, sat_score, rcd_updated FROM student WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%'; +-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | +-----------+----------------------+-----------+---------------------+ 7 rows in set (0.00 sec)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59