Структура языка SQL

Автор работы: Пользователь скрыл имя, 16 Февраля 2011 в 19:47, курсовая работа

Описание работы

SQL - язык структурированных запросов - универсальный компьютерный, применяемый для создания, модификации и управления данными в реляционных базах данных. Так же SQL является информационно-логическим языком, а не языком программирования.

Содержание работы

Введение…………………………………………………………………………...3

1 Понятие базы данных и СУБД…………………………………………………6

1.1 Предметная область…………………………………………………………..6

1.2 Концепция баз данных………………………………………………………..7

1.2.1 Независимость пpиложений от оpганизации данных во внешней памяти……………………...7

1.2.2 Эффективность организации данных……………………………………...9

1.2.3 Интеграция данных……………………………………..............................12

1.2.4 Что такое база данных……………………………………………………..13

2 Типы данных SQL…………………………………………………………….15

2.1 Таблицы SQL………………………………………………………………...16

2.2 Структура языка SQL………………………………………………………..17

2.3 Операторы SQL………………………………………………………………17

Заключение……………………………………………………………………….35

Глоссарий………………………………………………………………………...36

Список использованных источников……………………………………….….38

Файлы: 1 файл

Приложение.doc

— 164.00 Кб (Скачать файл)

     MONEY

     - деньги в формате, определяющем  символ денежной единицы ($, руб, ...) и его расположение (суффикс или префикс), точность дробной части и условие для показа денежного значения.

     В некоторых СУБД еще существует тип  данных LOGICAL, DOUBLE и ряд других. СУБД INGRES предоставляет пользователю возможность самостоятельного определения новых типов данных, например, плоскостные или пространственные координаты, единицы различных метрик, пяти- или шестидневные недели (рабочая неделя, где сразу после пятницы или субботы следует понедельник), дроби, графика, большие целые числа (что стало очень актуальным для российских банков) и т.п. 
 
 
 
 
 
 
 
 

     2.1 Таблицы SQL 

     До  сих пор понятие "таблица", как  правило, связывалось с реальной или базовой таблицей, т.е. c таблицей, для каждой строки которой в действительности имеется некоторый двойник, хранящийся в физической памяти машины (Приложение А). Однако SQL использует и создает ряд виртуальных (как будто существующих) таблиц: представлений, курсоров и неименованных рабочих таблиц, в которых формируются результаты запросов на получение данных из базовых таблиц и, возможно, представлений. Это таблицы, которые не существуют в базе данных, но как бы существуют с точки зрения пользователя.

     Базовые таблицы создаются с помощью  предложения CREATE TABLE (создать таблицу). Здесь же приведем пример предложения для создания описания таблицы Блюда:

     CREATE TABLE Блюда

           (БЛ SMALLINT,

           Блюдо CHAR (70),

           В  CHAR (1),

           Основа CHAR (10),

           Выход FLOAT,

           Труд SMALLINT);

     Предложение CREAT TABLE специфицирует имя базовой  таблицы, которая должна быть создана, имена ее столбцов и типы данных для этих столбцов (а также, возможно, некоторую дополнительную информацию, не иллюстрируемую данным примером). CREAT TABLE - выполняемое предложение. Если его ввести с терминала, система тотчас построит таблицу Блюда, которая сначала будет пустой: она будет содержать только строку заголовков столбцов, но не будет еще содержать никаких строк с данными.  

     2.2 Структура языка SQL 

     Язык SQL, соответствующий последним стандартам SQL:2003, SQL:1999 (и даже SQL/92), это очень богатый и сложный язык, все возможности которого трудно сразу осознать и тем более понять. Поэтому приходится разбивать язык на уровни, или слои, такие, что каждый уровень языка включает все конструкции, входящие в более низкие уровни (см. Приложение А, рисунок 3). В стандарте определяется несколько способов разбиения языка на уровни. В одной из классификаций язык разбивается на базовый (entry), промежуточный (intermediate) и полный (full) уровни.

     Эта классификация ориентирована, прежде всего, на производителей СУБД, в которых поддерживается SQL. Реализация базового уровня языка является обязательным условием хотя бы какого-то соответствия стандарту. Реализация промежуточного уровня желательна, и обычно именно такой уровень языка поддерживается ведущими компаниями-производителями SQL-ориентированных СУБД. Наконец, полный уровень языка является целью, к достижению которой следует стремиться. В данной классификации критерием отнесения той или иной возможности языка к некоторому уровню является оцениваемая создателями стандарта SQL (большая часть которых является сотрудниками ведущих компаний, производящих SQL-ориентированные СУБД) техническая сложность реализации этой возможности. Конечно, такая классификация важна и для программистов приложений баз данных, но только для того, чтобы оценить реальные возможности конкретной СУБД. Для понимания языка SQL это разбиение на уровни несущественно.

     Среди всех конструкций языка SQL можно  выделить такие конструкции, которые  можно было использовать при прямом (direct) взаимодействии конечного пользователя с СУБД. На следующем уровне, уровне встраиваемого (embedded) SQL, язык расширяется конструкциями, позволяющими использовать возможности прямого SQL в программах, написанных на традиционных языках программирования. На уровне динамического (dynamic) SQL во встраиваемый SQL добавляются конструкции, позволяющие приложениям обращаться к СУБД с конструкциями прямого SQL, которые динамически образуются во время выполнения программы.  

     2.3 Операторы SQL 

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

     Можно выделить следующие группы операторов (перечислены не все операторы SQL):

     Операторы DDL (Data Definition Language) - операторы определения  объектов базы данных

     CREATE SCHEMA - создать схему базы данных

     DROP SHEMA - удалить схему базы данных 

     CREATE TABLE - создать таблицу 

     ALTER TABLE - изменить таблицу 

     DROP TABLE - удалить таблицу 

     CREATE DOMAIN - создать домен 

     ALTER DOMAIN - изменить домен 

     DROP DOMAIN - удалить домен

     CREATE COLLATION - создать последовательность 

     DROP COLLATION - удалить последовательность 

     CREATE VIEW - создать представление 

     DROP VIEW - удалить представление 

     Операторы DML (Data Manipulation Language) - операторы манипулирования  данными

     SELECT - отобрать строки из таблиц

     INSERT - добавить строки в таблицу 

     UPDATE - изменить строки в таблице 

     DELETE - удалить строки в таблице 

     COMMIT - зафиксировать внесенные изменения 

     ROLLBACK - откатить внесенные изменения 

     Операторы защиты и управления данными

     CREATE ASSERTION - создать ограничение 

     DROP ASSERTION - удалить ограничение 

     GRANT - предоставить привилегии пользователю  или приложению на манипулирование  объектами 

     REVOKE - отменить привилегии пользователя  или приложения 

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

     Наиболее  важными для пользователя являются операторы манипулирования данными (DML).

     Примеры использования операторов манипулирования данными

     INSERT - вставка строк в таблицу

     Пример 1. Вставка одной строки в таблицу:

     INSERT INTO

     P (PNUM, PNAME)

     VALUES (4, "Иванов");

     Оператор SELECT является фактически самым важным для пользователя и самым сложным  оператором SQL. Он предназначен для выборки данных из таблиц, т.е. он, собственно, и реализует одно их основных назначение базы данных - предоставлять информацию пользователю.

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

     На  самом деле в базах данных могут быть не только постоянно хранимые таблицы, а также временные таблицы и так называемые представления. Представления - это просто хранящиеся в базе данные SELECT-выражения. С точки зрения пользователей представления - это таблица, которая не хранится постоянно в базе данных, а "возникает" в момент обращения к ней. С точки зрения оператора SELECT и постоянно хранимые таблицы, и временные таблицы и представления выглядят совершенно одинаково. Конечно, при реальном выполнении оператора SELECT системой учитываются различия между хранимыми таблицами и представлениями, но эти различия скрыты от пользователя.

     Результатом выполнения оператора SELECT всегда является таблица. Таким образом, по результатам  действий оператор SELECT похож на операторы  реляционной алгебры. Любой оператор реляционной алгебры может быть выражен подходящим образом сформулированным оператором SELECT. Сложность оператора SELECT определяется тем, что он содержит в себе все возможности реляционной алгебры, а также дополнительные возможности, которых в реляционной алгебре нет.

     Отбор данных из одной таблицы

     Пример. Выбрать все данные из таблицы  поставщиков (ключевые слова SELECT… FROM…):

     SELECT *

     FROM P;

     Иногда  приходится выполнять запросы, в  которых таблица соединяется  сама с собой, или одна таблица соединяется дважды с другой таблицей. При этом используются имена корреляции (алиасы, псевдонимы), которые позволяют различать соединяемые копии таблиц. Имена корреляции вводятся в разделе FROM и идут через пробел после имени таблицы. Имена корреляции должны использоваться в качестве префикса перед именем столбца и отделяются от имени столбца точкой. Если в запросе указываются одни и те же поля из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в именованиях колонок результатирующей таблицы. Определение имени корреляции действует только во время выполнения запроса.

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

     SELECT

     P1.PNAME AS PNAME1,

     P1.PSTATUS AS PSTATUS1,

     P2.PNAME AS PNAME2,

     P2.PSTATUS AS PSTATUS2

     FROM

     P P1, P P2

     WHERE P1.PSTATUS1 > P2.PSTATUS2;

     Опишем  синтаксис оператора выборки  данных (оператора SELECT) более точно. При описании синтаксиса операторов обычно используются условные обозначения, известные как стандартные формы  Бэкуса-Наура (BNF).

     В BNF обозначениях используются следующие  элементы:

     Символ "::=" означает равенство по определению. Слева от знака стоит определяемое понятие, справа - собственно определение  понятия.

     Ключевые  слова записываются прописными буквами. Они зарезервированы и составляют часть оператора.

     Метки-заполнители  конкретных значений элементов и переменных записываются курсивом.

     Необязательные  элементы оператора заключены в  квадратные скобки.

     Вертикальная  черта | указывает на то, что все  предшествующие ей элементы списка являются необязательными и могут быть заменены любым другим элементом списка после этой черты.

     Фигурные  скобки {} указывают на то, что все  находящееся внутри них является единым целым.

     Троеточие "…" означает, что предшествующая часть оператора может быть повторена  любое количество раз.

     Многоточие, внутри которого находится запятая ".,.." указывает, что предшествующая часть оператора, состоящая из нескольких элементов, разделенных запятыми, может иметь произвольное число повторений. Запятую нельзя ставить после последнего элемента. Замечание: данное соглашение не входит в стандарт BNF, но позволяет более точно описать синтаксис операторов SQL.

     Круглые скобки являются элементом оператора.

     Синтаксис оператора выборки

     В довольно сильно упрощенном виде оператор выборки данных имеет следующий  синтаксис (для некоторых элементов мы дадим не BNF-определения, а словесное описание):

     Оператор  выборки ::=

     Табличное выражение

     [ORDER BY

Информация о работе Структура языка SQL