Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы БД.docx
Скачиваний:
2
Добавлен:
15.09.2019
Размер:
166.74 Кб
Скачать

40. Операция выборки позволяет получить все строки (записи) либо часть строк одной таблицы.

SELECT * FROM country

Получить все строки таблицы Country

COUNTRY

CURRENCY

USA

Dollar

England

Pound

Canada

CdnDlr

Switzerland

SFranc

Japan

Yen

Italy

Lira

France

FFranc

Germany

D-Mark

Australia

ADollar

Hong Kong

HKDollar

Netherlands

Guilder

Belgium

BFranc

Austria

Schilling

Fiji

FDollar

В этом примере и далее - для большей наглядности - все зарезервированные слова языка SQL будем писать большими буквами. Красным цветом будем записывать предложения SQL, а светло-синим - результаты выполнения запросов.

SELECT * FROM country

WHERE currency = "Dollar".

Получить подмножество строк таблицы Country,удовлетворяющее условию Currency = "Dollar"

Результат последней операции выглядит следующим образом:

COUNTRY CURRENCY

=============== ==========

USA Dollar

39.Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются:

CREATE DATABASE

(создать базу данных)

CREATE TABLE

(создать таблицу)

CREATE VIEW

(создать виртуальную таблицу)

CREATE INDEX

(создать индекс)

CREATE TRIGGER

(создать триггер)

CREATE PROCEDURE

(создать сохраненную процедуру)

ALTER DATABASE

(модифицировать базу данных)

ALTER TABLE

(модифицировать таблицу)

ALTER VIEW

(модифицировать виртуальную таблицу)

ALTER INDEX

(модифицировать индекс)

ALTER TRIGGER

(модифицировать триггер)

ALTER PROCEDURE

(модифицировать сохраненную процедуру)

DROP DATABASE

(удалить базу данных)

DROP TABLE

(удалить таблицу)

DROP VIEW

(удалить виртуальную таблицу)

DROP INDEX

(удалить индекс)

DROP TRIGGER

(удалить триггер)

DROP PROCEDURE

(удалить сохраненную процедуру)

31. IS NULL

В SQL-запросах NULL означает, что значение столбца неизвестно. Поисковые условия, в которых значение столбца сравнивается с NULL, всегда принимают значение unknown (и, соответственно, приводят к ошибке), в противоположность true или false, т.е.

WHERE dept_no = NULL

или даже

WHERE NULL = NULL.

Предикат IS NULL принимает значение true только тогда, когда выражение слева от ключевых слов "IS NULL" имеет значение null (пусто, не определено). Разрешено также использовать конструкцию IS NOT NULL, которая означает "не пусто", "имеет какое-либо значение".

SELECT department, mngr_no

FROM department

WHERE mngr_no IS NULL

получить список отделов, в которых еще не назначены начальники

DEPARTMENT

MNGR_NO

Marketing

<null>

Software Products Div.

<null>

Software Development

<null>

Field Office: Singapore

<null>

Предикаты EXIST, ANY, ALL, SOME, SINGULAR мы рассмотрим в разделе, рассказывающем о подзапросах.

22. SQL (обычно произносимый как "СИКВЭЛ" или "ЭСКЮЭЛЬ") символизирует собой Структурированный Язык Запросов. Это - язык, который дает Вам возможность создавать и работать в реляционных базах данных, являющихся наборами связанной информации, сохраняемой в таблицах.

Информационное пространство становится более унифицированным. Это привело к необходимости создания стандартного языка, который мог бы использоваться в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям, знающим один набор команд, использовать их для создания, нахождения, изменения и передачи информации - независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции, или на универсальной ЭВМ.

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

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

Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов) и в данное время также принимается ISO (Международной Организацией по Стандартизации). Однако, большинство коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя различные особенности в этот язык, которые, как они считают, будут весьма полезны. Иногда они несколько нарушают стандарт языка, хотя хорошие идеи имеют тенденцию развиваться и вскоре становиться стандартами "рынка" сами по себе в силу полезности своих качеств.

