Практическая работа №10 В соответствии с вариантом задания разработать точную структуру записей таблицы,включая выбор типов данных для каждого поля строки. Работа с таблицей. В среде СУБД SQL Server используя инструкции языка DDL cоздать таблицы с учетом приведенных в задании ограничений (база данных CONST_<ФИО>). Просмотреть результат выполнения данного оператора с помощью системной хранимой процедуры sp_help. Заполнить созданную таблицу с использованием оператора Insert (6-8 записей). Просмотреть заполненную таблицу. Работа с представлением В соответствии с заданием составить оператор создания представления, выполнить данный оператор. Просмотреть результат выполнения данного оператора с помощью системной хранимой процедуры sp_help. Просмотреть представляемую таблицу. Включить несколько записей в представляемую таблицу с использованием оператора включения. Просмотреть представляемую и базовую таблицы и сравнить их с предыдущими вариантами этих таблиц. Типы данных и операторы языка T-SQL Смотреть в приложении. Варианты заданий 1. Схема таблицы СТУДЕНТ Идентификатор зачетки; Фамилия, инициалы студента; Специальность; Группа; Дата рождения; Наличие стипендии (имеется/не имеется); Адрес проживания; Средний балл зачетки Ограничение уникальности: идентификатор зачетки. Проверочные ограничения: а) код группы должен иметь следующую структуру: <цифра><цифра><буква><буква><буква><цифра>; б) средний балл зачетки должен быть в интервале [2,5]. Спецификация представления: представляемая таблица содержит идентификатор зачетки, фамилию и инициалы студента, а также средний балл зачетки для студентов, получающих стипендию. 2. Схема таблицы ПРЕПОДАВАТЕЛЬ_ДИСЦИПЛИНЫ Личный номер Фамилия Должность Количество часов Оклад Кафедра Телефон Ограничение уникальности: личный номер Проверочные ограничения: а) должность выбирается из списка: ассистент, старший преподаватель, доцент, профессор; б) телефон имеет следующую структуру: <цифра><цифра><цифра>. Спецификация представления: представляемая таблица содержит информацию о преподавателях, работающих на кафедре численных методов. 4. Схема таблицы ЭКЗАМЕН Название предмета; Фамилия и инициалы студента; Фамилия и инициалы преподавателя; Должность преподавателя; Дата сдачи экзамена; Номер аудитории; Оценка; Сложность предмета. Ограничение уникальности: название предмета, фамилия и инициалы студента. Проверочные ограничения: а) должность преподавателя должна быть одной из следующего списка: ассистент, старший преподаватель, доцент, профессор; б) сложность предмета должна быть в интервале [0,1]. Спецификация представления: представляемая таблица содержит названиепредмета, фамилию и инициалы студента, а также экзаменационную оценку для тех экзаменов, которые принимают профессора. 5. Схема таблицы ГОСУДАРСТВА Название Площадь (км2) Население Язык Денежная единица Религия Ограничение уникальности: название государства Проверочные ограничения: а) религия должна быть из следующего списка: римскокатолическая, православная, ислам, буддизм, иудаизм, лютеранская, протестантская; б) площадь и население >0. Спецификация представления: представляемая таблица содержит название государства, площадь, население, религию для государств с английским языком общения. 6. Схема таблицы ВОЕННОСЛУЖАЩИЕ Номер военного билета; Фамилия и инициалы; Дата рождения; Род войск; Воинское звание; Оклад; Рост; Вес; Номер противогаза; Наличие водительских прав (имеются/не имеются) Ограничение уникальности: номер военного билета. Проверочные ограничения: а) номер военного билета должен состоять из шести цифр; б) номер противогаза должен быть цифрой 1,2 или 3. Спецификация представления: представляемая таблица содержит номер военного билета, фамилию и инициалы, род войск военнослужащих ростом более 180 см. 7. Схема таблицы ГОСТИНИЦЫ Название Директор Количество мест Телефон Адрес Категория (2, 3, 4, 5 звездочек) Лицензия (есть/нет) Дата открытия Ограничение уникальности: название Проверочные ограничения: а) количество мест в гостинице >0 и <1000; б) категория выражается символами *,**,***,****,*****. Спецификация представления: представляемая таблица содержит название, адрес, фамилию директора, телефон для гостиниц категории ***. 8. Схема таблицы КОМПЬЮТЕР Марка компьютера; Страна сборки; Процессор; Объем оперативной памяти; Объем внешней памяти; Быстродействие; Наличие мыши (имеется/не имеется) Марка монитора; Цена; Дата выпуска. Ограничение уникальности марка компьютера, страна сборки. Проверочные ограничения а)объем оперативной памяти должен быть в интервале [2,128]Мбайт; б) дата выпуска должна быть не больше текущей даты. Спецификация представления: представляемая таблица содержит маркукомпьютера, страну сборки и цену для компьютеров, имеющих объем оперативной памяти более 8 Мбайт. 9. Схема таблицы УЧЕБНЫЙ_ПЛАН Код специальности; Название дисциплины; Семестр; Дата начала семестра; Общее количество часов; Наличие курсового проекта (имеется/не имеется); Формы отчетности (экзамены, зачеты). Ограничение уникальности: код специальности, название дисциплины, семестр. Проверочные ограничения: а) код специальности должен иметь следующую структуру: <цифра><цифра><цифра><цифра> ; б) семестр должен быть или осенний или весенний. Спецификация представления: представляемая таблица содержит код специальности, семестр и название дисциплин, для которых предусмотрен курсовой проект. 10. Схема таблицы ПОСТАВКИ ТОВАРОВ Название фирмы-поставщика; Название фирмы-потребителя; Товарный кредит (да/нет); Название товара; Количество единиц товара; Вес единицы товара; Цена единицы товара; Платежные реквизиты (адрес и номер расчетного счета); Дата отгрузки. Ограничение уникальности: название фирмы-поставщика, название фирмыпотребителя. Проверочные ограничения: а) поставляемыми товарами являются холодильники, пылесосы и утюги; б) количество поставляемых единиц товара не должно превышать 100 штук. Спецификация представления: представляемая таблица содержит все сведения о товарах. 11. Схема таблицы КВАРТИРЫ Адрес Количество комнат Общая площадь (м2) Кухня (м2) Этаж Телефон (есть/нет) Балкон Год постройки Цена в долларах Ограничение уникальности: адрес Проверочные ограничения: а) балкон либо нет, либо есть, либо лоджия; б) площадь кухни не больше общей площади квартиры Спецификация представления: представляемая таблица содержит сведения обо всех трехкомнатных квартирах 12. Схема таблицы АВТОТРАНСПОРТ Государственный номер; Тип(автобус, самосвал, тягач, джип); Марка; Год изготовления; Грузоподъемность или вместимость; Расход горючего на 100 км; Пробег к текущему техосмотру; Дата проведения последнего техосмотра; Успешность техосмотра (положительная/отрицательная) Ограничение уникальности: государственный номер. Проверочные ограничения: а)государственный номер имеет следующую структуру: <буква><цифра><цифра><цифра><буква> ; б) автотранспорт может быть следующих типов: автобус, самосвал, тягач, джип. Спецификация представления: представляемая таблица содержит государственный номер, тип и марку автотранспорта, успешно прошедшего техосмотр. 13. Схема таблицы ФАКУЛЬТЕТ Название факультета; Фамилия и инициалы декана; Телефон декана; Дата основания факультета; Число выпускающих кафедр; Число обучаемых студентов; Наличие иностранных студентов (имеются/не имеются); Удельный вес преподавателей с учеными степенями. Ограничение уникальности: название факультета. Проверочные ограничения: а) телефон деканата должен иметь следующую структуру: 63<цифра><цифра><цифра><цифра>; б) удельный вес преподавателей с учеными степенями должен быть в интервале [0,1]. Спецификация представления: представляемая таблица содержит название факультета, фамилию и инициалы декана, а также число выпускающих кафедр для факультетов, на которых учатся иностранные студенты. 14. Схема таблицы УСПЕВАЕМОСТЬ Факультет; Специальность; Дисциплина; Общее количество студентов; Количество сдававших студентов; Удельные веса отличных, хороших, удовлетворительных и неудовлетворительных оценок; Дата начала экзаменационной сессии; Ограничение уникальности: факультет, специальность, дисциплина. Проверочные ограничения: а) количество сдававших студентов не должно быть больше количество студентов; б) сумма удельных весов отличных, хороших, удовлетворительных и неудовлетворительных оценок должна быть равной 1. Спецификация представления: представляемая таблица содержит названия специальности и дисциплины, а также количество сдававших студентов для факультета вычислительной техники. 15. Схема таблицы АЛМАЗЫ Название Страна происхождения Когда найден (год) Масса в каратах Масса в граммах Ограничение уникальности: название Проверочные ограничения: а) страна происхождения может быть из следующего списка: Южная Африка, Западная Африка, Индия, Бразилия; б) масса в граммах не меньше 145 и не больше 700. Спецификация представления: представляемая таблица содержит название, год находки, массу в граммах для алмазов, найденных в Южной Африке. 16. Схема таблицы ЖИВОТНОЕ Название животного Класс животного Максимальный вес животного; Минимальный вес животного Окрас Место обитания Дата занесения в Красную книгу Продолжительность жизни Летательные способности (летает/не летает ) Ограничение уникальности: название животного. Проверочные ограничения: а) средний вес животного должен быть больше минимального веса и максимального веса; б) дата занесения в Красную книгу не должна быть больше текущей даты. Спецификация представления: представляемая таблица содержит сведения о весе животных. 17. Схема таблицы МОСТЫ Название Местонахождение Длина пролета моста Год постройки Тип Ограничение уникальности: название, местонахождение. Проверочные ограничения: а) тип моста: стальные фермы, висячий, арочный, вантовый; б) длина пролета моста больше 300 и меньше 1500 м. Спецификация представления: представляемая таблица содержит сведения о всех вантовых мостах. 18. Схема таблицы ФИРМА Название фирмы Организационно-правовая форма (ООО, ОАО, ТОО и т.д.) Юридический адрес Дата учреждения Количество работников Число работников, имеющих водительские права Средний оклад работников Средний возраст работников Направление деятельности Задолженность по налогам (имеется/не имеется) Ограничение уникальности: название фирмы. Проверочные ограничения: а) число работников, имеющих водительские права не должно превышать общее количество работников; б) средний возраст работников не должен превышать 35 лет. Спецификация представления: представляемая таблица включает название фирмы и соответствующие обобщенные сведения о работниках этой фирмы. 19. Схема таблицы ОЗЕРА_РОССИИ Название Площадь (км2) Максимальная глубина Средняя глубина Область Район Ограничение уникальности: название, область Проверочные ограничения: а) название области: минская, витебская, гомельская, брестская, гродненская; б) площадь >0 и <80. Спецификация представления: представляемая таблица включает название озера, площадь, глубину, область и район для озер с максимальной глубиной от 15 до 30 м. 20. Схема таблицы ОТДЕЛ_КАДРОВ Идентификационный код Фамилия Имя Отчество Дата рождения Должность Оклад Подразделение Состав семьи (человек) Ограничение уникальности: идентификационный код, фамилия, имя, отчество, дата рождения. Проверочные ограничения: а) подразделения: бухгалтерия, дирекция, цех, конструкторское бюро; б) дата рождения меньше текущей даты. Спецификация представления: представляемая таблица включает информацию о сотрудниках, работающих в бухгалтерии. 21. Схема таблицы ТЕЛЕВИЗОР Марка телевизора Страна сборки Тип кинескопа Размер по диагонали Системы цветности Число каналов Наличие телетекста (имеется/не имеется) Звук (моно/стерео) Выходная мощность Вес Потребляемая мощность Дата продажи Ограничение уникальности: марка телевизора, страна сборки. Проверочные ограничения: а) система цветности может быть следующих типов: PAL/SECAM, B/G, D/K, H, I, NTSC, VIT; б) число каналов должно быть не меньше 40. Спецификация представления: представляемая таблица содержит марку телевизора, страну сборки и потребляемую мощность для телевизоров, имеющих телетекст. 22. Схема таблицы ЗООМАГАЗИН Номер животного Кличка Тип животного Порода Дата рождения Пол (м/ж) Окрас Длина Вес Вакцинация (имеется/не имеется) Ограничение уникальности: номер животного Проверочные ограничения: а) номер животного должен иметь следующую структуру: <буква><буква><цифра><цифра><цифра><цифра>; б) дата рождения должна быть меньше текущей даты. Спецификация представления: представляемая таблица содержит кличку, породу, дату рождения, пол, окрас для собак. 23. Схема таблицы ЗАПИСНАЯ_КНИЖКА Имя Фамилия Адрес Телефон Дата рождения Прозвище Увлечения Ограничение уникальности: имя, фамилия Проверочные ограничения: а) номер телефона должен быть <цифра><цифра><цифра ><цифра><цифра><цифра><цифра>; б) дата рождения должна быть меньше текущей даты. Спецификация представления: представляемая таблица содержит имя, фамилию, номер телефона, дату рождения для всех, родившихся в январе. 24. Схема таблицы ПРОИЗВОДСТВЕННАЯ_ПРАКТИКА Ф.И.О. студента Ф.И.О. преподавателя № группы Место прохождения практики Вид практики Дата сдачи отчета Оценка Дата начала практики Дата окончания практики Ограничение уникальности: Ф.И.О. студента, номер группы Проверочные ограничения: а) дата окончания практики больше даны начала практики; б) дата сдачи отчета больше даты начала практики и меньше даты окончания практики Спецификация представления: представляемая таблица содержит сведения остудентах, проходивших производственную практику и получивших оценку не меньше 6. 25. Схема таблицы СТРОИТЕЛЬНАЯ_КОМПАНИЯ Идентификационный номер здания Адрес Тип здания Уровень сложности (от 1 до 4) Дата начала работы Дата окончания работы ФИО прораба Телефон прораба Ограничение уникальности: Идентификационный номер здания Проверочные ограничения: а) дата начала работы меньше даты окончания работы, дата начала работы меньше текущей даты; б) тип здания: офис, жилой дом, магазин, склад, баня. Спецификация представления: представляемая таблица содержит сведения о всех построенных фирмой магазинах. Приложение. Типы данных и операторы языка SQL Типы данных Символьные типы данных CHAR(n) – строки фиксированной длины. VARCHAR(n) – строки переменной длины, где n – максимальное число символов. TEXT – строки потенциально неограниченного размера. Пример: name VARCHAR(40) state CHAR(2) description CHAR(50) NULL Двоичные данные BINARY)n) – двоичные строки фиксированной длины VARBINARY(n) – двоичные строки переменной длины IMAGE – большие двоичные строки Тип данных дата SQL сервер поддерживает типы даты и времени: DATETIME и SMALLDATETIME. Логический тип данных BIT Числовые типы данных Целые INT, SMALLINT, TINYINT Данные с плавающей точкой FLOAT(p), REAL, p-точность Данные с фиксированной точкой NUMERIC(p,s), DECIMAL (p – число значащих цифр , s – число цифр после десятичной точки) Денежные типы MONEY, SMALLMONEY Создание таблицы CREATE TABLE <имя таблицы> (<элемент таблицы>,[{<элемент таблицы>}…]) <элемент таблицы>::=<определение столбца>|<определение ограничения целостности> <определение столбца>::=<имя столбца><тип данных>[<раздел умолчания>][{<ограничение целостности столбца>}…] <раздел умолчания>::=DEFAULT{<литерал>|USER|NULL} <ограничение целостности столбца>::=NOT NULL[<спецификация уникальности>]|<спецификация ссылок>|CHECK(<условие поиска>) В разделе умолчания указывается значение, которое помещается в строку по умолчанию. Это может быть литеральная константа, соответствующая типу столбца, символьная строка, содержащая имя текущего пользователя (USER), либо неопределенное значение (NULL). Если значение столбца по умолчанию не задано, и в разделе ограничений целостности столбца указано NOT NULL, то попытка занести в таблицу строку с неспецифицированным значением данного столбца приведет к ошибке. <определение ограничения целостности>::=<определение ограничения уникальности>|<определение ограничений по ссылкам>|<определение проверочного значения> <определение ограничения уникальности>::=<спецификация уникальности>(<список столбцов>) <спецификация уникальности>::=UNIQUE|PRIMARY KEY <определение ограничений по ссылкам>::=FOREIGN KEY(<ссылающиеся столбцы>)<спецификация ссылок> <спецификация ссылок>::=REFERENCES <ссылаемая таблица и столбцы> <ссылаемая таблица и столбцы>::=<имя таблицы>[(<список столбцов>)] <определение проверочного значения>::=CHECK (<условие поиска>) Примеры CREATE TABLE employee (emp_id INTEGER CONSTRAINT p1 PRIMARY KEY, fname CHAR(20) NOT NULL, minitial CHAR(1) NULL, lname VARCHAR(30) NOT NULL, job_id SMALLINT NOT NULL DEFAULT 1 REFERENCES jobs(job_id) CREATE TABLE inventory (code CHAR(4) NOT NULL CONSTRAINT c1 CHECK(code LIKE “[0-9] [0-9] [0-9]”), high INT NOT NULL CHECK (high >0), low INT NOT NULL CHECK (low>0), CONSTRAINT c4 CHECK (high>=low AND high-low<1000) Изменение таблиц ALTER TABLE <имя таблицы>{ADD <элемент таблицы>[{,<элемент таблицы>}..]|DROP CONSTRAINT <имя ограничения>[{,<имя ограничения>},…]} Пример ALTER TABLE names2 ADD middle_name VARCHAR(20) NULL, fax VARCHAR(15) NULL Создание представлений CREATE VIEW <имя таблицы>[(список столбцов)] AS <спецификация запроса> [WITH CHECK OPTION] <спецификация запроса>::=SELECT [ALL|DISTINCT] <список выборки><табличное выражение> Одиночные операторы манипулирования данными Оператор поискового удаления: DELETE FROM <имя таблицы>[WHERE<условие поиска>] Оператор поисковой модификации: UPDATE <имя таблицы> SET <предложение установки>[{,<предложение установки>}…][WHERE <условие поиска>] Оператор включения (добавление строки в таблицу): INSERT INTO <имя таблицы>[(<список столбцов>)]{VALUES(<список значений>)]|<подзапрос>} Пример: INSERT INTO publishers (pub_id,pub_name,cite,state) VALUES (‘1234’,’Stendhal Publishing’,’Paris’,’France”) Создание индекса CREATE [UNIQUE] INDEX <имя индекса> ON <имя таблицы> (<имя столбца> [ASC|DESC][{<имя столбца>[ASC|DESC]}…]) Описатель UNIQUE указывает, что никаким двум строкам в индексируемой таблице не позволяется принимать одно и то же значение для индексируемого столбца Удаление объектов базы данных DROP TABLE <имя таблицы> DROP VIEW <имя представления> DROP INDEX <имя индекса> Получение справочной информации об объектах базы данных Информацию об объектах текущей БД можно получить, запустив процедуру sp_help sp_help <имя объекта> Для получения информации только об ограничениях таблицы, можно воспользоваться хранимой процедурой sp_helpconstraint <имя таблицы> Информация об индексах: sp_helpindex <имя таблицы> Чтобы получить список и описания объектов класса Х, определенных в БД, можно выполнить оператор: SELECT * FROM sysobjects WHERE type=’X’ Возможные значения параметра Х:U -таблица, V-представление ,C –проверочное ограничение , F –ограничение по ссылкам , K –ограничение уникальности , D – раздел умолчаний.