Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Select * FROM table where Field is not null




SELECT * FROM Table WHERE Field IS NULL

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

Выражение [ NOT ] LIKE используется при проверке текстовых данных на [не]соответствие заданному шаблону. Символ ‘%’ (процент) в шаблоне заменяет собой любую последовательность символов, а символ ‘_’ (подчеркивание) – один любой символ.

SELECT * FROM Employees WHERE Name LIKE ‘Иван%’

Попадающие под заданное условие фамилии: Иван ов

SELECT * FROM Employees WHERE Name LIKE ‘__д%’

Попадающие под заданное условие фамилии: Си д оров

Выражение [NOT] IN проверяет значения на [не]вхождение в определенный список:

SELECT * FROM Employees WHERE Position IN (‘Начальник’, ‘Менеджер’)

Выражение [ NOT ] BETWEEN проверяет значения на [не]попадание в некоторый диапазон:

SELECT * FROM Employees WHERE Salary BETWEEN 200 AND 500

Этот запрос вернет список работников, зарплата которых больше либо равна 200 у.е. и меньше либо равна 500 у.е.

Несколько условий поиска могут комбинироваться посредством логических операторов AND, OR или NOT:

SELECT *

FROM Employees

WHERE Position IN (‘Начальник’, ‘Менеджер’)

AND Salary BETWEEN 200 AND 500

SELECT *

FROM Employees

WHERE (Position = ‘Начальник’ OR Position =

‘Менеджер’)

AND Salary BETWEEN 200 AND 500

SELECT *

FROM Employees

WHERE NOT (Position = ‘Начальник’ OR Position =

‘Менеджер’)

Секция ORDER BY

Необязательная секция ORDER BY в команде SELECT предназначена для сортировки строк результирующего набора данных. Формат этой секции в общем виде выглядит так:

ORDER BY Field1 [ASC | DESC] [, Field2 [ASC | DESC] ] [, …]

Ключевое слово ASC предписывает производить сортировку по возрастанию, а DESC – по убыванию. Если ASC и DESC отсутствуют, по умолчанию подразумевается ASC. Например, выберем записи о начальниках и отсортируем результат в порядке убывания размера зарплат:

SELECT *

FROM Employees

WHERE Position = ‘Начальник’

ORDER BY Salary DESC

Следующий запрос отсортирует сотрудников по отделам (в порядке возрастания номера отдела) и по размеру зарплат внутри каждого отдела (в порядке убывания зарплаты):

SELECT *

FROM Employees

ORDER BY DeptNum ASC, Salary DESC

Ключевое слово ASC можно опустить, ибо оно действует по умолчанию:

SELECT *

FROM Employees

ORDER BY DeptNum, Salary DESC

Групповые функции

Если нас не интересуют строки таблицы как таковые, а интересуют некоторые итоги, мы можем использовать в процессе выборки колонок таблиц групповые функции. Основные групповые функции представлены ниже:

Функция Описание
SUM(Field) Вычисляет сумму по указанной колонке
MIN(Field) Вычисляет минимальное значение по указанной колонке
MAX(Field) Вычисляет максимальное значение по указанной колонке
AVG(Field) Вычисляет среднее значение по указанной колонке
COUNT(*) Вычисляет количество строк в результирующей выборке
COUNT(Field) Вычисляет количество не пустых значений в колонке

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

SELECT MAX (SALARY)

FROM Employees

Общее количество записей в таблице вернет запрос вида:

SELECT COUNT (*)

FROM Employees

Секция GROUP BY

По умолчанию группой, на которой вычисляется групповая функция, является вся результирующая выборка. Если мы нуждаемся в вычислении промежуточных итогов, мы можем разбить итоговую выборку на подгруппы с помощью необязательной секции GROUP BY:

GROUP BY Field1 [, Field2] [, …]

Например, подсчитаем максимальную зарплату по отделам организации:

SELECT DeptNum, MAX (SALARY)

FROM Employees

GROUP BY DeptNum

В этом случае функция MAX будет считаться отдельно для всех записей с одинаковым значением поля DeptNum.

Секция HAVING

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

 

SELECT DeptNum, MAX (SALARY)

FROM Employees

GROUP BY DeptNum

HAVING MAX (SALARY) > 1000