На данном уроке мы будем, в основном, следовать стандарту ANSI, но одновременно иногда будет показывать и некоторые наиболее общие отклонения от его стандарта.

Точное описание особенностей языка приводится в документации на СУБД, которую Вы используете. SQL системы InterBase 4.0 соответствует стандарту ANSI-92 и частично стандарту ANSI-III.

Состав языка SQL

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

Поэтому, в язык SQL в качестве составных частей входят:

  • язык манипулирования данными (Data Manipulation Language, DML)

  • язык определения данных (Data Definition Language, DDL)

  • язык управления данными (Data Control Language, DCL).

Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.

Язык манипулирования данными используется, как это следует из его названия, для манипулирования данными в таблицах баз данных. Он состоит из 4 основных команд:

SELECT

(выбрать)

INSERT

(вставить)

UPDATE

(обновить)

DELETE

(удалить)

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

CREATE DATABASE

(создать базу данных)

CREATE TABLE

(создать таблицу)

CREATE VIEW

(создать виртуальную таблицу)

CREATE INDEX

(создать индекс)

CREATE TRIGGER

(создать триггер)

CREATE PROCEDURE

(создать сохраненную процедуру)

ALTER DATABASE

(модифицировать базу данных)

ALTER TABLE

(модифицировать таблицу)

ALTER VIEW

(модифицировать виртуальную таблицу)

ALTER INDEX

(модифицировать индекс)

ALTER TRIGGER

(модифицировать триггер)

ALTER PROCEDURE

(модифицировать сохраненную процедуру)

DROP DATABASE

(удалить базу данных)

DROP TABLE

(удалить таблицу)

DROP VIEW

(удалить виртуальную таблицу)

DROP INDEX

(удалить индекс)

DROP TRIGGER

(удалить триггер)

DROP PROCEDURE

(удалить сохраненную процедуру)

Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать "язык управления доступом". Он состоит из двух основных команд:

GRANT

(дать права)

REVOKE

(забрать права)

С точки зрения прикладного интерфейса существуют две разновидности команд SQL:

  • интерактивный SQL

  • встроенный SQL.

Интерактивный SQL используется в специальных утилитах (типа WISQL или DBD), позволяющих в интерактивном режиме вводить запросы с использованием команд SQL, посылать их для выполнения на сервер и получать результаты в предназначенном для этого окне. Встроенный SQL используется в прикладных программах, позволяя им посылать запросы к серверу и обрабатывать полученные результаты, в том числе комбинируя set-ориентированный и record-ориентированный подходы.

Мы не будем приводить точный синтаксис команд SQL, вместо этого мы рассмотрим их на многочисленных примерах, что намного более важно для понимания SQL, чем точный синтаксис, который можно посмотреть в документации на Вашу СУБД.

Итак, начнем с рассмотрения команд языка манипулирования данными

28.32. Потенциальный ключ

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Потенциальный ключ — в реляционной модели данных — подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости).

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

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

Поскольку все кортежи в отношении по определению уникальны, в нём всегда существует хотя бы один потенциальный ключ (например, включающий все атрибуты отношения).

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

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

41. UPDATE — оператор языка SQL, позволяющий обновить значения в заданных столбцах таблицы.

Общий вид команды

UPDATE [top(x)] <объект>

SET <присваивание1 [, присваивание2, ...]>

[WHERE <условие>]

[OPTION <хинт1 [, хинт2, ...]>]

  • top(x) — команда выполнится только х раз

  • <объект> — объект, над которым выполняется действие (таблица или представление)

  • <присваивание> — присваивание, которое будет выполняться при каждом выполнении условия <условие>, или для каждой записи, если отсутствует раздел where

  • <условие> — условие выполнения команды

  • <хинт> — инструкция программе как исполнить запрос

  • set- после ключевого слова должен идти список полей таблицы, которые будут обновлены и непосредственно сами новые значения в виде

имя поля="значение"

Примеры

UPDATE top(10) tbl_books SET price = 0 WHERE quantity = 0

OPTION (force GROUP, hash JOIN, force ORDER)

