Sql операторы and, or и not


Download 31.63 Kb.
bet1/2
Sana12.08.2023
Hajmi31.63 Kb.
#1666672
  1   2
Bog'liq
datatabse 4lab


SQL - Операторы AND, OR и NOT
Предложение WHERE может быть объединено с операторами AND, OR и NOT. Операторы AND и OR используются для фильтрации записей на основе более чем одного условия:
Оператор AND отображает запись, если все условия, разделенные символом AND, имеют значение TRUE.
Оператор OR отображает запись, если любое из условий, разделенных OR, является TRUE.
Оператор NOT отображает запись, если условие (и) НЕ ИСТИНА.
Синтаксис AND
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
Синтаксис OR
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
Синтаксис NOT
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
Пример AND
Следующий оператор SQL выбирает все поля из «users», где пол «gender» равен 1 (женский), а  баланс «balance» больше или равен (>=) 1000.
Пример:
SELECT * FROM users
WHERE gender = 1 AND balance >= 1000;
Пример OR
Следующий оператор SQL выбирает все поля из «users», где баланс пользователя «balance» равен 1000 или возраст пользователя «age» равен 25.
Пример:
SELECT * FROM users
WHERE balance = 1000 OR age = 25;
Пример NOT
Следующий оператор SQL выбирает все поля из «users», где возраст «age» не равен 30:
Пример:
SELECT * FROM users
WHERE NOT age = 30
Объединение AND, OR и NOT
Вы также можете комбинировать операторы AND, OR и NOT.
Следующий оператор SQL выбирает все поля из «users», где возраст «age» равно 30. И баланс «balance» больше 1000 или имя «name» равно Том.
Пример:
SELECT * FROM users
WHERE age = 30 AND (balance > 1000 OR name = 'Том');

Давайте попробуем написать несколько SQL запросов, которые помогут нам понять принцип работы AND, OR и SELECT вместе. Для начала создадим таблицу в базе данных, воспользовавшись командой CREATE:




1
2
3
4
5
6
7
8
9
10
11
12
13

CREATE TABLE table1 (

id INTEGER PRIMARY KEY,

name TEXT NOT NULL,

pro TEXT NOT NULL,

sex TEXT NOT NULL,

sal REAL CHECK (sal > 15000)

);

Таблица проста до безобразия: четыре столбца, для которых заданы ограничения уровня столбца. Так же столбец id имеет ограничение уровня таблицы, которое еще и является индексом таблицы, это мы про PRIMARY KEY, если кто не понял. Всё это нужно для двух вещей: ускорить выборку данных из базы данных и обеспечить целостность данных в базе данных. А теперь давайте добавим данные в таблицу базы данных, для этого воспользуемся командой INSERT INTO:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Пупкин Матвей’, 'Дантист', ‘м’, 55000.00);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Cумкин Денис’, 'Юрист', ‘м’, 35040.90);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Иванов Иван’, 'Младший юрист', ‘м’, 16000.00);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Маркова Ирина’, 'Бухгалтер', ‘ж’, 31200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Петрова Алина’, 'Менеджер продаж', ‘ж’, 21200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Михайлова Любовь’, 'Секретарь', ‘ж’, 16200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Сидорова Инна’, 'Руководитель отдела обслуживания', ‘ж’, 66200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Михайлова Любовь’, 'Документооборотчик', ‘ж’, 21200.10);

Таблица наполнена, а теперь давайте попрактикуемся в написании запросов SELECT вместе с AND и OR:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

SELECT * FROM table1

WHERE sex = 'м' AND sal > 20000;

1|Пупкин Матвей|Дантист|м|55000.0

2|Cумкин Денис|Юрист|м|35040.9

SELECT * FROM table1

WHERE sex = 'м' OR sal>20000;

1|Пупкин Матвей|Дантист|м|55000.0

2|Cумкин Денис|Юрист|м|35040.9

3|Иванов Иван|Младший юрист|м|16000.0

4|Маркова Ирина|Бухгалтер|ж|31200.1

5|Петрова Алина|Менеджер продаж|ж|21200.1

7|Сидорова Инна|Руководитель отдела обслуживания|ж|66200.1

8|Михайлова Любовь|Документооборотчик|ж|21200.1

Казалось бы, запросы одинаковы, разница только в одном операторе AND и OR, а какие разные результаты. Дело все в том, что оператор AND – это «логическое И», поэтому SQLite посмотрел на левый операнд, выполнил его условие (sex=’м’) составил у себя внутри таблицу по данному условию, а затем наложил на эту таблицу второе условие, которое стоит справа от AND (sal>20000) и удалил все строки, которые не подходят под это условие, а результат вывел нам в виде таблице. Мы говорим SQLite3: дай нам информацию о мужчинах, зарплата которых больше двадцати тысяч рублей.
Оператор OR или «логическое ИЛИ» действует несколько иначе. SQLite видит условие слева (sex = ‘м’), выбирает из таблицы строку, удовлетворяющие этому условию, затем SQLite видит условие справа (sal>20000) и добавляет к строкам, полученным из первого условия новые строки, удовлетворяющие второму условию. Мы как бы говорим SQLite: дай нам информацию о мужчинах (sex =’м’) или дай нам информацию о тех людях, которые получают больше двадцати тысяч рублей (sal>20000).


Download 31.63 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling