Основы sql ms access

54
Основы SQL MS ACCESS

Upload: jovita

Post on 12-Jan-2016

76 views

Category:

Documents


3 download

DESCRIPTION

Основы SQL MS ACCESS. History of SQL. Модель Кодда ( 1970 год ) теоретически описывает проектирование и использование реляционных баз данных SQL- язык для создания таблиц/полей и манипулирования данными - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Основы  SQL MS ACCESS

Основы SQL MS ACCESS

Page 2: Основы  SQL MS ACCESS

History of SQL

Модель Кодда (1970 год) теоретически описывает проектирование и использование реляционных баз данных

SQL-язык для создания таблиц/полей и манипулирования данными

Началось со Structured English Query (SEQUEL), который был спроектирован для использования в SystemR. Вторая версия была названа Sequel/2, который был в последствии переименован в SQL (Structured Query Language).

Page 3: Основы  SQL MS ACCESS

History of SQL

Существует 3 стандарта SQL-86 (наиболее распространенный в

настоящее время) SQL-89 (с незначительными

изменениями) SQL-92 (с существенными изменениями) MS Access поддерживает наиболее

распространенный стандарт, но не полностью и с некоторыми отличиями. Так он поддерживает подмножество SQL-89 и некоторые элементы SQL-92.

Page 4: Основы  SQL MS ACCESS

КТО такой SQL? SQL - Structured Query

Language Высокоуровневый декларативный

язык, используемый для создания и обработки данных реляционных баз данных

Декларативный оределяет ЧТО, а не КАК

Включается как подмножество во многие языки 4-го поколения

Page 5: Основы  SQL MS ACCESS

Цели стандарта of SQL

1. Определяет синтаксис и семантику языков создания таблиц (DDL) и обработки данных(DML)

2. Определяет структуры данных и основные операции для поддержки, управления и защиты баз данных SQL

3. Обеспечивает средство переносимости баз данных и приложений между СУБД

Page 6: Основы  SQL MS ACCESS

Цели стандарта of SQL

4. Определяет минимальный (level 1) и полный (level 2) стандарты для разрешения различных степеней адаптации продуктов

5. Обеспечивает начальный стандарт, который все время улучшается

Page 7: Основы  SQL MS ACCESS

Преимущества стандартизованного языка

Сокращается стоимость обучения - Организация может ограничиться

одним языком Производительность -

Увеличивается уровень мастерства и таким образом производительность через постоянное использование

Мобильность приложений - Если каждая машина использует SQL,

то перемещение приложений выполняется легче

Page 8: Основы  SQL MS ACCESS

Преимущества стандартизованного языка

Долголетие приложений - Стандартные языки должны

увеличивать жизненный период и приложения долго не переписываются

Сокращается зависимость от одного поставщика -

Легче использовать услуги и продукты от различных поставщиков

Межсистемное общение - Различные СУБД и приложения мозут

легче взаимодействовать, дазделять данные и т.п.

Page 9: Основы  SQL MS ACCESS

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

Data Manipulation Language (DML)

Компонент DML языка SQL позволяет пользователям и приложениям запрашивать, изменять, удалять существующие записи в таблице и вставлять новые записи Select, Update, Insert, Delete

Page 11: Основы  SQL MS ACCESS

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

Alter Table Позволяет сделать изменения в

существующей таблице - Добавлять и удалять столбцы Изменять имена столбцов, тип

данных, ограничения и т.п.

ALTER TABLE EMPLOYEE_TADD (COMMENCE_DATE DATE);

Page 13: Основы  SQL MS ACCESS

Drop Table

Если таблица удаляется, то все индексы, views, права и пр., определенное для таблицы также удаляется - Использовать осторожно –

возврата нет

DROP TABLE EMPLOYEE_T

Page 14: Основы  SQL MS ACCESS

Create Index

Индексы создаются для улучшения производительности запроса

Например, CREATE INDEX NAME_IDX ON

EMPLOYEE_T (NAME); Команда удаления индекса:

DROP INDEX NAME_IDX

Page 15: Основы  SQL MS ACCESS

Create Index

Следует осторожно рассматривать создание индексов для таблиц - Каждый индекс требует

дополнительного пространства внешней памяти

Применяемый индекс изменяется, когда значения индексного поля изменяется

Производительность может реально сокращена

Page 16: Основы  SQL MS ACCESS

Ввод данных в таблицы

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

Удаление данных из таблицы

DELETE FROM EMPLOYEE_T;

DELETE FROM EMPLOYEE_TWHERE EMP_ID = ‘C434’;

Page 18: Основы  SQL MS ACCESS

Изменение данных в таблице

UPDATE SALARY_T SET SALARY_AMOUNT =

SALARY_AMOUNT * 1.05;

Page 19: Основы  SQL MS ACCESS

Утверждение Select

SELECT наиболее используемое - Позволяет извлекать информацию

из 1 или более таблиц 3 наиболее общих оператора:

SELECT - поля, и т.д. для показа FROM - определяет

таблицы/представления WHERE - условия

Page 20: Основы  SQL MS ACCESS

Select

SELECT и FROM требуются всегда

WHERE требуется, когда необходимы условия

Page 21: Основы  SQL MS ACCESS

Примеры Select

SELECT * FROM EMPLOYEE_T

Показывается все данные из таблицы employee - Порядок полей такой же как в

таблице

Page 22: Основы  SQL MS ACCESS

Примеры Select

SELECT NAME, DEPARTMENTFROM EMPLOYEE_T;

Будут показаны только значения name и department из таблицы employee table will be displayed

Page 23: Основы  SQL MS ACCESS

Примеры Select

SELECT EMP_ID, NAME, DEPARTMENT

FROM EMPLOYEE_TWHERE COMMENCE_DATE <

#01/01/85#

Показывает служащих, которые приступили к работе до 1 января 1985

Page 24: Основы  SQL MS ACCESS

Select с выражениями

SELECT ITEM_NO, DESCRIPTION, ON_HAND, COST * 1.25 AS SELL PRICE

FROM INVENTORY

Показывает описание, количество на руках и продажную цену для всех предметов на складе

Page 25: Основы  SQL MS ACCESS

Select с Functions

SELECT COUNT (*) FROM EMPLOYEE_T;

Сколько всего служащих?

Page 26: Основы  SQL MS ACCESS

Select с Functions

SELECT COUNT (ITEM_NO)FROM INVENTORY;

Сколько различных предметов в настоящее время в запасе?

Page 27: Основы  SQL MS ACCESS

Select с Functions

SELECT ITEM_NO, MIN(ON_HAND)FROM INVENTORY;

Какой предмет с наименьшим количеством запаса?

Page 28: Основы  SQL MS ACCESS

Select с Functions

SELECT ITEM_NO, MAX(ON_HAND)FROM INVENTORY;

Какой предмет с максимальным количеством на руках?

Page 29: Основы  SQL MS ACCESS

Групповые символы Групповые символы

используются, когда невозможно использовать точное совпадение. Например, можно знать первый симвло ‘C’ имени и не помните остальных.

Описатель ‘LIKE’ часто используется с групповыми символами (кроме «*»)

(*) совпадает со всем

Page 30: Основы  SQL MS ACCESS

Групповые символы

% - используется для любого номера символа; -> LIKE “C%”

_ - «_» используется для точно одного символа; -> LIKE “SMITH_”;

MS Access использует ‘*’ и ‘_’ как символы заполнитли

Page 31: Основы  SQL MS ACCESS

Операторы сравнения

Операторы сравнения аналогичны математическим

Пример:SELECT ITEM_NO, NAME

FROM INVENTORY WHERE ON_HAND > 30;

Page 32: Основы  SQL MS ACCESS

Логические операторы AND – объединяет два или

более условий и возвращает результат, если все условия истинны

OR - объединяет два или более условий и возвращает результат, если некоторое из условий истинны

NOT – отрицает любое условие Приоритет: NOT, AND, OR

Page 33: Основы  SQL MS ACCESS

Пример

SELECT ITEM_NO, ON_HANDFROM INVENTORYWHERE ON_HAND > 10AND DESCRIPTION LIKE “%bolts”OR COST < 1.00;

Page 34: Основы  SQL MS ACCESS

Описатель Distinct Используется для устранения

дублирующих значений полей в результате

Пример:

SELECT DISTINCT ITEM_NOFROM ITEM_SALES_T;

Замечание: Не доступен в дизайнере MS Access

Page 35: Основы  SQL MS ACCESS

IN и NOT IN IN и NOT IN используются для

совпадения (или несовпадения) из списка значений

Список значений может быть получен с использованием утверждения SELECT

Пример:

SELECT S_ID, SUPPLIER_NAME, PHONE

FROM SUPPLIER_TWHERE CITY IN (“Tomsk”);

Page 36: Основы  SQL MS ACCESS

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

Group By и Having

GROUP BY – Группирует строки в таблице промежуточного результата. Аналогично SORT в дизайнере.

HAVING – используется только с GROUP BY и как вторичное утверждение WHERE для задания дополнительных условий

Page 38: Основы  SQL MS ACCESS

Пример GROUP BY

SELECT STATE, COUNT (STATE)FROM SUPPLIERGROUP BY STATE;

Page 39: Основы  SQL MS ACCESS

Пример GROUP BY с HAVING

SELECT STATE, COUNT (STATE)FROM CUSTOMERGROUP BY STATEHAVING COUNT (STATE) < 100;

Определяет штаты, где меньше чем 100 клиентов

Page 40: Основы  SQL MS ACCESS

Соединение (Join) Соединение – реляционная

операция, которая объединяет 2 таблицы на основе общего домена в одну таблицу или представление Общее правило -

Для каждой их 2 таблиц, которые объединяются, должно быть по крайней мере 1 условие WHERE, которое содержит условие на общем домене.

В противном будет образовано декартово произведение таблиц.

Page 41: Основы  SQL MS ACCESS

Естественное соединение

Естественное соединение исключает дублирующие столбцы. Наиболее общее использование

соединения

SELECT ITEM.ITEM_NO, DESCRIPTIONFROM ITEM, ORDER_ITEMWHERE ITEM.ITEM_NO =

ORDER.ITEM_NO

Page 42: Основы  SQL MS ACCESS

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

Пример 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
Page 45: Основы  SQL MS ACCESS

Inner JOIN->Left OUTER JOIN-> RIGHT OUTER JOIN.

Объединение только тех записей, в которых связанные поля обеих таблиц совпадают.

Объединение всех из первой таблицы и только тех записей у которых совпадают связанные поля из второй.

Объединение только тех записей у которых совпадают связанные поля из первой

Page 46: Основы  SQL MS ACCESS
Page 47: Основы  SQL MS ACCESS

SELECT DISTINCTROW tblPtSubset.PtID, tblPtSubset.ECGCategory, tlkpECGCode.ECGDescription

FROM tblPtSubset INNER JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;

Page 48: Основы  SQL MS ACCESS

SELECT DISTINCTROW tblPtSubset.PtID, tblPtSubset.ECGCategory, tlkpECGCode.ECGDescription

FROM tblPtSubset LEFT JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;

Page 49: Основы  SQL MS ACCESS

SELECT DISTINCTROW tblPtSubset.PtID, tlkpECGCode.ECGCategory, tlkpECGCode.ECGDescription

FROM tblPtSubset RIGHT JOIN tlkpECGCode ON tblPtSubset.ECGCategory = tlkpECGCode.ECGCategory;

Page 50: Основы  SQL MS ACCESS
Page 51: Основы  SQL MS ACCESS

Соединение нескольких таблиц

Синтаксис объединения множества таблиц следующий:

FROM (…table1 Join table2 on условиеА) Join table3 on условиеВ) Join…)

Page 52: Основы  SQL MS ACCESS

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

Self Joins

Page 54: Основы  SQL MS ACCESS

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