Команды манипулирования данными. Использование подзапросов в INSERT 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Команды манипулирования данными. Использование подзапросов в INSERT



В SQL для выполнения ввода данных в таблицу, их изменения и удаления предназначены три команды языка манипулирования данными: INSERT, UPDATE, DELETE.

Команда INSERT осуществляет вставку в таблицу новой строки. В простейшем случае она имеет вид:

INSERT INTO <имя таблицы> VALUES ( <значение 1>,<значение 2>, …, <значение N> );

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

Если в какое-либо поле необходимо вставить NULL -значение, то оно вводится как обычное значение:

INSERT INTO STUDENT

VALUES (202, 'Мазуркин', NULL, 200, 3, 'Минск', #1/22/1981#, 15); (33.2)

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

INSERT INTO STUDENT (STUDENT_ID, CITY, SURNAME, NAME)

VALUES (2, ‘Бобруйск’, ‘Абрамович’, ‘Саша’); (33.3)

Столбцам, значения которых не указаны в приведенном в скобках списке, автоматически присваивается значение по умолчанию, если оно указано при создании таблицы, либо NULL -значение.

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

Пример. Переписать в таблицу STUDENT1 данные о студентах из Москвы.

INSERT INTO STUDENT1

SELECT *

FROM STUDENT

WHERE CITY = ‘Москва’; (33.4)

Удаление строк из таблицы осуществляется командой DELETE.

Пример. Удалить данные из таблицы EXAM_MARKS. В результате таблица становится пустой.

DELETE FROM EXAM_MARKS; (33.5)

Для удаления из таблицы нескольких строк, удовлетворяющих некоторому условию, можно воспользоваться предложением WHERE

DELETE FROM EXAM_MARKS

WHERE STUDENT_ID = 301; (33.6)

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

Например, изменить рейтинг всех университетов на значение 200.

UPDATE UNIVERSITY

SET RATTING = 200; (33.7)

Для указания конкретных строк таблицы, значения полей которых должны быть изменены, в команде UPDATE можно использовать предикат, указываемый в предложении WHERE.

Пример. Изменить рейтинг тех университетов, которые расположены в Москве.

UPDATE UNIVERSITY

SET RATTING = 200

WHERE CITY = ‘Москва’; (33.8)

Команда UPDATE позволяет изменять не только один, но и множество столбцов.

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

Предложение SET не является предикатом, поэтому в нем можно указывать значение NULL следующим образом:

UPDATE UNIVERSITY

SET RATTING = NULL

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

Использование подзапросов, основанных на таблицах внешних запросов

Пример. Пусть таблице SSTUD хранятся сведения о студентах, обучающихся в том же городе, в котором они живут. Заполнить эту таблицу данными из таблицы STUDENT.

INSERT INTO SSTUD

SELECT *

FROM STUDENT A

WHERE CITY IN

(SELECT CITY

FROM UNIVERSITY B

WHERE A.UNIV_ID=B.UNIV_ID); (33.14)

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

INSERT INTO EXAM

SELECT *

FROM EXAM_MARKS A

WHERE MARK =

(SELECT MAX (MARK)

FROM EXAM_MARKS B

WHERE A.EXAM_DATE = B.EXAM_DATE);

Использование подзапросов с DELETE

Пример. Удалить все данные о студентах, которые учатся в Воронеж

DELETE

FROM STUDENT

WHERE UNIV_ID IN

(SELECT UNIV_ID

FROM UNIVERSITY

WHERE CITY = ‘ВОРОНЕЖ’); (33.16)

В предикате предложения FROM (подзапроса) нельзя ссылаться на таблицу, из которой осуществляется удаление. Однако можно ссылаться на текущую строку из таблицы, являющуюся кандидатом на удаление, то есть на строку, которая в настоящее время проверяется в основном предикате.

Пример. Удалить данные о студентах, которые учатся в университетах, имеющих рейтинг 401

DELETE

FROM STUDENT

WHERE EXISTS

(SELECT *

FROM UNIVERSITY

WHERE RATTING = 401

AND STUDENT.UNIV_ID = UNIVERSITY.UNIV_ID); (33.17)

 

Второй способ решения этой задачи.

DELETE

FROM STUDENT

WHERE 401 IN

(SELECT RATTING

FROM UNIVERSITY

WHERE STUDENT.UNIV_ID = UNIVERSITY.UNIV_ID); (33.18)

Использование подзапросов с UPDATE

С помощью команды UPDATE можно применять подзапросы в любой форме, приемлемой для команды DELETE.

Пример. Увеличить стипендии на 20% студентам, которые имеют оценки только 4 и 5.

UPDATE STUDENT A

SET STIPEND = STIPEND+STIPEND*20/100

WHERE 4<=

(SELECT MIN (MARK)

FROM EXAM_MARKS B

WHERE B.STUDENT_ID = A.STUDENT_ID);

 

Основные особенности архитектуры клиент-сервер

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

Сервер локальной сети предоставляет ресурсы рабочим станциям или/и другим серверам.

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

Основные принципы системной архитектуры клиент-сервер.

Система разбивается на 2 части, которые могут выполняться в различных углах сети: клиентскую и серверную часть

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

Интерфейс серверной части определён и фиксирован. Поэтому возможно создание новых клиентских частей существующей системы.

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

Термин Сервер БД обычно используют для обозначения всей СУБД, основанной на архитектуре клиент-сервер, включая и серверную и клиентские части.

Серверы БД представляют собой простое и дешевое приближение к распределенной БД, поскольку общая БД доступна для всех пользователей локальной сети.

Организация данных в InterBase.

Домен. Перед тем как создавать табл., которые ссылаются на домен, необходимо задать описания доменов, при использовании команды CRETATE DOMAIN. В результате ее выполнения создается шаблон, на который можно ссылаться в командах создания и модификации таблиц. Столбцы, базирующиеся на доменах наследуют все характеристики доменов, при чем часть из них может быть переопределена в локальных описаниях столбцов. Однако тип данных не может быть переопределен в описании таблицы.

Синтаксис описания домена.

CREATE DOMEN <name – domain> -> имя домена

[AS] <data-type>-> тип домена (любой допустимый)

[DEFAULT { LITERAL |NULL| USER}] -> значение по умолчанию

[NOT NULL] [CHECK (<domain-condition>)];

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

LITERAL – указывает значение явно

NULL – оставляет значение пустым

USER – имя пользователя, создающего запись

Для полей типа Date можно указать Now (текущая дата)

NOT NULL- запрещает ввод пустых значений

CHECH (<dom.condition>) – задаёт ограничения (описание контроля данных при вводе и изменении)

Для задания условия используются следующие ключевые слова:

VALUE - подразумевает значение, вводимое в поле

IS NULL, IS NOT NULL, BETWEEN…AND…, LIKE, IN,

а также арифметические операторы.

Значение домена создаются независимо друг от друга, и, тем более, от других таблиц. Следовательно, CHECH в домене не может ссылаться ни на какой другой домен или столбец таблицы. Домен может иметь только одну конструкцию CHECH. Конструкция CHECH не может быть переопределена при описании атрибута таблицы. Если при описании поля в таблице, ссылающегося на домен, имеющий CHECH, указано своё ограничение, то действовать будут оба ограничения.

Пример.

CREATE DOMAIN USER_NAME

AS VARCHAR(20)

DEFAULT USER;

 

CREATE DOMAIN MONTH

AS SMALLINT

CHECH (VALUE BETWEEN 1 AND 12);

 

CREATE DOMAIN D_ELEM

AS CHAR (2)

CHECH (VALUE IN (‘Au’, ‘Ag’, ‘Pf ’, ‘Pd’, ‘Os’));



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 745; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.96.159 (0.017 с.)