 
        
        - •Язык запросов sql
- •Просмотр только определенного столбца таблицы
- •Переупорядочение столбца
- •Удаление избыточных данных
- •Квалифицированный выбор при использовании предложений
- •Использование специальных операторов в условиях.
- •In и between используются также, как и реляционные операторы, чтобы сравнивать значения, которые берутся либо из набора ( для in ) либо из диапазона ( для between ).
- •Работа с нулевыми( null ) значениями
- •Использование not со специальными операторами
- •Обобщение данных с помощью агрегатных функций
- •Включение дубликатов в агрегатные функции
- •Агрегаты построенные на скалярном выражении
- •Предложение group by
- •Предложение having
- •Формирование выводов запросов
- •Упорядочение вывода по номеру столбца
- •Упорядочение с помощью опретора null
	 
		
Язык запросов sql
SQL- структурированный язык запросов - предназначен для обработки реляционных БД. Многие конструкторы и операторы языка SQL связаны с операциями реляционной алгебры. Существует два типа языка SQL:
- интерактивный - используется для выполнения действий непосредственно над БД в оперативном режиме. Как правило, интерактивному SQL сопутствует некоторая программа-сервер SQL. Наиболее популярны MS-SQL Server, Inter Base и некоторые другие. 
- встроенный - состоит из команд SQL, включенных непосредственно в программы, которые написаны на другом языке программирования. Например, Delphi, C++ Builder, Access. 
В языке SQL существует множество команд, которые относятся к тем или иным выполняемым действиям. Таким образом можно разделить SQL на определенные подмножества:
- DQL- язык запросов - команды предназначены для извлечения данных из таблиц. 
- DML- манипуляция данными. 
- TPL- язык обработки транзакций (*). Команды позволяют объединить команды языка DHL в группы транзакций. Если одна из команд DHL не может быть выполнена, то отменяются все предыдущие команды из той же транзакции. 
- DDL- определение данных, а так же инструкции обеспечения целостности данных. ( Создание таблиц и связей между ними ) 
- CCL- язык управления курсором -позволяет выбрать для обработки одну строку из результирующего множества запросов. 
- DCL- язык управления данными - содержит инструкции выполняющие присваивание прав доступа к БД, множеству таблиц или представлений. 
Типы данных SQL
Типы данных распознаваемые с помощью ANSI, состоят из символов и различных типов чисел, которые могут классифицироваться как точные числа и приблизительные числа. Точные числовые типы - это номера, с десятичной точкой или без десятичной точки. Приблизительные числовые типы - это номера в показательной ( экспоненциальной по основанию - 10 ) записи. Для все прочих типов, отличи слишком малы, чтобы их как-то классифицировать.
Иногда типы данных используют аргумент, который называю размером аргумента, чей точный формат и значение меняется в зависимости от конкретного типа. Значения по умолчанию обеспечены для всех типов, если размер аргумента отсутствует.
Ниже представлены типы данных ANSI ( имена в круглых скобках - это синонимы ):
| TEXT | ТЕКСТ | 
| CHAR(или CHARACTER) | Строка текста в реализационно-определенном формате. Размер аргумента здесь это единственное неотрицательное целое число которое ссылается к максимальной длине строки. Значения этого типа, должны быть заключены в одиночные кавычки, например 'text'. Две рядом стоящие одиночные кавычки ('') внутри строки будет пониматься как одна одиночна кавычка ('). | 
ПРИМЕЧАНИЕ: Здесь и далее, фраза Реализационно-Определенный или Реализационно-Зависимый, указывает, что этот аргумент или формат зависит от конкретной программы в которой реализуются данные.
| EXACT NUMERIC | ТОЧНОЕ ЧИСЛО | 
| DEC (или DECIMAL) | Десятичное число; то есть, число которое мoжет иметь десятичную точку. Здесь аргумент размера имеет две части: точность и масштаб.Масштаб не может превышать точность. Cначала указывается точность, разделительная запятая и далее аргумент масштаба. Точность указывает сколько значащих цифр имеет число. Максимальное десятичное число составляющее номер - реализационно-определенное значение, равное или большее чем этот номер. Масштаб указывает максимальное число цифр справа от десятичной точки. Масштаб = нулю делает поле эквивалентом целого числа. | 
| NUMERIC | Такое же как DECIMAL за исключением того, что максимальное десятичное не может превышать аргумента точности. | 
| INT( или INTEGER) | Число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, то есть с масштабом равным 0. Аргумент размера не используется (он автоматически устанавливается в реализационно-зависимое значение). | 
| SMALLINT | Такое же как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может ( или не может ) быть меньшее чем INTEGER. | 
| APPROXIMATE NUMERIC | ПРИБЛИЗИТЕЛЬНОЕ ЧИСЛО | 
| FLOAT | Число с плавающей запятой на основе 10 показательной функции. Аргумент размера состоит из одного числа определяющего минимальную точность. | 
| REAL | Такое же как FLOAT, за исключением того, что никакого аргумента размера не используется. Точность установлена реализационно-зависимую по умолчанию. | 
| DOUBLE PRECISION ( или DOUBLE ) | Такое же как REAL, за исключением того, что реализационно-определяемая точность для DOUBLE PRECISION должна превышать реализационно-определяемую точность REAL. | 
 
(*) - Транзакция - некоторая совокупность действий, которая не может быть выполнена не полностью, от первого действия до последнего. (Если запись имеет довольно много полей, а Вам необходимо ее скопировать полностью, в случае сбоя во время копирования, Вы рискуете получить только часть полей заполненными, а остальные поля пустыми. Данная ситуация приведет к ошибке. Чтобы ее избежать Вам необходимо объявить копирование транзакцией. Теперь, если какая-то из команд входящих в транзакцию не может быть выполнена, производится откат транзакции - все уже произведенные действия отменяются, и таким образом целостность данных сохраняется.)
Оператор выбора SELECT
Язык запросов ( Data Query Language ) в SQL состоит из единственного оператора SELECT . Этот единственный оператор поиска реализует все операции реляционной алгебры. Как просто, всего один оператор. Однако писать запросы на языке SQL (грамотные запросы) сначала совсем не просто. Один и тот же запрос может быть реализован несколькими способами, и, будучи все правильными, они, тем не менее, могут существенно отличаться но времени исполнения, и это особенно важно для больших баз данных.
Синтаксис оператора SELECT:
SELECT [ALL | DISTINCT] < список столбцов > |*
[INTO имя_новой таблицы]
FROM < список таблиц-источников >
[ WHERE < предикат - условие выборки или соединения >]
[GROUP ВУ [ALL] выражение группирования [,... n]
[ HAVING < предикат - условие поиска для группы >]
[ORDER ВУ имена столбцов, по которым упорядочивается вывод
[ASC | DESC] [,... n]]
[UNION < выражение с оператором SELECT>]
Здесь:
- ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Это значит, что в результирующий набор могут попасть одинаковые строки. И это нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении). 
- Ключевое слово DISTINCT означает, что в результирующий набор включаются только раз личные строки, то есть дубликаты строк результата не включаются в набор. 
- Символ * (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса. 
- В разделе FROM задается перечень исходных отношений (таблиц) запроса. 
- В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре. 
- В разделе GROUP BY задается список полей группировки. 
- В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу. 
- В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении. 
- Директива UNION используется для объединения выходных данных двух или более SQL-запросов в единое множество строк и столбцов. 
В самой простой форме, команда SELECT просто инструктирует базу данных, чтобы извлечь информацию из таблицы. Например, выведем таблицу Продавцов:
SELECT snum, sname, sity, comm
FROM Salespeople;
==============================================
snum sname city comm
------ ---------- ----------- -------
1001 Peel London 0.12
1002 Serres San Jose 0.13
1004 Motika London 0.11
1007 Rifkin Barcelona 0.15
1003 Axelrod New York 0.10
==============================================
Если вы хотите видеть каждый столбец таблицы, имеется необязательное сокращение которое вы можете использовать. Звездочка (*) может применяться для вывода полного списка столбцов следующим образом:
SELECT *
FROM Salespeople;
Это приведет к тому же результату что и предыдущая команда.
