Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команды манипулирования данными. Использование подзапросов в 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; просмотров: 778; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.72.27 (0.005 с.) |