Основы sql ms access
DESCRIPTION
Основы SQL MS ACCESS. History of SQL. Модель Кодда ( 1970 год ) теоретически описывает проектирование и использование реляционных баз данных SQL- язык для создания таблиц/полей и манипулирования данными - PowerPoint PPT PresentationTRANSCRIPT
Основы SQL MS ACCESS
History of SQL
Модель Кодда (1970 год) теоретически описывает проектирование и использование реляционных баз данных
SQL-язык для создания таблиц/полей и манипулирования данными
Началось со Structured English Query (SEQUEL), который был спроектирован для использования в SystemR. Вторая версия была названа Sequel/2, который был в последствии переименован в SQL (Structured Query Language).
History of SQL
Существует 3 стандарта SQL-86 (наиболее распространенный в
настоящее время) SQL-89 (с незначительными
изменениями) SQL-92 (с существенными изменениями) MS Access поддерживает наиболее
распространенный стандарт, но не полностью и с некоторыми отличиями. Так он поддерживает подмножество SQL-89 и некоторые элементы SQL-92.
КТО такой SQL? SQL - Structured Query
Language Высокоуровневый декларативный
язык, используемый для создания и обработки данных реляционных баз данных
Декларативный оределяет ЧТО, а не КАК
Включается как подмножество во многие языки 4-го поколения
Цели стандарта of SQL
1. Определяет синтаксис и семантику языков создания таблиц (DDL) и обработки данных(DML)
2. Определяет структуры данных и основные операции для поддержки, управления и защиты баз данных SQL
3. Обеспечивает средство переносимости баз данных и приложений между СУБД
Цели стандарта of SQL
4. Определяет минимальный (level 1) и полный (level 2) стандарты для разрешения различных степеней адаптации продуктов
5. Обеспечивает начальный стандарт, который все время улучшается
Преимущества стандартизованного языка
Сокращается стоимость обучения - Организация может ограничиться
одним языком Производительность -
Увеличивается уровень мастерства и таким образом производительность через постоянное использование
Мобильность приложений - Если каждая машина использует SQL,
то перемещение приложений выполняется легче
Преимущества стандартизованного языка
Долголетие приложений - Стандартные языки должны
увеличивать жизненный период и приложения долго не переписываются
Сокращается зависимость от одного поставщика -
Легче использовать услуги и продукты от различных поставщиков
Межсистемное общение - Различные СУБД и приложения мозут
легче взаимодействовать, дазделять данные и т.п.
Data Definition Language (DDL)
Компонент DDL языка SQL позволяет создавать, изменять и удалять таблицы и индексы реализовывать ограничения целостности данных и доменов
Доступно восемь команд DDL Create Table Drop Table Alter Table Create Index Drop Index Create View Drop View Create Schema
Data Manipulation Language (DML)
Компонент DML языка SQL позволяет пользователям и приложениям запрашивать, изменять, удалять существующие записи в таблице и вставлять новые записи Select, Update, Insert, Delete
Create Table
CREATE TABLE EMPLOYEE_T (EMP_ID VARCHAR(4) NOT NULL, NAME VARCHAR(40) NOT NULL, DATE_OF_BIRTH DATE, DEPARTMENT VARCHAR(25),CONSTRAINT EMPLOYEE_PK PRIMARY
KEY (EMP_ID));
Alter Table Позволяет сделать изменения в
существующей таблице - Добавлять и удалять столбцы Изменять имена столбцов, тип
данных, ограничения и т.п.
ALTER TABLE EMPLOYEE_TADD (COMMENCE_DATE DATE);
Drop Table
Если таблица удаляется, то все индексы, views, права и пр., определенное для таблицы также удаляется - Использовать осторожно –
возврата нет
DROP TABLE EMPLOYEE_T
Create Index
Индексы создаются для улучшения производительности запроса
Например, CREATE INDEX NAME_IDX ON
EMPLOYEE_T (NAME); Команда удаления индекса:
DROP INDEX NAME_IDX
Create Index
Следует осторожно рассматривать создание индексов для таблиц - Каждый индекс требует
дополнительного пространства внешней памяти
Применяемый индекс изменяется, когда значения индексного поля изменяется
Производительность может реально сокращена
Ввод данных в таблицы
INSERT INTO EMPLOYEE_T VALUES (‘D325’, ‘Alison Hart’, 19/04/2000, ‘Sales’)
INSERT INTO EMPLOYEE_T (EMP_ID, NAME) VALUES (‘F123’,’Henry Chang’);
INSERT INTO YEAR2NET_T SELECT ID, Name, Class FROM ENROLLED
WHERE YEAR_LEVEL = 2;
Удаление данных из таблицы
DELETE FROM EMPLOYEE_T;
DELETE FROM EMPLOYEE_TWHERE EMP_ID = ‘C434’;
Изменение данных в таблице
UPDATE SALARY_T SET SALARY_AMOUNT =
SALARY_AMOUNT * 1.05;
Утверждение Select
SELECT наиболее используемое - Позволяет извлекать информацию
из 1 или более таблиц 3 наиболее общих оператора:
SELECT - поля, и т.д. для показа FROM - определяет
таблицы/представления WHERE - условия
Select
SELECT и FROM требуются всегда
WHERE требуется, когда необходимы условия
Примеры Select
SELECT * FROM EMPLOYEE_T
Показывается все данные из таблицы employee - Порядок полей такой же как в
таблице
Примеры Select
SELECT NAME, DEPARTMENTFROM EMPLOYEE_T;
Будут показаны только значения name и department из таблицы employee table will be displayed
Примеры Select
SELECT EMP_ID, NAME, DEPARTMENT
FROM EMPLOYEE_TWHERE COMMENCE_DATE <
#01/01/85#
Показывает служащих, которые приступили к работе до 1 января 1985
Select с выражениями
SELECT ITEM_NO, DESCRIPTION, ON_HAND, COST * 1.25 AS SELL PRICE
FROM INVENTORY
Показывает описание, количество на руках и продажную цену для всех предметов на складе
Select с Functions
SELECT COUNT (*) FROM EMPLOYEE_T;
Сколько всего служащих?
Select с Functions
SELECT COUNT (ITEM_NO)FROM INVENTORY;
Сколько различных предметов в настоящее время в запасе?
Select с Functions
SELECT ITEM_NO, MIN(ON_HAND)FROM INVENTORY;
Какой предмет с наименьшим количеством запаса?
Select с Functions
SELECT ITEM_NO, MAX(ON_HAND)FROM INVENTORY;
Какой предмет с максимальным количеством на руках?
Групповые символы Групповые символы
используются, когда невозможно использовать точное совпадение. Например, можно знать первый симвло ‘C’ имени и не помните остальных.
Описатель ‘LIKE’ часто используется с групповыми символами (кроме «*»)
(*) совпадает со всем
Групповые символы
% - используется для любого номера символа; -> LIKE “C%”
_ - «_» используется для точно одного символа; -> LIKE “SMITH_”;
MS Access использует ‘*’ и ‘_’ как символы заполнитли
Операторы сравнения
Операторы сравнения аналогичны математическим
Пример:SELECT ITEM_NO, NAME
FROM INVENTORY WHERE ON_HAND > 30;
Логические операторы AND – объединяет два или
более условий и возвращает результат, если все условия истинны
OR - объединяет два или более условий и возвращает результат, если некоторое из условий истинны
NOT – отрицает любое условие Приоритет: NOT, AND, OR
Пример
SELECT ITEM_NO, ON_HANDFROM INVENTORYWHERE ON_HAND > 10AND DESCRIPTION LIKE “%bolts”OR COST < 1.00;
Описатель Distinct Используется для устранения
дублирующих значений полей в результате
Пример:
SELECT DISTINCT ITEM_NOFROM ITEM_SALES_T;
Замечание: Не доступен в дизайнере MS Access
IN и NOT IN IN и NOT IN используются для
совпадения (или несовпадения) из списка значений
Список значений может быть получен с использованием утверждения SELECT
Пример:
SELECT S_ID, SUPPLIER_NAME, PHONE
FROM SUPPLIER_TWHERE CITY IN (“Tomsk”);
Order By ORDER BY используется для
сортировки по значению одного или нескольких столбцов в результирующем наборе по увеличению (ASC) или уменьшению (DESC);
Пример:SELECT FIRST_NAME, LAST_NAME,
CUST_ID, ADDRESSFROM CUSTOMER_TORDER BY LAST_NAME ASC;
Group By и Having
GROUP BY – Группирует строки в таблице промежуточного результата. Аналогично SORT в дизайнере.
HAVING – используется только с GROUP BY и как вторичное утверждение WHERE для задания дополнительных условий
Пример GROUP BY
SELECT STATE, COUNT (STATE)FROM SUPPLIERGROUP BY STATE;
Пример GROUP BY с HAVING
SELECT STATE, COUNT (STATE)FROM CUSTOMERGROUP BY STATEHAVING COUNT (STATE) < 100;
Определяет штаты, где меньше чем 100 клиентов
Соединение (Join) Соединение – реляционная
операция, которая объединяет 2 таблицы на основе общего домена в одну таблицу или представление Общее правило -
Для каждой их 2 таблиц, которые объединяются, должно быть по крайней мере 1 условие WHERE, которое содержит условие на общем домене.
В противном будет образовано декартово произведение таблиц.
Естественное соединение
Естественное соединение исключает дублирующие столбцы. Наиболее общее использование
соединения
SELECT ITEM.ITEM_NO, DESCRIPTIONFROM ITEM, ORDER_ITEMWHERE ITEM.ITEM_NO =
ORDER.ITEM_NO
JOIN SQL-89: Select <список> FROM table1, table2
Where table1.column1= table2.column2
SQL-92: Select <список> FROM
table1{INNER|LEFT[OUTER]|RIGHT[OUTER]} JOIN table2
On table1.column1= table2.column2
Пример INNER JOIN
SELECT DISTINCTROW tblPatient.SiteNo, tblFollowup.PtID, tblPatient.RandomizationDate, tblFollowup.Visit, tblFollowup.Compliance, tblFollowup.Status
FROM tblPatient INNER JOIN tblFollowup ON tblPatient.PtID = tblFollowup.PtID;
Inner JOIN->Left OUTER JOIN-> RIGHT OUTER JOIN.
Объединение только тех записей, в которых связанные поля обеих таблиц совпадают.
Объединение всех из первой таблицы и только тех записей у которых совпадают связанные поля из второй.
Объединение только тех записей у которых совпадают связанные поля из первой
SELECT DISTINCTROW tblPtSubset.PtID, tblPtSubset.ECGCategory, tlkpECGCode.ECGDescription
FROM tblPtSubset INNER JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;
SELECT DISTINCTROW tblPtSubset.PtID, tblPtSubset.ECGCategory, tlkpECGCode.ECGDescription
FROM tblPtSubset LEFT JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;
SELECT DISTINCTROW tblPtSubset.PtID, tlkpECGCode.ECGCategory, tlkpECGCode.ECGDescription
FROM tblPtSubset RIGHT JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;
Соединение нескольких таблиц
Синтаксис объединения множества таблиц следующий:
FROM (…table1 Join table2 on условиеА) Join table3 on условиеВ) Join…)
SELECT DISTINCTROW tblPatient.PtID, [MDFirstname] & " " & [MDLastName] AS MD, tblPatient.Age, tblPatient.Sex, tblPatient.DischargeDateFROM tblMD INNER JOIN (tblPatient INNER JOIN tblPtDoctors ON tblPatient.PtID = tblPtDoctors.PtID) ON tblMD.MDNo = tblPtDoctors.MDNo;
Self Joins
Sub FinlandCustomers ()' Эта процедура изменяет источник записей для формы
Customers' для включения заказчиков из Finland. ' Объявляются переменные database, form и query. Dim dbs As Database, frm As Form, qdf As QueryDef ' Назначается текущую база данных переменной dbs. Set dbs = CurrentDB() ' Создается новый запрос с использованием метода
CreateQueryDef ' и назначается переменной qdf, ' Устанавливаются свойства Name и SQL для запроса, ' затем добавляется запрос к семейству сохраненных запросов. Set qdf = dbs.CreateQueryDef() qdf.Name = "Finland Query" qdf.SQL = "SELECT * FROM Customers WHERE Country='Finland';" dbs.QueryDefs.Append qdf dbs.QueryDefs.Refresh ' Форма Customers назначается переменной frm, затем
изменяется ' источник записей формы на новый запрос. Set frm = Forms!Customers frm.RecordSource = qdf.NameEnd Sub