Методическое пособие 241
.pdfФедеральное государственное бюджетное образовательное учреждение высшего образования
«Воронежский государственный технический университет»
Кафедра информационных технологий и автоматизированного проектирования в строительстве
146-2017
Основы языка Transact-SQL
Методические указания
к выполнению лабораторных работ для студентов бакалавриата направлений
09.03.02«Информационные системы и технологии»,
09.03.03«Прикладная информатика»
Воронеж 2017
УДК 004.6 ББК 32.973.26
Составители: Ошивалов А.В., Курипта О.В.
Основы языка Transact-SQL: методические указания к выполнению лабораторных работ для студентов бакалавриата направлений 09.03.02 «Информационные системы и технологии», 09.03.03 «Прикладная информатика» / ВГТУ; сост.: А.В. Ошивалов, О.В. Курипта. – Воронеж,
2017. – 49 с.
Даны рекомендации и последовательность выполнения лабораторных работ студентами по всем разделам курса «Базы данных»: теоретические положения, порядок проведения.
Предназначены для студентов бакалавриата направления 09.03.03 «Прикладная информатика» и направления 09.03.02 «Информационные системы и технологии» всех форм обучения.
Ил.3. Библиогр. 9 назв.
УДК 004.6 ББК 32.973.26
Печатается по решению учебно-методического совета ВГТУ
Рецензент – Т.В. Волобуева, к. ф-м. н., доцент кафедры информатики и графики ВГТУ
© ФГБОУ ВО «Воронежский государственный технический университет», 2017
ВВЕДЕНИЕ
В методических указаниях изложены рекомендации по выполнению лабораторных работ для бакалавров 2-го курса по дисциплине «Базы данных», входящей в вариативную часть цикла обязательных дисциплин направления 09.03.02 «Информационные системы и технологии», бакалавров второго и третьего курса по дисциплине «Базы данных», входящей в базовую часть цикла дисциплин направления 09.03.03 «Прикладная информатика».
Методические указания состоят из теоретических сведений и практических работ, в каждой из которых описана последовательность действий для выполнения соответствующей темы.
Согласно Дейту реляционная модель состоит из трех частей:
Структурной части. Целостной части.
Манипуляционной части, которая рассматривается в данных методических указаниях.
Манипуляционная часть описывает два эквивалентных способа манипулирования реляционными данными – реляционную алгебру и реляционное исчисление.
Реляционная алгебра и реляционное исчисление представляют собой два альтернативных подхода к построению формальной системы, реализующей часть реляционной модели, касающуюся операций над данными.
Манипуляционная часть модели данных содержит спецификацию одного или нескольких языков, предназначенных для написания запросов к БД. В данных методических рекомендациях рассматривается один из диалектов такого языка – Transact SQL.
1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
1.1. Этапы разработки базы данных
Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области. Для реализации этой цели имеются следующие инструменты:
Реляционная модель данных - удобный способ представления данных предметной области.
Язык SQL - универсальный способ манипулирования такими данными.
1.2.Язык SQL
SQL (Structured Query Language – язык структуриро-
ванных запросов) – реляционно полный язык, являющийся фактическим стандартом для многих других языков баз данных.
Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде.
В язык SQL в качестве составных частей входят:
язык манипулирования данными (Data Manipulation Language, DML)
язык определения данных (Data Definition Language, DDL)
язык управления данными (Data Control
Language, DCL).
Это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.
Язык SQL является основным средством для работы с данными в СУБД.
Одной из распространенных на рынке СУБД явля- 2
ется Microsoft SQL Server. Microsoft SQL Server — система управления реляционными базами данных (РСУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия.
1.3. Типы данных Transact-SQL decimal и numeric
Типы числовых данных с фиксированными точностью и масштабом.
decimal [ (p[ ,s] )] и numeric[ (p[ ,s] )]
Числа с фиксированной точностью и масштабом. При использовании максимальной точности числа могут принимать значения в диапазоне от -10^38+1 до 10^38-1. Numeric функционально эквивалентно decimal.
p (точность)
Максимальное количество десятичных разрядов числа (как слева, так и справа от десятичной запятой), которые будут храниться. Точность должна быть значением в диапазоне от 1 до 38. Точность по умолчанию составляет 18.
s (масштаб)
Максимальное количество хранимых десятичных разрядов числа справа от десятичной запятой. Это число отнимается от p для определения максимального количества цифр слева от десятичной запятой. Масштаб может принимать значение от 0 до p. Масштаб может быть указан только совместно с точностью. По умолчанию масштаб принимает значение 0; поэтому 0 <= s <= p. Максимальный размер хранилища зависит от точности.
3
bit
Целочисленный тип данных, который может принимать значения 1, 0 или NULL.
money и smallmoney
Типы данных, представляющие денежные (валютные) значения.
Типы данных money и smallmoney имеют точность до одной десятитысячной денежной единицы, которую они представляют.
float и real
Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой. Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно.
float [ (n) ]
n — это количество битов, используемых для хранения мантиссы числа в формате float при экспоненциальном представлении. Определяет точность данных и размер для хранения. Значение параметра n должно лежать в пределах от 1 до 53.Значением по умолчанию для параметра n является 53.
Дата-время
Тип данных |
Формат строкового литерала |
|
|
|
|
time |
чч:мм:сс[. ннннннн] |
|
|
|
|
date |
ГГГГ-ММ-ДД |
|
|
|
|
datetime2 |
ГГГГ-ММ-ДД |
|
чч:мм:сс[. ннннннн] |
||
|
||
|
|
|
datetimeoffset |
ГГГГ-ММ-ДД |
|
чч:мм:сс[. ннннннн] [+|-]чч:мм |
||
|
||
|
|
|
|
4 |
char и varchar
Являются символьными типами данных фиксированной или переменной длины.
char [ ( n ) ]
Строковые данные фиксированной длины не в Юникоде. Аргумент n определяет длину строки и должен иметь значение от 1 до 8000. Размер при хранении составляет n байт.
varchar [ ( n | max ) ]
Строковые данные переменной длины не в Юникоде. Аргумент n определяет длину строки и должен иметь значение от 1 до 8000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт.
nchar и nvarchar
Символьные типы данных, имеющие постоянную длину, nchar, или переменную длину, nvarchar, содержащие данные в Юникоде.
nchar [ ( n ) ]
Строковые данные постоянной длины в Юникоде. Параметр n определяет длину строки и должен иметь значение от 1 до 4000. Размер при хранении составляет удвоенное значение n в байтах.
nvarchar [ ( n | max ) ]
Строковые данные переменной длины в Юникоде. Параметр n определяет длину строки и должен иметь значение от 1 до 4000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ).
1.4.Язык манипулирования данными
Вязык манипулирования данными входят элементы для выполнения операций выборки, вставки, изменения и удаления данных.
5
Выборка данных (операция SELECT)
SELECT [ALL | DISTINCT] [TOP n] select_list [FROM {table_name | view_name}]
[[, {table_name2 | view_name2} [..., {table_name16 | view_name16}]]
[WHERE clause] [GROUP BY clause] [HAVING clause] [ORDER BY clause]
Производит выборку данных из БД.
ALL – в выборку попадают все записи из указанных таблиц.
DISTINCT – в выборку попадают только уникальные записи из указанных таблиц.
TOP n – в выборку попадают n первых записей. select_list – перечень полей, значений или знак «*»,
который обозначает выборку всех полей из указанных таблиц, также могут использоваться выражения с применением математических операций, функций и групповых операций.
WHERE – задает условие отбора записей.
GROUP BY – перечень полей для группировки значений.
HAVING – задает условие отбора записей после группировки.
ORDER BY – перечень полей, по которым будет осуществляться сортировка записей.
Групповые операции
AVG(поле) |
– вычисляет среднее значение в ука- |
|
занном поле в группе |
|
|
COUNT(*) |
– |
вычисляет общее количество запи- |
сей в группе |
|
|
COUNT(поле) |
– вычисляет количество записей |
в группе без учета записей, в который в указанном поле
6
имеется значение NULL
MIN(поле) – вычисляет минимальное значение поля в группе
MAX(поле) – вычисляет максимальное значение поля в группе
SUM(поле) – вычисляет сумму значений поля в
группе
Условия отбора
{WHERE | HAVING} [NOT] логическое_выражение {AND | OR} логическое_выражение – в выборку попадают только записи, удовлетворяющие логическому выражению. Логическое_выражение – выражение, состоящее из поля, оператора сравнения (<,>,<=,>=,<>) и значения либо из нижеприведенных выражений.
{WHERE | HAVING} [NOT] поле IS [NOT] NULL –
в выборку попадают только записи, значение указанного поля в которых равно NULL или не равно (NOT) NULL.
{WHERE | HAVING} [NOT] EXISTS (подзапрос) – в
выборку попадают все записи, но только в случае, если подзапрос вернет хотя бы одну запись.
{WHERE | HAVING} [NOT] поле [NOT] BETWEEN
значение1 AND значение2 – в выборку попадают только записи, значение указанного поля в которых находится в диапазоне от значение 1 до значение2.
{WHERE | HAVING} [NOT] поле [NOT] IN
(список_значений | подзапрос) – в выборку попадают только записи, значение указанного поля в которых находится в указанном списке либо в списке, возвращаемом подзапросом.
{WHERE | HAVING} [NOT] поле [NOT] LIKE
'паттерн' – в выборку попадают только записи, значение указанного поля в которых соответствуют указанному паттерну. Паттерн – строковое выражение, содержащее часть искомой строки и/или символы ? (задает один любой
7
символ) и % (задает любое количество любых символов).
{WHERE | HAVING} [NOT] поле оператор_сравнения {ANY | ALL} (подзапрос) – в выборку попадают только записи, значение указанного поля в которых возвращают истину при использовании указанного оператора сравнения хотя бы с одним (ANY) или с каждым (ALL) значением, возвращаемым подзапросом.
Выборка данных из нескольких таблиц
SELECT select_list
[FROM {table_name | view_name}]
[[, {table_name2 | view_name2} [..., {table_name16 | view_name16}]]
[INNER|RIGHT|LEFT JOIN table_name | view_name ON (условие_объединения)]
INNER JOIN – в выборку попадают только те записи из двух таблиц, которые удовлетворяют условию объединения.
RIGHT JOIN – в выборку попадают все записи из правой таблицы и только те записи из левой, которые удовлетворяют условию объединения.
LEFT JOIN – в выборку попадают все записи из левой таблицы и только те записи из правой, которые удовлетворяют условию объединения.
Объединение нескольких запросов
SELECT select_list
[FROM {table_name | view_name}] [[, {table_name2 | view_name2}
[..., {table_name16 | view_name16}]] UNION [ALL]
SELECT select_list
[FROM {table_name | view_name}] [[, {table_name2 | view_name2}
[..., {table_name16 | view_name16}]]
…
8