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




Что такое запрос?

Запрос - команда которую вы даете вашей программе базы данных, и которая сообщает ей чтобы она вывела определенную информацию из таблиц в

память. Эта информация обычно посылается непосредственно на экран

компьютера или терминала которым вы пользуетесь, хотя, в большинстве

случаев, ее можно также послать принтеру, сохранить в файле (как объ-

ект в памяти компьютера), или представить как вводную информацию для

другой команды или процесса.

Запрос – это вопрос, который вы задаете базе данных. Если какие-либо ее данные удовлетворяют условиям вашего запроса, то SQL передает их вам.

Команды SQL

Язык SQL состоит из ограниченного числа команд, специально предназначенных для управления данными. Одни из этих команд служат для определения данных, другие – для их обработки, а остальные – для администрирования данных.

Операторы SQL делятся на:

· операторы определения данных (Data Definition Language, DDL):

· CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),

· ALTER изменяет объект,

· DROP удаляет объект;

· операторы манипуляции данными (Data Manipulation Language, DML):

· SELECT выбирает данные, удовлетворяющие заданным условиям,

· INSERT добавляет новые данные,

· UPDATE изменяет существующие данные,

· DELETE удаляет данные;

· операторы определения доступа к данным (Data Control Language, DCL):

· GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,

· REVOKE отзывает ранее выданные разрешения,

· DENY задает запрет, имеющий приоритет над разрешением;

· операторы управления транзакциями (Transaction Control Language, TCL):

· COMMIT применяет транзакцию,

· ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,

· SAVEPOINT делит транзакцию на более мелкие участки.

Зарезервированные слова

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

Например:

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

СREATE TADLE название_таблицы, (название_столбца1 тип данных [DEFAULT выражение] [ограничение_столбца], название_столбца2 тип данных [DEFAULT выражение] [ограничение_столбца],[ограничения_таблицы]).

create table users (
id_user int (10) AUTO_INCREMENT,
name varchar(20) NOT NULL,
email varchar(50) NOT NULL,
password varchar(15) NOT NULL,
PRIMARY KEY (id_user)
);

Теперь нам необходимо внести данные в наши таблицы.

Для этого используется оператор INSERT.

внесения данных во все поля таблицы:

INSERT INTO имя_таблицы VALUES ('значение_первого_столбца','значение_второго_столбца',..., 'значение_последнего_столбца');

INSERT INTO users VALUES ('1','sergey', 'sergey@mail.ru', '1111');

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

INSERT INTO имя_таблицы ('имя_столбца', 'имя_столбца') VALUES ('значение_первого_столбца','значение_второго_столбца');


В нашей таблице users все поля обязательны для заполнения, но наше первое поле имеет ключевое слово - AUTO_INCREMENT (т.е. оно заполняется автоматически), поэтому мы можем пропустить этот столбец:

INSERT INTO users (name, email, password) VALUES ('valera', 'valera@mail.ru', '2222');

Если бы у нас были поля с типом NULL, т.е. необязательные для заполнения, мы бы тоже могли их проигнорировать. А вот если попытаться оставить пустым поле со значением NOT NULL, то сервер выдаст сообщение об ошибке и не выполнит запрос. Кроме того, при внесении данных сервер проверяет связи между таблицами. Поэтому вам не удастся внести в поле, являющееся внешним ключом, значение, отсутствующее в связанной таблице

Для добавления столбцов в таблицу используется оператор ALTER TABLE - ADD COLUMN. Его синтаксис следующий:

 

ALTER TABLE имя_таблицы ADD COLUMN имя_столбца тип;

Для изменения имени существующего столбца используется оператор CHANGE. Его синтаксис следующий:

 

ALTER TABLE имя_таблицы CHANGE старое_имя_столбца новое_имя_столбца тип;

 

Для обновления уже существующих данных служит оператор UPDATE. Его синтаксис следующий:

 

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

WHERE условие;

 

UPDATE users SET role='модератор'

WHERE id_user=1;

UPDATE users SET rating='Профи'

WHERE kol>30;

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

 

ALTER TABLE имя_таблицы MODIFY имя_столбца новый_тип;

