- •16.Запись реляционных выражений по Кодду. (Примеры всех операций)
- •17. Запись реляционных выражений по Дейту. (Примеры всех операций).
- •18. Дополнительные реляционные операции и их свойства.
- •1) Переименование
- •2) Расширение
- •3) Подведение итогов
- •19. Внутренняя модель данных. Индексы и их разновидности. Плюсы и минусы индексации. Внутренняя модель данных.
- •21. Хеширование. Разрешение коллизий. Виды хеш-функций.
- •22. TransRelation модель данных.
- •23. Sql. Описание данных.
- •25. Sql. Операторы манипулирования данными.
- •26. Sql. Запись реляционных операций на sql.
- •27.Sql. Запросы с подзапросами.
- •28. Sql. Запросы с агрегатными функциями.
- •29. Sql. Представления и технологические операции над ними.
- •30.Безопасность баз данных.
23. Sql. Описание данных.
Операторы описания данных предназначены для описания (создания), изменения описания и уничтожения объектов базы данных.
В SQL различаются следующие виды объектов:
- база данных (database);
- таблица (table);
- столбец (column);
- индекс (index);
- снимок (view);
- синоним (synonym).
Каждый объект имеет собственное имя - идентификатор. Каждый объект имеет владельца – т.е. того пользователя, который его создал. Имя объекта можно уточнять с помощью имени его владельца (owner-name) в такой форме: moshkow.table1
Ниже приводятся примеры использования всех операторов описания данных:
Создание базы данных: CREATE DATABASE zawod
В любой момент времени вы можете иметь доступ к объектами только одной – ТЕКУЩЕЙ (CURRENT) – базы данных. Оператор DATABASE делает новую базу текущей, закрывая при этом доступ к объектам предыдущей текущей базы. Оператор CLOSE DATABASE просто закрывает текущую базу данных.
В уже существующей таблице мы можем поменять тип столбца, добавить новый, уничтожить старый.
Изменение структуры таблицы приводит к физическому преобразованию данных в ней. Если изменен тип столбца, то данные в нем преобразуются к новому типу, и если это невозможно осуществить, то оператор ALTER "валится" с кодом ошибки, а таблица остается в неизмененном состоянии.
View - "псевдо" таблица, базируется на существующих таблицах.
Ведет себя точно так же, как настоящая таблица, только место на диске под нее не отводятся, поскольку данные, лежащие в ней на самом деле хранятся в таблице, на которой это view базируется.
Индекс - дополнительная структура к столбцам таблицы, нужен для ускорения поиска значений в столбце.
Синоним для имени таблицы используется для сокращения записи.
База данных может иметь системный журнал транзакций (logfile).
Естественно, что любой созданный в базе данных объект можно уничтожить. Надо только помнить, что операторы описания данных не откатываются назад, а потому если вы уничтожили таблицу, или базу данных то знайте, что это навсегда.
24. SQL. Оператор select.
Оператор SELECT осуществляет выборку из базы данных и имеет наиболее сложную структуру среди всех операторов языка SQL. Практически любой пользователь баз данных в состоянии написать простейший оператор SELECT типа SELECT * FROM PC, который осуществляет выборку всех записей из объекта БД табличного типа с именем PC. При этом столбцы и строки результирующего набора не упорядочены. Чтобы упорядочить поля результирующего набора, их следует перечислить через запятую в нужном порядке после слова SELECT:
SELECT price, speed, hd, ram, cd, model, code FROM Pc;
Вертикальную проекцию таблицы РC можно получить, если перечислить только необходимые поля. Например, чтобы получить информацию только о скорости процессора и объеме оперативной памяти компьютеров, следует выполнить запрос: SELECT speed, ram FROM PC;
Следует отметить, что вертикальная выборка может содержать дубликаты строк в том случае, если она не содержит потенциального ключа, однозначно определяющего запись. В таблице PC потенциальным ключом является поле code, которое выбрано в качестве первичного ключа таблицы. Если требуется получить уникальные строки (скажем, нас интересуют только различные комбинации скорости процессора и объема памяти, а не характеристики всех имеющихся компьютеров), то можно использовать ключевое слово DISTINCT:
SELECT DISTINCT speed, ram FROM Pc;
Чтобы упорядочить строки результирующего набора, можно выполнить сортировку по любому количеству полей, указанных в предложении SELECT. Для этого используется предложение ORDER BY <список полей>, являющееся всегда последним предложением в операторе SELECT. При этом в списке полей могут указываться как имена полей, так и их порядковые позиции в списке предложения SELECT. Так если требуется упорядочить результирующий набор по объему оперативной памяти в порядке убывания, можно записать:
SELECT DISTINCT speed, ram
FROM Pc
ORDER BY ram DESC;
или
SELECT DISTINCT speed, ram
FROM Pc
ORDER BY 2 DESC;
Сортировку можно проводить по возрастанию (параметр ASC принимается по умолчанию) или по убыванию (параметр DESC). Сортировка по двум полям:
SELECT DISTINCT speed, ram
FROM Pc
ORDER BY ram DESC, speed DESC;