UPDATE per­sons SET street = 'Nis­sesti­en 67', ci­ty = 'Sand­nes' WHERE lastname = 'Tjes­sem' AND firs­tna­me = 'Ja­kob'

UPDATE temp a SET deptno =

(SELECT deptno FROM dept WHERE loc = ‘BOSTON’), (sal, comm) = (SELECT 1.1*AVG(sal), 1.5*AVG(comm)

FROM temp b WHERE a.deptno = b.deptno) WHERE deptno IN (SELECT deptno FROM dept WHERE loc = ‘DALLAS’ OR loc = ‘DETROIT’);

"UPDATE temp a ..." выполняет следующие операции:

  • Модифицирует только тех служащих, кто работают в Dallas или Detroit

  • Устанавливает значение колонки deptno для служащих из Бостона

  • Устанавливает жалованье каждого служащего в 1.1 раз больше среднего жалованья всего отдела

  • Устанавливает комиссионные каждого служащего в 1.5 раза больше средних комиссионных всего отдела

12. Основные понятия субд

Базы данных — это совокупность сведений (о реальных объектах, процессах, событиях или явлениях), относящихся к определенной теме или задаче, организованная таким образом, чтобы обеспечить удобное представление этой совокупности как в целом, так и любой ее части. Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного типа. Каждая строка таблицы включает данные об одном объекте (например, клиенте, автомобиле, документе), а столбцы таблицы содержат различные характеристики этих объектов — атрибуты (например, наименования и адреса клиентов, марки и цены автомобилей). Строки таблицы называются записями; все записи имеют одинаковую структуру — они состоят из полей, в которых хранятся атрибуты объекта. Каждое поле записи содержит одну характеристику объекта и имеет строго определенный тип данных (например, текстовая строка, число, дата). Все записи имеют одни и те же поля, только в них содержатся разные значения атрибутов.

Для работы с данными используются системы управления базами данных (СУБД). Основные функции СУБД — это определение данных (описание структуры баз данных), обработка данных и управление данными.

Прежде чем заносить данные в таблицы, нужно определить структуру этих таблиц. Под этим понимается не только описание наименований и типов полей, но и ряд других характеристик (например, формат, критерии проверки вводимых данных). Кроме описания структуры таблиц, обычно задаются связи между таблицами. Связи в реляционных базах данных определяются по совпадению значений полей в разных таблицах. Например, клиенты и заказы связаны отношением "один-ко-многим", т. к. одной записи в таблице, содержащей сведения о клиентах, может соответствовать несколько записей в таблице заказов этих клиентов. Если же рассмотреть отношение между преподавателями и курсами лекций, которые они читают, это будет отношение "многие-ко-многим", т. к. один преподаватель может читать несколько курсов, но и один курс может читаться несколькими преподавателями. И последний тип связей между таблицами — это отношение "один-к-одному". Такой тип отношений встречается гораздо реже. Как правило, это бывает в двух случаях: запись имеет большое количество полей, и тогда данные об одном типе объектов разносятся по двум связанным таблицам, или нужно определить дополнительные атрибуты для некоторого количества записей в таблице, тогда создается отдельная таблица для этих дополнительных атрибутов, которая связывается отношением "один-к-одному" с основной таблицей.

Любая СУБД позволяет выполнять четыре простейшие операции с данными:

  • добавлять в таблицу одну или несколько записей;

  • удалять из таблицы одну или несколько записей;

  • обновлять значения некоторых полей в одной или нескольких записях;

  • находить одну или несколько записей, удовлетворяющих заданному условию.

Для выполнения этих операций используется механизм запросов. Результатом выполнения запросов является либо отобранное по определенным критериям множество записей, либо изменения в таблицах. Запросы к базе формируются на специально созданном для этого языке, который так и называется язык структурированных запросов (SQL — Structured Query Language).

И последняя функция СУБД — это управление данными. Под управлением данными обычно понимают защиту данных от несанкционированного доступа, поддержку многопользовательского режима работы с данными и обеспечение целостности и согласованности данных.

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