Основы sql ms access
DESCRIPTION
Основы SQL MS ACCESS. History of SQL. Модель Кодда ( 1970 год ) теоретически описывает проектирование и использование реляционных баз данных SQL- язык для создания таблиц/полей и манипулирования данными - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/1.jpg)
Основы SQL MS ACCESS
![Page 2: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/2.jpg)
History of SQL
Модель Кодда (1970 год) теоретически описывает проектирование и использование реляционных баз данных
SQL-язык для создания таблиц/полей и манипулирования данными
Началось со Structured English Query (SEQUEL), который был спроектирован для использования в SystemR. Вторая версия была названа Sequel/2, который был в последствии переименован в SQL (Structured Query Language).
![Page 3: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/3.jpg)
History of SQL
Существует 3 стандарта SQL-86 (наиболее распространенный в
настоящее время) SQL-89 (с незначительными
изменениями) SQL-92 (с существенными изменениями) MS Access поддерживает наиболее
распространенный стандарт, но не полностью и с некоторыми отличиями. Так он поддерживает подмножество SQL-89 и некоторые элементы SQL-92.
![Page 4: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/4.jpg)
КТО такой SQL? SQL - Structured Query
Language Высокоуровневый декларативный
язык, используемый для создания и обработки данных реляционных баз данных
Декларативный оределяет ЧТО, а не КАК
Включается как подмножество во многие языки 4-го поколения
![Page 5: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/5.jpg)
Цели стандарта of SQL
1. Определяет синтаксис и семантику языков создания таблиц (DDL) и обработки данных(DML)
2. Определяет структуры данных и основные операции для поддержки, управления и защиты баз данных SQL
3. Обеспечивает средство переносимости баз данных и приложений между СУБД
![Page 6: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/6.jpg)
Цели стандарта of SQL
4. Определяет минимальный (level 1) и полный (level 2) стандарты для разрешения различных степеней адаптации продуктов
5. Обеспечивает начальный стандарт, который все время улучшается
![Page 7: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/7.jpg)
Преимущества стандартизованного языка
Сокращается стоимость обучения - Организация может ограничиться
одним языком Производительность -
Увеличивается уровень мастерства и таким образом производительность через постоянное использование
Мобильность приложений - Если каждая машина использует SQL,
то перемещение приложений выполняется легче
![Page 8: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/8.jpg)
Преимущества стандартизованного языка
Долголетие приложений - Стандартные языки должны
увеличивать жизненный период и приложения долго не переписываются
Сокращается зависимость от одного поставщика -
Легче использовать услуги и продукты от различных поставщиков
Межсистемное общение - Различные СУБД и приложения мозут
легче взаимодействовать, дазделять данные и т.п.
![Page 9: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/9.jpg)
Data Definition Language (DDL)
Компонент DDL языка SQL позволяет создавать, изменять и удалять таблицы и индексы реализовывать ограничения целостности данных и доменов
Доступно восемь команд DDL Create Table Drop Table Alter Table Create Index Drop Index Create View Drop View Create Schema
![Page 10: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/10.jpg)
Data Manipulation Language (DML)
Компонент DML языка SQL позволяет пользователям и приложениям запрашивать, изменять, удалять существующие записи в таблице и вставлять новые записи Select, Update, Insert, Delete
![Page 11: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/11.jpg)
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));
![Page 12: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/12.jpg)
Alter Table Позволяет сделать изменения в
существующей таблице - Добавлять и удалять столбцы Изменять имена столбцов, тип
данных, ограничения и т.п.
ALTER TABLE EMPLOYEE_TADD (COMMENCE_DATE DATE);
![Page 13: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/13.jpg)
Drop Table
Если таблица удаляется, то все индексы, views, права и пр., определенное для таблицы также удаляется - Использовать осторожно –
возврата нет
DROP TABLE EMPLOYEE_T
![Page 14: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/14.jpg)
Create Index
Индексы создаются для улучшения производительности запроса
Например, CREATE INDEX NAME_IDX ON
EMPLOYEE_T (NAME); Команда удаления индекса:
DROP INDEX NAME_IDX
![Page 15: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/15.jpg)
Create Index
Следует осторожно рассматривать создание индексов для таблиц - Каждый индекс требует
дополнительного пространства внешней памяти
Применяемый индекс изменяется, когда значения индексного поля изменяется
Производительность может реально сокращена
![Page 16: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/16.jpg)
Ввод данных в таблицы
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;
![Page 17: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/17.jpg)
Удаление данных из таблицы
DELETE FROM EMPLOYEE_T;
DELETE FROM EMPLOYEE_TWHERE EMP_ID = ‘C434’;
![Page 18: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/18.jpg)
Изменение данных в таблице
UPDATE SALARY_T SET SALARY_AMOUNT =
SALARY_AMOUNT * 1.05;
![Page 19: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/19.jpg)
Утверждение Select
SELECT наиболее используемое - Позволяет извлекать информацию
из 1 или более таблиц 3 наиболее общих оператора:
SELECT - поля, и т.д. для показа FROM - определяет
таблицы/представления WHERE - условия
![Page 20: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/20.jpg)
Select
SELECT и FROM требуются всегда
WHERE требуется, когда необходимы условия
![Page 21: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/21.jpg)
Примеры Select
SELECT * FROM EMPLOYEE_T
Показывается все данные из таблицы employee - Порядок полей такой же как в
таблице
![Page 22: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/22.jpg)
Примеры Select
SELECT NAME, DEPARTMENTFROM EMPLOYEE_T;
Будут показаны только значения name и department из таблицы employee table will be displayed
![Page 23: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/23.jpg)
Примеры Select
SELECT EMP_ID, NAME, DEPARTMENT
FROM EMPLOYEE_TWHERE COMMENCE_DATE <
#01/01/85#
Показывает служащих, которые приступили к работе до 1 января 1985
![Page 24: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/24.jpg)
Select с выражениями
SELECT ITEM_NO, DESCRIPTION, ON_HAND, COST * 1.25 AS SELL PRICE
FROM INVENTORY
Показывает описание, количество на руках и продажную цену для всех предметов на складе
![Page 25: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/25.jpg)
Select с Functions
SELECT COUNT (*) FROM EMPLOYEE_T;
Сколько всего служащих?
![Page 26: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/26.jpg)
Select с Functions
SELECT COUNT (ITEM_NO)FROM INVENTORY;
Сколько различных предметов в настоящее время в запасе?
![Page 27: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/27.jpg)
Select с Functions
SELECT ITEM_NO, MIN(ON_HAND)FROM INVENTORY;
Какой предмет с наименьшим количеством запаса?
![Page 28: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/28.jpg)
Select с Functions
SELECT ITEM_NO, MAX(ON_HAND)FROM INVENTORY;
Какой предмет с максимальным количеством на руках?
![Page 29: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/29.jpg)
Групповые символы Групповые символы
используются, когда невозможно использовать точное совпадение. Например, можно знать первый симвло ‘C’ имени и не помните остальных.
Описатель ‘LIKE’ часто используется с групповыми символами (кроме «*»)
(*) совпадает со всем
![Page 30: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/30.jpg)
Групповые символы
% - используется для любого номера символа; -> LIKE “C%”
_ - «_» используется для точно одного символа; -> LIKE “SMITH_”;
MS Access использует ‘*’ и ‘_’ как символы заполнитли
![Page 31: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/31.jpg)
Операторы сравнения
Операторы сравнения аналогичны математическим
Пример:SELECT ITEM_NO, NAME
FROM INVENTORY WHERE ON_HAND > 30;
![Page 32: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/32.jpg)
Логические операторы AND – объединяет два или
более условий и возвращает результат, если все условия истинны
OR - объединяет два или более условий и возвращает результат, если некоторое из условий истинны
NOT – отрицает любое условие Приоритет: NOT, AND, OR
![Page 33: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/33.jpg)
Пример
SELECT ITEM_NO, ON_HANDFROM INVENTORYWHERE ON_HAND > 10AND DESCRIPTION LIKE “%bolts”OR COST < 1.00;
![Page 34: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/34.jpg)
Описатель Distinct Используется для устранения
дублирующих значений полей в результате
Пример:
SELECT DISTINCT ITEM_NOFROM ITEM_SALES_T;
Замечание: Не доступен в дизайнере MS Access
![Page 35: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/35.jpg)
IN и NOT IN IN и NOT IN используются для
совпадения (или несовпадения) из списка значений
Список значений может быть получен с использованием утверждения SELECT
Пример:
SELECT S_ID, SUPPLIER_NAME, PHONE
FROM SUPPLIER_TWHERE CITY IN (“Tomsk”);
![Page 36: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/36.jpg)
Order By ORDER BY используется для
сортировки по значению одного или нескольких столбцов в результирующем наборе по увеличению (ASC) или уменьшению (DESC);
Пример:SELECT FIRST_NAME, LAST_NAME,
CUST_ID, ADDRESSFROM CUSTOMER_TORDER BY LAST_NAME ASC;
![Page 37: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/37.jpg)
Group By и Having
GROUP BY – Группирует строки в таблице промежуточного результата. Аналогично SORT в дизайнере.
HAVING – используется только с GROUP BY и как вторичное утверждение WHERE для задания дополнительных условий
![Page 38: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/38.jpg)
Пример GROUP BY
SELECT STATE, COUNT (STATE)FROM SUPPLIERGROUP BY STATE;
![Page 39: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/39.jpg)
Пример GROUP BY с HAVING
SELECT STATE, COUNT (STATE)FROM CUSTOMERGROUP BY STATEHAVING COUNT (STATE) < 100;
Определяет штаты, где меньше чем 100 клиентов
![Page 40: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/40.jpg)
Соединение (Join) Соединение – реляционная
операция, которая объединяет 2 таблицы на основе общего домена в одну таблицу или представление Общее правило -
Для каждой их 2 таблиц, которые объединяются, должно быть по крайней мере 1 условие WHERE, которое содержит условие на общем домене.
В противном будет образовано декартово произведение таблиц.
![Page 41: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/41.jpg)
Естественное соединение
Естественное соединение исключает дублирующие столбцы. Наиболее общее использование
соединения
SELECT ITEM.ITEM_NO, DESCRIPTIONFROM ITEM, ORDER_ITEMWHERE ITEM.ITEM_NO =
ORDER.ITEM_NO
![Page 42: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/42.jpg)
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
![Page 43: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/43.jpg)
Пример 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;
![Page 44: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/44.jpg)
![Page 45: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/45.jpg)
Inner JOIN->Left OUTER JOIN-> RIGHT OUTER JOIN.
Объединение только тех записей, в которых связанные поля обеих таблиц совпадают.
Объединение всех из первой таблицы и только тех записей у которых совпадают связанные поля из второй.
Объединение только тех записей у которых совпадают связанные поля из первой
![Page 46: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/46.jpg)
![Page 47: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/47.jpg)
SELECT DISTINCTROW tblPtSubset.PtID, tblPtSubset.ECGCategory, tlkpECGCode.ECGDescription
FROM tblPtSubset INNER JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;
![Page 48: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/48.jpg)
SELECT DISTINCTROW tblPtSubset.PtID, tblPtSubset.ECGCategory, tlkpECGCode.ECGDescription
FROM tblPtSubset LEFT JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;
![Page 49: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/49.jpg)
SELECT DISTINCTROW tblPtSubset.PtID, tlkpECGCode.ECGCategory, tlkpECGCode.ECGDescription
FROM tblPtSubset RIGHT JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;
![Page 50: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/50.jpg)
![Page 51: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/51.jpg)
Соединение нескольких таблиц
Синтаксис объединения множества таблиц следующий:
FROM (…table1 Join table2 on условиеА) Join table3 on условиеВ) Join…)
![Page 52: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/52.jpg)
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;
![Page 53: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/53.jpg)
Self Joins
![Page 54: Основы SQL MS ACCESS](https://reader030.vdocuments.mx/reader030/viewer/2022033014/5681446e550346895db1004b/html5/thumbnails/54.jpg)
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