русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Проектирование SQL баз данных


Дата добавления: 2014-03-24; просмотров: 848; Нарушение авторских прав


Учебные вопросы:

 

1. Структурные ограничения при определении таблиц.

2. Представления (View).

3. Последовательности и синонимы.

 

 

Литература:

1. Бобровский, С. Oracle Database XE для Windows. Эффективное использование/ С. Бобровский. – М. : Лори. 2009. – 512 с.

2. Джейсон Прайс. SQL для Oracle 10g. Изд. Лори. 2010 г. – 556 с.

 

 

 

Ограничения

 

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

Проверка выполнения ограничения производится при выполнении SQL-сервером команд обновления данных (INSERT, UPDATE и DELETE), а так же при изменении структуры таблицы. Если ограничение при конкретном обновлении не выполняется, генерируется ошибка.

Полное определение ограничения имеет следующий синтаксис:

CONSTRAINT имя_ограничения описание_ограничения

 

Ограничения в SQL Oracle бывают следующих видов:

 

1. Ограничение NOT NULL.

2. Ограничение первичного ключа PRIMARY KEY.

3. Ограничение доменной целостности CHECK.

4. Ограничение уникальности UNIQUE.

5. Ограничение референциальной целостности FOREIGN KEY.

 

 

 

1 CREATE TABLE "Клиент"

2 (

3 "Имя" VARCHAR(50) NOT NULL,

4 "Фамилия" VARCHAR(50) NOT NULL,

5 CONSTRAINT "Клиент_Ф_С"

6 UNIQUE ( "Имя", "Фамилия" ),

7 "Пол" NCHAR

8 CHECK ( "Пол" IN ('М','Ж','м','ж') ),

9 "Дом Адрес" VARCHAR(100),



10 "Дата Рождения" DATE,

11 "Дом Телефон" CHAR(20),

12 "Моб Телефон" CHAR(20),

13 CONSTRAINT "Клиент_ТТ_С"

14 CHECK ("Дом Телефон" IS NOT NULL

15 OR "Моб Телефон" IS NOT NULL),

16 "Код Клиента" CHAR(20) NOT NULL UNIQUE

17 )

 

18 CREATE TABLE "Товар"

19 (

20 "Код товара" CHAR(20) NOT NULL UNIQUE,

21 "Название" VARCHAR(50) NOT NULL,

22 "Полное название" VARCHAR(200) NOT NULL,

23 "Цена" NUMBER NOT NULL

24 CHECK ("Цена" > 0),

25 "Мера изм" VARCHAR(20)

26 CHECK ( "Мера изм"

27 IN ( 'шт', 'кг', 'литр') ),

28 "Наличие" INT CHECK ( "Наличие" > 0 ),

29 "Описание" CLOB,

30 "Фото" BLOB

31 )

 

32 CREATE TABLE "Заказ"

33 (

34 "Код заказа" CHAR(40) PRIMARY KEY,

35 "Дата регистр" DATE DEFAULT current_date

36 NOT NULL,

37 "Клиент" CHAR(20) NOT NULL

38 REFERENCES "Клиент" ( "Код Клиента" ),

39 CONSTRAINT "Заказ_ДК_U"

40 UNIQUE ( "Дата регистр", "Клиент" ),

41 "Дата выполн" DATE

42 DEFAULT current_date + 3 NOT NULL,

43 CONSTRAINT "Заказ_Д_C"

44 CHECK( "Дата выполн" > "Дата регистр" )

45 )

46 CREATE TABLE "СоставЗак"

47 (

48 "Код заказа" CHAR(40) NOT NULL,

49 CONSTRAINT "СоставЗак_К_F" FOREIGN KEY

50 ("Код заказа") REFERENCES "Заказ",

51 "Код товара" CHAR(20) NOT NULL,

52 CONSTRAINT "СоставЗак_КК_U"

53 UNIQUE ("Код заказа", "Код товара" ),

54 "Количество" INT CHECK ("Количество">0),

55 CONSTRAINT "ТоварВЗаказе_К_C"

56 FOREIGN KEY ("Код товара")

57 REFERENCES "Товар"("Код товара")

58 )

 

Создание таблиц при помощи команды SELECT

 

CREATE TABLE AS SELECT

 

CREATE TABLE "Все заказы(таб)" AS

SELECT "Имя", "Фамилия", "Клиент",

"Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн"

FROM "Клиент", "Товар", "Заказ", "СоставЗак"

WHERE "Клиент"."Код Клиента" = "Заказ"."Клиент"

AND "Заказ"."Код заказа"="СоставЗак"."Код заказа"

AND "Товар"."Код товара"="СоставЗак"."Код товара"

 