- оператор DELETE, который позволяет удалять строки из таблицы. Его синтаксис следующий:

 

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

WHERE условие;

Давайте из таблицы сообщений удалим те записи, которые оставлял пользователь valera (id=2):

 

DELETE FROM posts

WHERE id_author='2';

 

Удалить таблицу

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

Выборка

Итак, в нашей БД есть три таблицы, и мы хотим посмотреть, какие данные в них содержатся. Для этого в SQL существует оператор SELECT. Синтаксис его использования следующий:

 

SELECT что_выбрать FROM откуда_выбрать;

SELECT имя_столбца FROM имя_таблицы;


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

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

SELECT * FROM users;

SELECT id_user FROM users;

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

SELECT имя_столбца FROM имя_таблицы ORDER BY имя_столбца_сортировки;

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

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

 

SELECT имя_столбца FROM имя_таблицы WHERE условие;

 

SELECT * FROM topics WHERE id_author=4;

 

Оператор Описание Пример
= (равно) Отбираются значения равные указанному SELECT * FROM topics WHERE id_author=4;
> (больше) Отбираются значения больше указанного   SELECT * FROM topics WHERE id_author>2;
< (меньше) Отбираются значения меньше указанного SELECT * FROM topics WHERE id_author<3;
>= (больше или равно) Отбираются значения большие и равные указанному SELECT * FROM topics WHERE id_author>=2;
!= (не равно) Отбираются значения не равные указанному SELECT * FROM topics WHERE id_author!=1;
IS NOT NULL Отбираются строки, имеющие значения в указанном поле SELECT * FROM topics WHERE id_author IS NOT NULL;
IS NULL Отбираются строки, не имеющие значения в указанном поле SELECT * FROM topics WHERE id_author IS NULL;
BETWEEN (между) Отбираются значения, находящиеся между указанными SELECT * FROM topics WHERE id_author BETWEEN 1 AND 3;
IN (значение содержится) Отбираются значения, соответствующие указанным SELECT * FROM topics WHERE id_author IN (1, 4);
NOT IN (значение не содержится) Отбираются значения, кроме указанных SELECT * FROM topics WHERE id_author NOT IN (1, 4);
LIKE (соответствие) Отбираются значения, соответствующие образцу SELECT * FROM topics WHERE topic_name LIKE 'вел%';
NOT LIKE (не соответствие) Отбираются значения, не соответствующие образцу SELECT * FROM topics WHERE topic_name NOT LIKE 'вел%';

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

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

Самый распространенный метасимвол - %. Он означает любые символы. Например, если нам надо найти слова, начинающиеся с букв "вел", то мы напишем LIKE 'вел%', а если мы хотим найти слова, которые содержат символы "клуб", то мы напишем LIKE '%клуб%'

Еще один часто используемый метасимвол - _. В отличие от %, который обозначает несколько или ни одного символа, нижнее подчеркивание обозначает ровно один символ.

Вложенные запросы

В SQL предусмотрена возможность объединять запросы в один путем превращения одного из них в подзапрос (вложенный запрос). Итак, чтобы узнать, кто создал тему "велосипеды", мы сделаем следующий запрос:

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

 

SELECT имя_столбца FROM имя_таблицы WHERE часть условия IN

(SELECT имя_столбца FROM имя_таблицы WHERE часть условия IN

(SELECT имя_столбца FROM имя_таблицы WHERE условие)

)

;

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

  • Сначала MySQL выполнит самый глубокий запрос:

SELECT id_author FROM topics WHERE topic_name='велосипеды'

  • Полученный результат (id_author=2) передаст во внешний запрос, который примет вид:

SELECT id_topic FROM posts WHERE id_author IN (2);

 

  • Полученный результат (id_topic:4,1) передаст во внешний запрос, который примет вид:

SELECT topic_name FROM topics WHERE id_topic IN (4,1);

  • И выдаст окончательный результат (topic_name: о рыбалке, о рыбалке). Т.е. автор темы "велосипеды" оставлял сообщения в теме "О рыбалке", созданной Сергеем (id=1) и в теме "О рыбалке", созданной Светой (id=4).

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-21 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: