- •Минобрнауки россии
- •Тема 2. Структура и механизмы ос Лекция №2. Структура и механизмы ос
- •Тема 3. Организация многопрограммной работы. Процессы и потоки Лекция №3. Организация многопрограммной работы
- •Тема 4 . Управление данными в ос. Файловая система Лекция №4. Управление данными в ос
- •Тема 5. Управление данными в субд. Концепции и архитектура субд. Представление пользователя Организация баз данных Лекция №5. Концепции и архитектура субд
- •Тема 6. Проектирование данных. Отношения Лекция №6. Отношения. Нормальные формы
- •Тема 2. Структуры хранения и доступа к данным. Индексы Лекция №2. Структуры хранения на примере sql Server
- •Тема 3. Информационно-логическое моделирование в разработке баз данных Лекция №3. Моделирование предметной области
- •Тема 4. Работа с данными. Язык баз данных Лекция №4. Основные понятия языка баз данных на примереSql
- •Лекция №5. Запросы к базе данных
- •Тема 5. Защита и безопасность при доступе данным в многопользовательской среде Лекция №6. Защита и безопасность данных
Тема 4. Работа с данными. Язык баз данных Лекция №4. Основные понятия языка баз данных на примереSql
В рамках данной лекции рассматриваются нижеследующие вопросы:
Понятие языка программирования баз данных.
Языки DDL, DML, DCL.
DML: процедурные и декларативные языки; операции низкого и высокого уровней
Хранимые и формируемые объекты базы данных
DML: операторы создания хранимой и виртуальной таблицы, вставки, выборки обновления
Ограничения
Языки для работы с базами данных зависят от того, какую модель данных поддерживает СУБД: реляционную, иерархическую или сетевую.
Применительно к СУБД различают языки низкоуровневойобработки, в которых в одной операции осуществляется обработка одной записи, и языкивысокоуровневойобработки, в одной операции которых обрабатывается совокупность записей.
Языком базы данных называют язык, используемый для доступа, выборки, обновления и управления данными в системах реляционных баз данных.
Язык SQL, или язык структурированных запросов (Structured Query Language), ориентированна использованиев реляционных СУБД. Он прошел несколько этапов своего развития и первоначально создавался с целью получения языка запросов, приближенного к естественному (английскому). Операторы, или предложения (statements), языка имеют сложную структуру, напоминающую конструкцию сложно-подчиненного предложения, в котором имеются главное и подчиненное (clause) предложения.
Язык SQL является машинно-независимым и декларативным, т.е., описывающим свойства искомого объекта, а не алгоритм его поиска, причем описывающим вмашинно-независимом текстовом формате. В настоящее время SQL стандартизован,чтобы его понимали серверы различных производителей.
Язык развивается в части состава операторов и типов данных. В нем выделены следующие языки, соответствующие функциональным группам операторов:
Data Definition Language (DDL). Язык описания данных. Содержит операторы, позволяющие определять структуру и свойства базы данных, объектов в БД и задавать связи между объектами (например,CREATETABLE,CREATEVIEW).
Data Manipulation Language (DML). Язык манипулирования данными. Содержит операторы, предназначенные для обработки данных, т.е. для того, чтобы выбирать, добавлять, удалять и модифицировать данные (SELECT, INSERT, DELETE, UPDATE).
Transaction Control Language (TCL). Язык управления транзакциями. Операторы этого языка применяются для управлениятранзакциями, илилогическими единицами работы, выполняемыми как атомарная операция.
Data Control Language (DCL). Операторы языка применяются для осуществления административных функций назначения или отмены разрешений на использование базы данных, таблицы в базе данных, а также выполнения операторов SQL.
Cursor Control Language (CCL). Операторы используются для определения объекта «курсор», подготовки SQL-предложений для выполнения, а также для некоторых других операторов.
Работа по реализации БД начинают с описания ее схемына языкеDDL.
В стандарте SQL-92 схемаявляется коллекцией объектов базы данных, принадлежащиходному пользователюи образующиходно пространство имен. Пространством имен является набор объектов, в которомне может бытьповторяющихсяимен. Схема может быть представлена графически и иначе ее называютструктуройбазы данных.