Важно понимать, что секции HAVING и WHERE взаимно дополняют друг друга. Сначала с помощью ограничений WHERE формируется итоговая выборка, затем выполняется разбивка на группы по значениям полей, заданных в GROUP BY. Далее по каждой группе вычисляется групповая функция и в заключение накладывается условие HAVING.

Изменение данных

Под изменением данных понимаются следующие операции:

  • втавка новых строк в таблицу;
  • именение существующих строк;
  • уаление существующих строк.

Команда INSERT

Добавление новых записей в таблицу осуществляется посредством команды INSERT. Она имеет следующий синтаксис:

INSERT INTO <имя таблицы> [(<список имен колонок>)]

VALUES (<список констант>)

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

INSERT INTO Employees(TabNum, Name, Position, DeptNum,

Salary)

VALUES (45, ‘Сергеев’, ‘Старший менеджер’, 15, 850)

После выполнения команды таблица Employees будет выглядеть следующим образом:

Employees  
TabNum Name Position DeptNum Salary
  Иванов Начальник    
  Петров Инж.    
  Сидоров Менеджер    
  Сергеев Ст. менеджер    

Если какая-либо колонка в списке будет опущена при вставке – в соответствующее поле записи автоматически будет занесено пустое значение (NULL):

INSERT INTO Employees(TabNum, Name, DeptNum, Salary)

VALUES (45, ‘Сергеев’, 15, 850)

После выполнения команды таблица Employees будет выглядеть следующим образом:

Employees  
TabNum Name Position DeptNum Salary
  Иванов Начальник    
  Петров Инж.    
  Сидоров Менеджер    
  Сергеев      

Количество констант в секции VALUES всегда должно соответствовать количеству колонок. Список колонок в команде INSERT может быть опущен целиком, в этом случае список констант в секции VALUES должен точно соответствовать описанию колонок таблицы в словаре данных СУБД, иначе команда будет отвергнута ядром БД. Пример правильной команды:

INSERT INTO Employees VALUES (45, ‘Сергеев’,

‘Старший менеджер’, 15, 850)

Команда вида:

INSERT INTO Employees VALUES (45, ‘Сергеев’, 15, 850)

Завершится ошибкой, так как количество констант не соответствует реальному количеству колонок в таблице.

В колонку можно в явном виде внести пустое значение посредством ключевого слова NULL. Последний запрос можно переписать следующим образом:

INSERT INTO Employees VALUES (45, ‘Сергеев’, NULL, 15, 850)

В этом случае команда вставки отработает корректно и в поле Position будет внесено пустое значение. Очевидно, что к аналогичному результату приведет и команда:

INSERT INTO Employees(TabNum, Name, Position, DeptNum,Salary)

VALUES (45, ‘Сергеев’, NULL, 15, 850)

Кроме простого добавления новых записей команда INSERT позволяет осуществлять пакетную перекачку данных из таблицы в таблицу. Синтаксис подобной команды следующий:

INSERT INTO <имя таблицы> [(<список имен колонок>)]

<команда SELECT>

Например:

INSERT INTO Table1(Field1, Field2)

SELECT Field3, (Field4 + 5) FROM Table2

Команда DELETE

Чтобы удалить ненужные записи из таблицы – следует использовать команду DELETE:

DELETE FROM <имя таблицы> [ WHERE <условия поиска>]

Если опустить секцию условий поиска WHERE – из таблицы будут удалены все записи. Иначе – только записи, удовлетворяющие критериям поиска. Форматы секций WHERE команд SELECT и DELETE аналогичны.

Примеры команды DELETE:

DELETE FROM Employees

DELETE FROM Employees WHERE TabNum = 45

Команда UPDATE

Изменить ранее внесенные командой INSERT данные можно с помощью команды UPDATE:

UPDATE < имя таблицы>

SET <имя колонки> = <новое значение>, <имя колонки> =

<новое значение>, …

WHERE <условия поиска>]

Как и в случае команды DELETE, при отсутствии секции WHERE обновлены будут все строки таблицы. Иначе – только подходящие под заданные условия. Примеры:

UPDATE Employees SET Salary = Salary + 100

UPDATE Employees

SET Position = ‘Старший менеджер’, Salary = 1000

WHERE TabNum = 45 AND Position IS NULL





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 567 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Либо вы управляете вашим днем, либо день управляет вами. © Джим Рон
==> читать все изречения...

2704 - | 2395 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.