CREATE GLOBAL TEMPORARY TABLE "Все заказы(вр)"

ON COMMIT PRESERVE ROWS

AS SELECT "Имя", "Фамилия", "Клиент",

"Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн"

FROM "Клиент", "Товар", "Заказ", "СоставЗак"

WHERE "Клиент"."Код Клиента"="Заказ"."Клиент"

AND "Заказ"."Код заказа"="СоставЗак"."Код заказа"

AND "Товар"."Код товара"="СоставЗак"."Код товара"

 

 

Последовательности

 

 

CREATE SEQUENCE "Клиент_sec" MINVALUE 0

START WITH 0 INCREMENT BY 1

 

SELECT "Клиент_sec". NEXTVAL,

"Клиент_sec". CURRVAL FROM Dual

 

Пример использования последовательностей

 

INSERT INTO "Клиент" VALUES

( 'Ада', 'Вонг', 'ж', NULL, NULL, NULL,

'Номер', "Клиент_sec".nextval )

 

INSERT INTO "Заказ" VALUES ( '0067', DEFAULT,

"Клиент_sec".currval, DEFAULT )

 

ALTER SEQUENCE "Клиент_sec" INCREMENT BY 2

 

DROP SEQUENCE "Клиент_sec"

 

Синонимы

 

SELECT * FROM system.clients

 

CREATE PUBLIC SYNONYM clients FOR system.clients

 

SELECT * FROM clients

 

 

 

Представления

 

SELECT "Имя", "Фамилия", "Клиент",

"Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн"

FROM "Клиент", "Товар", "Заказ", "СоставЗак"

WHERE "Клиент"."Код Клиента" = "Заказ"."Клиент" AND "Заказ"."Код заказа"="СоставЗак"."Код заказа" AND "Товар"."Код товара"="СоставЗак"."Код товара"

 

CREATE VIEW "Все заказы" AS

SELECT "Имя", "Фамилия", "Клиент",

"Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн"

FROM "Клиент", "Товар", "Заказ", "СоставЗак"

WHERE "Клиент"."Код Клиента"="Заказ"."Клиент"

AND "Заказ"."Код заказа"="СоставЗак"."Код заказа" AND "Товар"."Код товара"="СоставЗак"."Код товара"

 

SELECT * FROM "Все заказы"

SELECT * FROM "Все заказы"

WHERE "Имя" = 'Лена' AND "Фамилия" = 'Шварц'

SELECT "Имя", "Фамилия", COUNT(*)

FROM "Все заказы"

GROUP BY "Имя", "Фамилия"

 

SELECT * FROM SYS.OBJ$

 

 

SELECT OWNER, VIEW_NAME, TEXT

FROM all_views

WHERE VIEW_NAME ='ALL_VIEWS'

 

OWNER VIEW_NAME TEXT
SYS ALL_VIEWS select u.name, o.name, v.textlength, v.text, t.typetextlength, t.typetext, t.oidtextlength, t.oidtext, t.typeowner, t.typename, decode(bitand(v.property, 134217728), 134217728, (select sv.name from superobj$ h, obj$ sv where h.subobj# = o.obj# and h.superobj# = sv.obj#), null) from sys.obj$ o, sys.view$ v, sys.user$ u, sys.typed_view$ t where o.obj# = v.obj# and o.obj# = t.obj#(+) and o.owner# = u.user# and (o.owner# = userenv('SCHEMAID') or o.obj# in (select oa.obj# from sys.objauth$ oa where oa.grantee# in ( select kzsrorol from x$kzsro ) ) or /* user has system privileges */ exists (select null from v$enabledprivs where priv_number in (-45 /* LOCK ANY TABLE */, -47 /* SELECT ANY TABLE */, -48 /* INSERT ANY TABLE */, -49 /* UPDATE ANY TABLE */, -50 /* DELETE ANY TABLE */) ) )

 

 

CREATE TABLE "Все записи"

( username CHAR(20) DEFAULT USER

NOT NULL UNIQUE,

name CHAR(20),

birth DATE )

 

 

CREATE OR REPLACE VIEW "Мои записи"

AS SELECT name "Имя", birth "Дата рождения"

FROM "Все записи"

WHERE username = USER

 

 

CREATE OR REPLACE VIEW "Мои записи" AS

SELECT name "Имя", birth "Дата рождения"

FROM "Все записи"

WHERE username = USER

WITH READ ONLY

 

 

CREATE OR REPLACE VIEW "Мои записи" AS

SELECT name "Имя", birth "Дата рождения",

User “Пользователь”

FROM "Все записи"

WHERE username = USER

WITH CHECK OPTION



<== предыдущая лекция | следующая лекция ==>
 | Микропроцессорная плата ZK 408


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.114 сек.