Правильная ссылка на эту страницу
http://az-design.ru/Support/DataBase/SQL/SQL_Simply.shtml

SQL? – Это очень просто!

       Действительно, наверное, нет более простого и, в тоже время более мощного языка. Разработанный в 1970г. в компании IBM язык SQL (Structured Query Language – Структурированный язык запросов) стал стандартным языком, используемым для связи с такими системами управления реляционными базами данных, как Oracle, INGRES, Informix, SyBase, SQLBase, Microsoft SQL Server, DB2 (СУБД самой IBM), Interbase, Firebird, продуктами SQL/DC, Paradox, Access, Approach и многими другими. И прежде чем приступить к языку, посмотрим, с чем он работает – данные.
       В простейшем случае данные представлены в виде простой таблицы, содержащей строки, которые мы будем именовать записями, и столбцы, которые в случае отдельно взятой записи мы будем именовать полями. Таблица и каждый ее столбец должны иметь свое имя. Нет ограничений на то, чтобы одинаковые столбцы в разных таблицах имели одинаковые имена. Но для лучшего понимания БД желательно первые 2-3 символа в названии столбца сделать сокращением от названия таблицы.
       Строки в таблице никак не обозначены. Если две или более записи абсолютно одинаковые, т.е. если значения всех полей одинаковы, то операция выполняется на всеми этими записями. Записи храняться в таблице в произвольном порядке. В большинстве случаев – это порядок заполнения таблицы, но если перед этим была удалена какая-либо запись, то новая записывается на освободившееся место.


       Итак, для обычного пользователя (не разработчика), которому захотелось посмотреть на БД изнутри, без применения различных клиентских приложений, достаточно знать всего 4(ЧЕТЫРЕ)!! оператора:

INSERT, SELECT, UPDATE, DELETE

INSERT INTO TABLE(Field1,..,Fieldx) VALUES(Val1,..,Valx);
       Если сказать по-русски – "Вставить в таблицу TABLE запись, у которой поля Field1,..,Fieldx имеют значения Val1,..,Valx. Если поле не указано в перечне полей, то оно примет значение по умолчанию или Null. Если не указывать перечень полей, то необходимо перечислить значения для всех полей в записи, включая и те, которые имеют значение Null.
       Так как оператор Insert into можно записать в простой текстовый файл, именуемый SQL-script и выполнить его в пакетном режиме, то получается самый простой способ экспортировать данные из любой программы в БД с языком SQL.
       Например:

Insert into PERSON(FName,SName,SurName)
       values('Андрей','Германович','Архангельский');
commit;


       *) оператор commit фиксирует изменения сделанные предыдущими операторами.
       Однако если в таблице есть какие-либо условия на значения полей, то оператор не будет выполнен при нарушении этих условий. Обращать на это внимание или нет, зависит от конкретных условий. Например, если на какое-то поле наложено условие, что в нем должны быть только уникальные значения, то это позволяет отбросить все дублирующие значения, не проверяя их вручную.
       Таким образом, получая данные из какого-нибудь нестандартного источника, и отправляя их в виде пакетного файла SQL-scriptа, получаем правильно заполненную таблицу, игнорируя ошибки уникальности.

SELECT Field1,..,Fieldx FROM TABLE WHERE CONDITION;
       По-русски это звучить так – Выбрать поля Field1,..,Fieldx записях из таблицы TABLE когда выполняется условие. Несмотря на простоту этой команды, это самый мощный инструмент. Итак, оператор выбирает записи из таблицы (или нескольких таблиц) если значения указанных в условиях полей удовлетворяют условиям. Если после предложения SELECT вместо перечня полей поставить звездочку, то будут выбраны все поля.
       Например:

SELECT FName,SName,SurName FROM PERSON
 WHERE SurName like 'Арх%';
commit;


       Может выдать результат:

FName        SName              SurName
============ ================== ===================
Андрей       Германович         Архангельский
Алексей      Германович         Архангельский
Глеб         Алексеевич         Архангельский

       Этот оператор также можно использовать в пакетном файле, но делается это редко, потому что результат практически всегда можно сохранить в текстовом файле из интерактивного режима. Точный синтаксис этого оператора достаточно сложен и его можно посмотреть здесь.
       А вот если "скрестить ежа и ужа" то получается интересный результат:

Insert into EMLOYEE(FName,SName,SurName)
     Select FName,SName,SurName from PERSON
      Where Firms='AZ Design Corp.';
commit;

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

UPDATE TABLE SET Field1=Val1 WHERE Field2=Val2;
       По-русски – Обновить TABLE установить значение Field1=Val1 когда Field2=Val2. Оператор обновляет значения указанных полей для строк, которые удовлетворяют заданным условиям. Все настолько просто, что даже говорить нечего.

DELETE FROM TABLE WHERE Field2=Val2;
       По-русски – Удалить строки из таблицы TABLE когда они удовлетворяют условию.

       Стоит только заметить, что предложение WHERE и все что за ним стоит одинаково для всех операторов, кроме INSERT, и его можно построить очень сложным. Но это уже другой разговор.

       Комбинируйте и с помощью этих четырех операторов можно манипулировать данными почти во всех случаях.

 

© 17.01.2003, Архангельский А.Г.

Оглавление
Главная страница




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:44 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/DataBase/SQL/SQL_Simply.shtml