Схема представляет структуру БД: состав, структуру, свойства и связи объектов базы данных.
Определение структуры таблицы означает описание ее столбцов, т.е. имен, типов данных и возможных ограничений. Перед созданием таблицы необходимо определить:
Какую сущность будет представлять таблица, или каково назначение таблицы.
Число столбцов в таблице и тип данных и формат (если это необходимо) каждого столбца.
Имеются ли столбцы, которые могут принимать значения NULL.
Для каких столбцов нужно задавать ограничения, значения по умолчанию и правила.
Какие столбцы должны использоваться в качестве первичных ключей, а какие - в качестве внешних.
Сокращенный синтаксис оператора CREATETABLEпоказывает структуру описания таблицы, задание ограничений на таблицу и столбцы, а также виды ограничений.
CREATE TABLEимя_таблицы ({<определение столбца> | < определение вычисляемого столбца>} [ <ограничение таблицы> ] [ ,...n] )
<определение столбца> ::=имя столбца <тип данных> [<ограничение столбца>]
Ограничение столбца:
<ограничение столбца>::= [CONSTRAINTимя ограничения ]
{ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ] | [ FOREIGN KEY ]
REFERENCES[ имя связанной таблицы [(связанный столбец)]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] }
Рассмотрим примеры применения операторов языка SQL.
1) Таблицы должны находиться в базе данных. Поэтому сначала необходимо создать БД:
CREATE DATABASETestData;
2) Создание таблицы с данными о студентах:
CREATE TABLEdbo.Students (StudentID int PRIMARY KEY NOT NULL,
StudentName varchar(25) NOT NULL, Stipend money NULL,
StudentDescriptiontextNULL)
Объекты в БД могут быть хранимыми и формируемыми(т.е. создаваемыми динамически). Таблица обычно является хранимым объектом. На основе одной или нескольких таблиц можно динамически создаватьвиртуальную таблицу, илипредставление. При этом СУБД будет сохранять не сформированную таблицу, а оператор, который описывает ее формирование. Представление называется VIEW и соответствующий оператор его создания имеет синтаксис:
CREATE VIEW[ имя представления [ (столбец [ ,...n] ) ]
ASоператорselect
3) Например, создание представления:
CREATE VIEWStud_Names
AS
SELECT StudentName, Stipend
FROMStudents;
Синтаксис оператора SELECTочень громоздкий. Обобщенно он содержит:
SELECTперечень_имен_столбцов [INTOимя_новой_таблицы ]
[ FROMтаблица_источник ] [WHEREусловие_выборки ]
[ GROUP BYгруппирование_по ]
[ HAVINGусловие_выборки_при группировании ]
[ ORDER BYупорядоченность [ASC|DESC] ] (по возрастанию/убыванию)
4) Например:
SELECTStudentID, StudentName, Stipend, StudentDescription
FROMdbo.Students
Если необходимы все столбцы таблицы, указывается звездочка (*):
5) SELECT*FROMStudents
6) Пример выборки без условия, т.е., результирующая выборка по количеству строк соответствует таблице-источнику:
SELECTStudentName,Stipend
FROMdbo.Students
7) Пример выборки по условию:
SELECTStudentID, StudentName, Stipend, StudentDescription
FROM dbo.Students
WHERE StudentName = ‘Иванов’
Можно динамически формировать вычисляемый столбец. Это можно делать непосредственно указанием в оператореCREATETABLE и в оператореSELECT.Вычисляемый столбец физически хранится в таблице и его значения обновляются, когда изменяются какие-либо другие столбцы, на основе которых он вычисляется.
8) Например, при выборке из таблицы можно вычислять ActualStip(фактическая стипендия):
SELECTStudentName, Stipend * 1.17 AS ActualStip
FROMdbo.Students
Оператор CREATE TABLEсоздаетпустуютаблицу. ОператорINSERTпредназначен для вставки строки в таблицу. Вставка в таблицу предполагает задание значений столбцов. Например:
9) INSERT dbo.Students ( StudentID, StudentName, Stipend, StudentDescription)
VALUES (1234, 'Иванов', 1200, 'староста') или
10) другой порядок ввода значений, указанный явно:
INSERTdbo.Students ( StudentName, StudentID, Stipend, StudentDescription)
VALUES('Иванова', 5678, 1200, '')
11) имена столбцов перечислять не обязательно, если значения перечислены в порядке, соответствующем указанному в CREATE TABLE:
INSERTdbo.Students
VALUES (9012, 'Иванов', NULL, 'восстановлен')
12) Значения столбцов можно обновлять:
UPDATEdbo.Students
SETStipend= 1000
WHEREStudentID= 9012
13) Пример возможностей синтаксиса операторов SQL
CREATE VIEWstudmark_view
AS
SELECTc.StudName, c.StudGroup, e.Mark, e.Date
FROMStudentExam e JOIN Student c on e.StudID = c.StudID ;
Основная литература
|
Учебник / Учебное пособие |
Раздел |
Страницы |
|
1. Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2001.- 304 с.; ил. |
Глава 5 |
66-103 |
|
2. Хомоненко А.Д, Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / под ред. проф. Хомоненко А.Д., 6-ое изд. – М.:Бином-Пресс; СПб.:Корона-Век, 2007.-736с. |
Гл.10 |
277-365 |
Дополнительная литература
|
Учебник / Учебное пособие |
Раздел |
Страницы |
|
1. Дейт К. Дж. Введение в системы баз данных, 6-е издание: Пер. с англ. – К.;М.; СПб.: Издательский дом “Вильямс”,. 1999. – 848 с.: ил. (7-е и 8-е издание). |
6.1 – 6.5, 6.7 – 6.10 |
142-156, 159--170 |
|
2. Коннолли Т., Бегг К., Страчан А. Базы данных: проектирование, реализация и сопровождение. Теория и практика, 2-е изд.: Пер. с англ. - М.: Издательский дом “Вильямс”,. 2001. – 1120 с.: ил. |
13.1 – 13.5, 14.7,14.8 |
421-471, 529-533 |
