|
Программирование >> Разработка пользовательского интерфейса
INSERT INTO account VALUES (106,6,100007,{12.07.96},.T.,26000) При этом мы не указываем, в какие поля мы добавляем значения. Следовательно, SQL считает, что мы будем добавлять значения во все поля. Далее, после ключевого слова VALUES мы в скобках просто перечисляем набор значений, при этом их порядок должен соответствовать порядку полей в таблице и, естественно, совпадать с ними по типу данных. В случае, если мы заполняем не все поля, нам необходимо явно перечислить те поля, в которые мы будем добавлять значения. INSERT INTO Account (account,key customer,key auto,date write) VALUES (106,6,100007,{12.07.96}) Какой информацией заполнятся поля для добавленной записи, очень сильно зависит от продукта, в котором выполняется операция, и от того, как спроектирована таблица. Это может быть значение по умолчанию для данного поля, значение типа NULL или пустая строка для символьных полей и 0 для числовых. Поля можно, как правило, перечислять в произвольном порядке, при этом значения тоже должны соответствовать порядку следования полей в перечислении. Следующий вариант использования команды INSERT ведет к добавлению в таблицу одной и более записей. В нашем случае мы просто добавляем записи из одной таблицы в другую, при этом обе таблицы имеют одинаковую структуру. INSERT INTO mytable ( kto, skolko ) SELECT DISTINCTROW acmytable.kto, acmytable.kto FROM Acmytable WHERE (((acmytable.kto)= cd )) Совершенно естественно, что соответствующие поля в выборке заполнения и в выборке добавления должны быть одного типа и размерности. Запросы обновления Запросы обновления, которые начинаются с ключевого слова UPDATE, служат для замены значений в полях таблицы в записях, которые выбираются по определенному критерию. Если вы не задаете никакого критерия, то обновляются все записи по указанному полю. Вы можете обновлять одно или несколько полей, но только одной таблицы. Есть некоторые различия в синтаксисе этой команды для приложений, которые мы рассматриваем. Самый описательный синтаксис в Microsoft SQL Server UPDATE [[database.]owner.]{table name view name} SET [[[database.]owner.]{table name. view name.}] column name1 = {expression1 NULL (select statement)} [, column name2 = {expression2 NULL (select statement)}...] [FROM [[database.]owner.]{table name view name} [, [[database.]owner.]{table name view name}]... ] [WHERE search conditions] Из приведенного синтаксиса видно, что вы можете связывать изменения в таблице в зависимости от связи с конкретной таблицей. Притом указывать это в предикате, связанном с предложением FROM. Таким образом, мы можем сформировать следующую строку UPDATE Account SET summa=summa*1.25 FROM Account, sale WHERE Account.account=Sale.account AND Sale.date sale>>{10.01.96} В Microsoft Access, несмотря на отсутствие в синтаксисе предложения FROM, мы тем не менее можем легко связывать две таблицы в запросе и обновлять данные в зависимости от значения в другой таблице. UPDATE DISTINCTROW account INNER JOIN sale ON account.account = sale.account SET account.summa = summa*1.25 WHERE (((sale.summa)>>20000)); В Visual FoxPro мы можем связать таблицы в предложении WHERE и в принципе добиться того же результата. UPDATE Account ; SET Summa=summa*1.25 WHERE Account.account=sale.account AND Account.date sale Запросы удаления Запросы удаления служат для удаления строк из таблицы. Синтаксис для всех рассматриваемых нами диалектов сходен. Вам нужно указать таблицу, из которой вы собираетесь исключить строки. Пример удаления строк DELETE FROM Account WHERE Account.key auto = 100008 Во всех командах, управляющих содержимым данных таблиц, можно применять подзапросы. 7.3. Изменение структуры данных с помощью SQL Язык SQL может помочь программисту не только более эффективно организовать получение пользователем приложения нужных данных, но и программно создавать и изменять структуру данных. В этом параграфе вы научитесь программным путем: создавать таблицы и индексы; изменять структуру существующих таблиц; создавать связи между таблицами. Data Definition Language (DDL) - это раздел языка SQL, который служит для создания таблиц, изменения их структуры или их удаления. Сюда же входит создание индексов. Несмотря на то, что практически во всех настольных СУБД имеются собственные средства создания таблиц, как правило, вы можете создавать таблицы и с помощью языка SQL. При этом за внешним визуальным прикрытием скрываются те же SQL команды. Поэтому логичней использовать возможность докопаться до сути происходящих процессов. Следующим аргументом для изучения этого раздела SQL может служить задача решения проблемы перевода своей информации с технологии одиноко стоящих компьютеров, обменивающихся информацией посредством дискет, либо технологии файл-серверов, на технологию клиент-сервер. Рассмотрим в качестве невероятного примера такую простую задачу, как переход вашей организации с платформы Visual FoxPro на Microsoft Access. Несмотря на всю кажущуюся легкость этого процесса, вы понесете немало потерь. Ни одно из свойств таблицы - заголовок поля, значение по умолчанию, правила проверки ввода значений уровня поля и уровня записи - не переносится. Вам все придется создавать заново. В то же время команды SQL Data Definition Language могут обеспечить управление импортом данных в Access или экспортом их из FoxPro. Как правило, любое мало-мальски приличное современное средство управления базами данных имеет набор функций SQL pass-through, которые позволяют управлять сторонними приложениями с помощью диалекта языка SQL самого стороннего приложения. Команда CREATE TABLE служит для создания таблиц. Ее полный синтаксис выглядит так: 1. Visual FoxPro CREATE TABLE DBF TableNamel [NAME LongTableName] [FREE] (FieldNamel FieldType [(nFieldWidth [, nPrecision])] [NULL NOT NULL] [CHECK lExpressionl [ERROR cMessageTextl]] [DEFAULT eExpressionl] [PRIMARY KEY UNIQUE] [REFERENCES TableNamel [TAG TagNamel]] [NOCPTRANS] [, FieldNamel ...] [, PRIMARY KEY eExpression2 TAG TagName2 , UNIQUE eExpression3 TAG TagName3] [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP] REFERENCES TableName3 [TAG TagName5]] [, CHECK lExpression2 [ERROR cMessageText2]]) FROM ARRAY ArrayName 2. MS Access CREATE TABLE таблица (поле1 тип [(размер)] [индекс1] [, поле2 тип [(размер)] [индекс2] [, ...]] [, составной индекс [, ...]]) 3. MS SQL Server CREATE TABLE [[database.]owner.]table name (column name datatype [NOT NULL NULL] [, column name datatype [NOT NULL NULL]]...) [ON segment name ] В зависимости от приложения синтаксис может различаться, но те элементы, которые мы можем создавать с помощью вышеприведенного синтаксиса, можно создавать с помощью других команд. То есть команда CREATE TABLE как бы размывается по нескольким командам, что в значительной мере зависит от внутренней архитектуры используемого процессора баз данных. Синтаксис SQL в Microsoft Access ближе к Microsoft SQL Server, в то время как Visual FoxPro стоит несколько особняком. Хотя в конечном итоге все элементы, которые мы можем создать для таблиц в Access, содержит и MS SQL Server. Иногда перед вами может стать задача изменения структуры таблицы. Для этого используется команда ALTER TABLE. Естественно, что никто не лишает вас возможности сделать это визуальными средствами СУБД, в которой вы проектируете свое прикладное приложение. Очень сложно придумать ситуацию, когда вам необходимо использовать команду ALTER TABLE внутри СУБД, где вы проектируете приложение, но, возможно, вам придется менять структуру таблицы, для которой на компьютере нет создающего ее приложения. Но есть драйвер ODBC (иначе ситуация фатальная). Или другой случай, когда вам необходимо с рабочей станции, например, из среды приложения, написанного на Visual FoxPro, добавить поле (колонку) в таблицу, хранящуюся на MS SQL Server. Самый насыщенный ключевыми словами ситаксис этой команды в Visual FoxPro: ALTER TABLE TableName1 ADD ALTER [COLUMN] FieldName1 FieldType [(nFieldWidth [, nPrecision])] [NULL NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]] [DEFAULT eExpression1] [PRIMARY KEY UNIQUE] [REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS] ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL NOT NULL] [SET DEFAULT eExpression2] [SET CHECK lExpression2 [ERROR cMessageText2]] [DROP DEFAULT] [DROP CHECK] ALTER TABLE TableName1 [DROP [COLUMN] FieldName3] [SET CHECK lExpression3 [ERROR cMessageText3]] [DROP CHECK] [ADD PRIMARY KEY eExpression3 TAG TagName2] [DROP PRIMARY KEY] [ADD UNIQUE eExpression4 [TAG TagName3]] [DROP UNIQUE TAG TagName4]
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |