Vvmebel.com

Новости с мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access sql синтаксис

Использование языка SQL MS ACCESS;

Язык структурированных запросов (SQL) является стандартным средством для работы с базами данных. Может использоваться как для интерактивной работы с БД, так и включаться в языки программирования. В CУБД Access SQL позволяет:

· создавать, модифицировать или удалять таблицы в базе данных Access;

· создавать или удалять ключи, индексы для таблиц в базе данных Access;

· вставлять, удалять или модифицировать записи таблиц;

· получать сводную информацию о данных в таблицах (число записей, суммы, средние, минимальные, максимальные значения и др.);

· осуществлять поиск и извлекать данные из одной или более таблиц по запросу.

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

SELECT список имен полей 1

FROM список имен таблиц

[WHERE условие]

[ORDER BY список имен полей 2]

[GROUP BY список имен полей 3]

SELECT, FROM, WHERE, ORDER BY, GROUP BY — ключевые слова;

список имен полей 1 набор имен полей, которые выбираются из одной или нескольких таблиц, указанных в списке имен таблиц, вычисляемых полей, агрегированных функций (например, count, sum, min, max, avg и т.д.). Для выбора всех полей из списка таблиц вместо перечисления их имен можно использовать символ «*». Если имя поля таблицы содержит пробел, т.е. состоит из нескольких слов, то это имя должно заключаться в квадратные скобки;

список имен таблиц — набор имен таблиц, из которых производится выбор информации.

Имена полей и таблиц нечувствительны к регистру клавиатуры и указываются в списках через запятую.

Все приведенные далее примеры основаны на использовании БД по библиографии, логическая структура которой приведена на рисунке 2.1.

Примеры:

SELECT * FROM Книга — выбор всех полей всех книг из таблицы «Книга» базы данных по библиографии.

SELECT Название, [Год издания] FROM Книга — выбор полей заголовков (Название ) и года издания (Год издания) всех книг из таблицы «Книга». Имя поля года издания указано в квадратных скобках (имеет пробел).

Таблица «Издательство» Таблица «Книга» Таблица «Автор»

Рис. 2.1. Структура и схема БД по библиографии

Для поиска информации, удовлетворяющей некоторому условию, в операторе SELECT используется раздел WHERE, который имеет следующий синтаксис:

SELECT список имен полей FROM список имен таблиц WHERE условие,

где условиеопределяет критерий поиска информации.

В условии используются имена полей, операции сравнения ( , >=, <>) и специальные операции сравнения IN, LIKE, BETWEЕN. Эти операции могут объединяться с помощью логических операций (And, Or) и задавать сложные условия поиска информации.

Примеры:

SELECT Название, [Год издания] FROM Книга

WHERE [Год издания] > 1991 определяет выбор названий книг, год выпуска которых позже 1991.

SELECT Фамилия, Имя FROM Автор

WHERE Фамилия = ”Иванов” определяет выбор полей имен и фамилий авторов из таблицы «Автор», фамилии которых совпадают с фамилией Иванов. Здесь символ “ используется для задания текстовых констант.

Операция IN сравнивает содержимое поля со списком заданных значений, определяющих критерий поиска информации.

Примеры:

SELECT Название, [Год издания] FROM Книга

WHERE [Год издания] IN (1995, 1996) определяет выбор названий и года издания книг, опубликованных в 1995 или в 1996 гг.

SELECT Фамилия, Имя, Город FROM Автор

WHERE Город IN (“Омск”, “Москва”, “Киев”) определяет выбор авторов, живущих в городах Омск, Москва или Киев.

Операция LIKE сравнивает содержимое поля со значением образца. Для записи образца используются строковые константы, символы шаблона и списки диапазона символов.

Символами шаблона являются: *, ?, #. Символ * соответствует цепочке символов, ? — соответствует одному символу, # — соответствует одной цифре.

Примеры:

Р* — возможные результаты поиска рука, Роза.

КИ? — возможные результаты поиска кий, кит.

12345# — возможные результаты поиска 123455, 123457.

Список диапазона заключается в квадратные скобки, первый и последний символы диапазона отделяются дефисом (-). Диапазон задается в возрастающем порядке.

Примеры:

SELECT Фамилия, Имя, Отчество FROM Автор

WHERE Фамилия LIKE ‘И*’ определяет выбор авторов, фамилии которых начинаются с буквы И.

SELECT Фамилия FROM Автор WHERE Фамилия LIKE [A-K] определяет выбор авторов, фамилии которых начинаются с букв от А до К.

SELECT Название FROM Книга

WHERE Название LIKE “*база данных*” AND [Год издания] = 1996 определяет выбор названий книг, выпущенных в 1996 году и в названии которых присутствует фраза «база данных».

Операция BETWEEN проверяет принадлежность значения поля диапазону значений и является включающим значением (выбираются записи, содержащие поле со значением, равным границе диапазона). Границы значений объединяются операцией AND.

Примеры:

SELECT Название, [Год издания] FROM Книга

WHERE [Год издания] Between #01.01.1994# And #30.06.1994# определяет выбор книг, изданных в первой половине 1994 года. Здесь символ # используется для задания констант типа дата.

SELECT [Название издат], адрес, телефон FROM Издательство

WHERE [Название издат] Between ‘Нау’ And ‘Фин’ определяет выбор информации об издательских фирмах, начальные буквы названий которых, расположенные в алфавитном порядке, находятся в диапазоне между ‘Нау’ и ‘Фин’.

Для определения порядка, в котором представляются результаты поиска записей, используется раздел ORDER BY, синтаксис которого следующий:

SELECT список имен полей FROM список имен таблиц [WHERE условие] ORDER BY имя поля 1 [ASC | DESC][, имя поля 2[ASC | DESC]] ,

где имя поля1, имя поля2 поля (из списка имен полей), по которым производится упорядочение. Опция ASCустанавливает порядок сортировкипо возрастанию (данный порядок установлен по умолчанию), DESC устанавливает порядок сортировки по убыванию. Упорядочение может вестись по нескольким полям (например, по фамилии, а затем по имени)

Читать еще:  Role based access control

Пример:

SELECT Название FROM Книга

WHERE Название LIKE “*база данных*” AND [Год издания] = 1996

ORDER BY Название определяет выбор названий книг, выпущенных в 1996 году и в названии которых присутствует фраза «база данных», и упорядочивает названия в алфавитном порядке.

Для группировки записей используется раздел GROUP BY, синтаксис которого следующий:

SELECT список имен полей FROM список имен таблиц [WHERE условие] GROUP BY имя поля 1 [, имя поля 2],

где имя поля1, имя поля2 поля (из списка имен полей), по которым производится группировка записей. Порядок следования полей в этом предложении определяет уровни их группировки. Группировку можно производить для выражений (например, вычисляемых полей), тогда в списке полей этому выражению должно быть присвоено какое-нибудь имя. Для агрегированных функций (count, sum, min, max, avg и т.д.) группировка обязательна.

Пример:

SELECT Фамилия, [Год издания], Sum (Цена) AS [Стоимость]

FROM Книга, Автор

WHERE Автор.[Код автора]= Книга.[Код автора]

GROUPBY Фамилия, [Год издания]

ORDER BY Фамилия, [Год издания] определяет суммарную цену (Стоимость) книг года издания для каждого автора.

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

SELECT список имен полей FROM список имен таблиц WHERE список связей,

где список связей определяет, как таблицы в списке имен таблиц связаны между собой. Например, имя_таблицы1.имя_поля1 = имя_таблицы2.имя_поля2.

Примеры:

SELECT Книга.Название, Издательство. [Название издат]

FROM Книга, Издательство

WHERE Книга. [Код издат]= Издательство. [Код издательства] And

Издательство. [Название издат]=”Наука”

Этот запрос определяет выбор названий книг (Название) из таблицы «Книга» и названий издательств (Название издат) из таблицы издательств (Издательство). Раздел WHERE осуществляет следующее:

· определяет связь между таблицами (выбирается название книги и номер издательства «Код издат» из таблицы «Книга», по номеру издательства «Код издательства» в таблице издательств «Издательство» находится название издательства);

· задает условие для выбора книг, изданных только в издательстве «Наука».

SQL — язык доступа и управления СУБД Access

Запросы составляются на основе SQL – инструкций

В СУБД Access применяются два типа запросов: QBE – запрос по образцу и SQL (Structured Query Language)- язык структурированных запросов. Запрос по образцу формируется путем заполнения специального бланка запроса в окне «Конструктора запросов». SQL – запросы создаются программистами из последовательности SQL – инструкций. SQL формируется, как правило, программистами на бланке запроса, который открывается командой «Конструктор запросов» на вкладке «Создание» и выбирается «Режим SQL» из меню Вид. Язык SQL предназначен для работы с данными, т.е. для создания, модификации и управления данными в реляционных БД.

Следует отметить, что существует несколько режимов запросов SQL (запросов в режиме ANSI-89 SQL и ANSI-92 SQL), которые соответствуют стандартам ANSI-89 SQL и ANSI-92 SQL.

Инструкции содержат описание набора данных на языке SQL. Инструкции SQL состоят из предложений (SELECT, FROM, WHERE и т.д.). Предложения на языке SQL состоят из терминов (операторов или команд, идентификаторов, констант и т.д.). Инструкция начинается оператором (одной из команд SELECT, CREATE, INSERT, UPDATE, DELETE и т.д. ) и заканчивается точкой с запятой. Основные операторы SQL: SELECT, FROM и WHERE.

Например, инструкция SQL:
SELECT Студенты.КодСтудента
FROM Студенты;
состоит из предложения «SELECT Студенты.КодСтудента» и предложения «FROM Студенты».

Предложение SELECT содержит оператор SELECT и идентификатор «Студенты.КодСтудента». Здесь полное имя поля «КодСтудента» предваряется именем таблицы «Студенты» базы данных. SELECT — определяет поле, которое содержит требуемые данные. Предложение FROM состоит из оператора FROM и идентификатора «Студенты». FROM — определяет таблицу, которая содержат поля, указанные в предложении SELECT.

Необходимо отметить, что при формировании запроса на языке SQL необходимо учитывать его синтаксис. Несмотря на то, что синтаксис языка SQL основан на синтаксисе английского языка, но для различных СУБД синтаксис версий языка SQL может различаться.

Существует несколько типов запросов: на выборку, на обновление, на добавление и на удаление записей, перекрестный запрос, создание и удаление таблиц, соединение таблицы и т.д. Наиболее распространенным является запрос на выборку. Запросы на выборку используются для отбора нужной пользователю информации, содержащейся в таблицах. Они создаются только для связанных таблиц.

Чтобы посмотреть SQL – запросы на выборку в СУБД Access 2003 или 2007 необходимо в активном окне проектирования запроса по образцу (рис. 1) выполнить команду Вид/режим SQL.

Получим инструкцию SQL (SELECT) на выборку данных из БД Access 2003 по критерию успеваемости студентов «Оценка=5» (рис. 2).

Как следует из инструкции SELECT (рис. 1), она описывает набор данных на языке SQL: SELECT — определяет имена полей, предваряемые именами таблиц, в которых содержатся данные; FROM — определяет таблицы и их взаимосвязи через ключевые поля таблиц (для этого используется конструкция INNER JOIN . ON), на основе которых отбираются данные; WHREME — определяет условия отбора полей; ORDER BY — определяет способ сортировки по возрастанию (по умолчанию выполняется сортировка по возрастанию) значений поля «Фамилия» таблицы «Студенты».

Как следует из инструкции на выборку данных из БД, язык SQL описывает, что необходимо получить из базы данных, при этом исполнение возлагается на СУБД, так как язык SQL не имеет своих средства управления выполнением программы.

Copyright

© Обучение в интернет, .
Обратная связь

SQL — язык доступа и управления СУБД Access

Запросы составляются на основе SQL – инструкций

В СУБД Access применяются два типа запросов: QBE – запрос по образцу и SQL (Structured Query Language)- язык структурированных запросов. Запрос по образцу формируется путем заполнения специального бланка запроса в окне «Конструктора запросов». SQL – запросы создаются программистами из последовательности SQL – инструкций. SQL формируется, как правило, программистами на бланке запроса, который открывается командой «Конструктор запросов» на вкладке «Создание» и выбирается «Режим SQL» из меню Вид. Язык SQL предназначен для работы с данными, т.е. для создания, модификации и управления данными в реляционных БД.

Читать еще:  Как создать гиперссылку в powerpoint

Следует отметить, что существует несколько режимов запросов SQL (запросов в режиме ANSI-89 SQL и ANSI-92 SQL), которые соответствуют стандартам ANSI-89 SQL и ANSI-92 SQL.

Инструкции содержат описание набора данных на языке SQL. Инструкции SQL состоят из предложений (SELECT, FROM, WHERE и т.д.). Предложения на языке SQL состоят из терминов (операторов или команд, идентификаторов, констант и т.д.). Инструкция начинается оператором (одной из команд SELECT, CREATE, INSERT, UPDATE, DELETE и т.д. ) и заканчивается точкой с запятой. Основные операторы SQL: SELECT, FROM и WHERE.

Например, инструкция SQL:
SELECT Студенты.КодСтудента
FROM Студенты;
состоит из предложения «SELECT Студенты.КодСтудента» и предложения «FROM Студенты».

Предложение SELECT содержит оператор SELECT и идентификатор «Студенты.КодСтудента». Здесь полное имя поля «КодСтудента» предваряется именем таблицы «Студенты» базы данных. SELECT — определяет поле, которое содержит требуемые данные. Предложение FROM состоит из оператора FROM и идентификатора «Студенты». FROM — определяет таблицу, которая содержат поля, указанные в предложении SELECT.

Необходимо отметить, что при формировании запроса на языке SQL необходимо учитывать его синтаксис. Несмотря на то, что синтаксис языка SQL основан на синтаксисе английского языка, но для различных СУБД синтаксис версий языка SQL может различаться.

Существует несколько типов запросов: на выборку, на обновление, на добавление и на удаление записей, перекрестный запрос, создание и удаление таблиц, соединение таблицы и т.д. Наиболее распространенным является запрос на выборку. Запросы на выборку используются для отбора нужной пользователю информации, содержащейся в таблицах. Они создаются только для связанных таблиц.

Чтобы посмотреть SQL – запросы на выборку в СУБД Access 2003 или 2007 необходимо в активном окне проектирования запроса по образцу (рис. 1) выполнить команду Вид/режим SQL.

Получим инструкцию SQL (SELECT) на выборку данных из БД Access 2003 по критерию успеваемости студентов «Оценка=5» (рис. 2).

Как следует из инструкции SELECT (рис. 1), она описывает набор данных на языке SQL: SELECT — определяет имена полей, предваряемые именами таблиц, в которых содержатся данные; FROM — определяет таблицы и их взаимосвязи через ключевые поля таблиц (для этого используется конструкция INNER JOIN . ON), на основе которых отбираются данные; WHREME — определяет условия отбора полей; ORDER BY — определяет способ сортировки по возрастанию (по умолчанию выполняется сортировка по возрастанию) значений поля «Фамилия» таблицы «Студенты».

Как следует из инструкции на выборку данных из БД, язык SQL описывает, что необходимо получить из базы данных, при этом исполнение возлагается на СУБД, так как язык SQL не имеет своих средства управления выполнением программы.

Copyright

© Обучение в интернет, .
Обратная связь

Access sql синтаксис

есть текстовый файл, есть БД Access.
пытаюсь вставить все записи из текстового файла в БД. делаю это так
ADOQuery2.SQL.Add(«INSERT INTO MainTable(Source, Dest, Bytes, Packet) IN «»»+st+»»»»);
ADOQuery2.SQL.Add(» SELECT Source, Dest, Bytes, Packet FROM «»logWcvs»»»); // st — это файл с БД Access
ADOConnection2.ConnectionString — указывает на тектовый дривер Микрософт.
вылетает ошибка
«[Microsoft][ODBC text driver] syntax error in query. Incomplete query clause»
что пишу не так ?


kuchumovkv ( 2003-09-02 19:12 ) [1]

Для начала попробуй узнать, в какой строке ошибка. И, MainTable — это в mdb, как понял, а что такое logWcvs?


koreshok ( 2003-09-02 19:18 ) [2]


> Для начала попробуй узнать, в какой строке ошибка

а как это сделать?
[Microsoft][ODBC text driver] он знает только путь к «типа» БД, и знает расширения файлов, которые являются его таблицами. (по крайней мере я так понял), так вот logWcvs — это есть файл logWcvs.txt. в файле DSN указан путь к базе и расширение таблиц TXT, т.е. logWcvs это и есть текстовая таблица.


kuchumovkv ( 2003-09-02 19:40 ) [3]

К сожалению, не знаком с ньюансами систаксиса SQL для [ODBC text driver], а их для каждых дров более чем предостаточно, намучался с дровами для дбф-ок.
SELECT Source, Dest, Bytes, Packet FROM «»logWcvs»» как понимаю образует рекордсет для вставки в mdb, попробуй выполнить сначала его отдельно, без инсерта, так и узнаешь, в какой части глюк (я уверен, что именно в нем).
Второе, может вместо «»logWcvs»» — «»»logWcvs»»», структура конструкции наводит на такое размышление, или «»» вместо «»», но это уже голые предположения, хотя зачастую такой метод приводит к результату. Лучше, конечно, хелп перед глазами.


koreshok ( 2003-09-02 19:48 ) [4]


> Лучше, конечно, хелп перед глазами

а где взять эти самые «ньюансы»?
ошибка и точно в SELECT, но таже самая:(


kuchumovkv ( 2003-09-02 19:58 ) [5]

Это точно ошибка синтаксиса! А без шуток, «ньюансы», как показывает опыт, познаются методом проб и ошибок. SQL только кажется универсальным. Исчерпывающей документации ни по одним дровам не видел.

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

Попробуй выполнять запрос в явном виде (имя файла «z:jjj.txt», напр, и т.д., апострофы, опять же), «select * . » и т.д. Удачи.

Читать еще:  Distinct в access


sniknik ( 2003-09-02 20:38 ) [6]

можно узнать в JETSQL40.CHM если найдеш на своей машине, но это только из Access базы (mdb) подключенном через Jet можно текст вкачать, обратной ситуации типа (из текста) доступа к «верхним» (Access, MsSql) базам нет.
т.е. надо из Access доступ к txt делать.


koreshok ( 2003-09-02 20:39 ) [7]

ошибку нашел
ADOQuery2.SQL.Add(«INSERT INTO MainTable(Source, Dest, Bytes, Packet) IN «»»+st+»»»»);
ADOQuery2.SQL.Add(«SELECT logWcvs.Source, logWcvs.Dest, logWcvs.Bytes, logWcvs.Packet FROM logWcvs.txt logWcvs»);

просто открыл Microsoft Query, мастером создал запрос и посмотрел синтаксис (оказывается иногда думать полезно)


koreshok ( 2003-09-02 20:49 ) [8]

2 sniknik оказывается можно и из тхт а Аксес загнать:) у меня получилось.


sniknik ( 2003-09-02 21:31 ) [9]

koreshok (02.09.03 20:49) [8]
хочеш сказать у тебя основное подключение к тексту, и из него к Access базе обращение? покажи.


sniknik ( 2003-09-02 21:45 ) [10]

а впрочем не надо, действительно получилось
коннект к тексту
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:;Extended Properties= Text;Persist Security Info=False
запрос
SELECT * INTO Box123 IN «D:Base.mdb» FROM BOX#TXT

оказывается можно а я просто не пробовал.

Что такое синтаксис MS Access SQL для создания поля типа Hyperlink?

Я работаю над проектом C #, который использует класс System.Data.OleDb.OleDbCommand для создания и изменения таблиц в базе данных MS Access. Я генерирую инструкцию SQL, передаю ее объекту, а затем вызываю функцию ExecuteNonQuery. Я смог найти правильный синтаксис MS Access SQL для создания столбцов следующих типов данных Access:

Единственный тип, который я не понял, как создать, – это гиперссылка. Кто-нибудь знает синтаксис для этого?

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

Это случай, когда вы не можете использовать DDL, но должны использовать DAO. То, что вы ищете, это свойство .Attributes типа поля DAO. В VBA этот код делает трюк (вам нужно выяснить, как это сделать с DAO в C #):

Если вы проверяете тип данных этого поля в Access:

он возвращает 12, что равно глобальной константе VBA dbMemo (так я выяснил, как это сделать, т. е. создал поле гиперссылки в пользовательском интерфейсе доступа, а затем проверил его тип данных). Значение для dbHyperlinkField равно 32768, но не может быть назначено напрямую как тип данных – это вместо этого атрибут поля memo.

Это случай расширения Access Jet с использованием настраиваемого атрибута для работы с данными иначе, чем ограниченное количество типов данных Jet. Также ясно, что тип поля Hyperlink применим только в том случае, если вы используете данные из самого Access. Если вы используете какое-либо другое приложение для работы с данными, вы ничего не получаете от использования поля данных гиперссылки.

Кроме того, я с теми, кто не рекомендует использовать поле типа Hyperlink, потому что я его пробовал, и это просто боль в заднице. Кроме того, учитывая, что это действительно поле memo, оно подвержено всем проблемам, которые возникают с полями memo. То есть данные фактически не хранятся в таблице данных – все, что хранится в основной записи, является указателем на страницу данных, на которой хранятся реальные данные, и эти указатели являются одной из частей фрейлера Jet. Записки стоят того риска, потому что, когда вам нужно сохранить более 255 символов, вам нужно это сделать. Я не вижу, что есть какая-то значительная функциональность, добавленная типом поля гиперссылки для Access, который стоит проблем с работой с ним в коде или с риском, который возникает из-за того, что он реализован за кулисами в качестве поля memo.

У меня была игра с этим с ADOX в C #, и единственный способ, которым я нашел это, – установить свойство «Jet OLEDB:Hyperlink» после создания столбца в таблице, но до фактического добавления таблицы в коллекцию таблиц.

В следующем примере требуется ссылка COM на Microsoft ADO Ext. 2.8 для DDL и безопасности:

Хотя Microsoft усложняет дело, имея поле гиперссылки в базе данных как объект со свойствами, настройка кажется довольно простой, используя такой синтаксис:

UPDATE myTable SET HyperlinkField = «(текст для отображения) # (целевой URL) # (подполе гиперссылки, если требуется)» Предложение WHERE

Фактически, я использую это для создания формы над таблицей, где ссылка указывает на файл, а не на веб-адрес (это список чертежей, чтобы пользователь мог щелкнуть ссылку, чтобы открыть чертеж). В этом случае URL-адрес – это путь RELATIVE к файлу, например «.. documents myFile1.dat».

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

Я не тестировал, как эти ссылки ведут себя, когда исходная база данных перемещается, кстати.

Вы должны использовать два поля CHARACTER для представления содержимого гиперссылки, которое содержит URL-адрес ресурса, на который вы хотите связать гиперссылку (сохраненную как обычный текст), и другую, которая будет содержать текст, отображаемый в браузере (это если текст, отображаемый в браузере, отличается от самого URL).

При отображении ссылки на веб-странице на C # вы можете создать гиперссылку:

Следуя инструкциям ворона, фиктивные программисты (например, я) могут использовать этот sub, чтобы добавить, используя код VBA, поле гиперссылки.

Соответствующий SQL для вставки новой записи со ссылкой на (например) c: is ..

Ссылка на основную публикацию
Adblock
detector