БАЗЫ ДАННЫХ ЛЕКЦИЯ 12. тема: ОСНОВЫ ЯЗЫКА SQL Общие сведения SQL структурированный язык запросов (Structured Query Language)

Презентация:



Advertisements
Похожие презентации
Лекция 16 Лекция 16 Основы SQL. Описание отношений, доменов, ограничений целостности, представлений данных. Реализация операций реляционной алгебры в SQL.
Advertisements

Языки манипулирования данными. Общая характеристика Язык, в котором можно (по крайней мере) моделировать исчисление с переменными- кортежами, либо, что.
1 БАЗЫ ДАННЫХ Использование SQL для построения запросов. ЗАНЯТИЕ 6 ПУГАЧЁВ Ю.В. Учитель информатики Харьковская общеобразовательная школа І-ІІІ ступеней.
Лекция 3 Домены Ограничения на значения столбцов Создание, изменение и удаление таблиц Ключи и ссылочная целостность Защита таблиц.
1 TRANSACT-SQL. Лекция 3. © Куркурин Николай Дмитриевич. (906) Microsoft SQL Server 2000.
Базы данных Преподаватель: Свяжин Сергей Олегович.
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Процедуры Базы данных: учебный курс Некоторые операции, рассматриваемые как неделимые, трудно выразить с помощью одного запроса к БД. Примеры: занести.
Материал для самостоятельной проработки. Операции реляционной алгебры.
СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
Реляционная модель данных Разработана Е.Ф.Коддом (E.F.Codd) в 1970 г.
Вставка INSERT INTO table (column, column,...) VALUES (expr, expr...) LOAD DATA INFILE "C:\\tmp\\file.txt" INTO TABLE table.
История развития языка SQL Structured Query Language ɛ skju ɛ l ɛ skju ɛ l или si:kwəlsi:kwəl DML (Data Manipulation Language) DDL (Data Definition Language)
1 Основы SQL: MySQL Будем использовать MySQL СУБД с открытым кодом Бесплатная версия (Community Edition) – на В Linux-дистрибутивах.
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
Тема 1. Базы данных специального назначения Лекция 3: Реляционная алгебра. Реляционное исчисление. Средства языка SQL. Учебные цели занятия: Сформировать.
Введение в язык SQL DDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language) TCL (Transaction Control Language)
CREATE TABLE Ident_table ( ID int IDENTITY(1, 1), some_values varchar(50)); IDENTITY [ ( seed, increment ) ]
Транксрипт:

БАЗЫ ДАННЫХ ЛЕКЦИЯ 12

тема: ОСНОВЫ ЯЗЫКА SQL

Общие сведения SQL структурированный язык запросов (Structured Query Language)

Стандарты SQL SQL-1 SQL-89 SQL-2 SQL-92

Диалекты SQL Диалект – некоторое подмножество стандарта SQL Каждый диалект включает некоторое расширение стандартного SQL

Определение данных СОЗДАНИЕ ТАБЛИЦ CREATE TABLE имяТаблицы (описаниеСтолбца,… [ограничение целостности,…]) описаниеСтолбца :: = имяСтолбца типСтолбца [(размер)] [ограничение целостности]

Определение данных ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ 1) Ограничение первичного ключа PRIMARY KEY (Столбец,…) CONSTRAINT PK_s_no PRIMARY KEY (s_no) 2) Ограничение ключа-кандидата UNIQUE (Столбец)

Определение данных ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ 3) Ограничение внешнего ключа FOREIGN KEY (Столбец,…) REFERENCES имяРодительскойТаблицы [(столбцы потенциального ключа)] Задание правил ссылочной целостности ON DELETE (RESTRICT, CASCADE, NO ACTION) ON UPDATE (RESTRICT, CASCADE, NO ACTION)

Определение данных ОГРАНИЧЕНИЕ ОБЯЗАТЕЛЬНОСТИ NULL / NOT NULL ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ DEFAULT (Значение) ПРОВЕРКА ЗНАЧЕНИЯ CHECK (Условие)

Определение данных

CREATE TABLE s ( s_no INT IDENTITY(1,1) PRIMARY KEY, sname CHAR(10) NOT NULL, city CHAR(15) NOT NULL, status INT ) CREATE TABLE p ( p_no INT IDENTITY(1,1) PRIMARY KEY, pname CHAR(10) NOT NULL, city CHAR(15) NOT NULL, color CHAR(10), weight INT ) CREATE TABLE sp ( s_no INT, p_no INT, qty INT, PRIMARY KEY(s_no, p_no), FOREIGN KEY(s_no) REFERENCES s(s_no) ON UPDATE CASCADE, FOREIGN KEY(p_no) REFERENCES p(p_no) ON UPDATE CASCADE )

Определение данных УДАЛЕНИЕ ТАБЛИЦ DROP TABLE имяТаблицы УДАЛЕНИЕ СТОЛБЦОВ DROP имяСтолбца RESTRICT/CASCADE УДАЛЕНИЕ ОГРАНИЧЕНИЙ DROP CONSTRAINT имяСтолбца RESTRICT/CASCADE

Выборка данных SELECT список_столбцов_результата FROM базовая_таблица WHERE условие_отбора_строк GROUP BY критерий_группирования_строк HAVING условие_отбора_групп ORDER BY критерий_сортировки_результата

Выборка данных Извлечь все сведения о товарах SELECT * FROM p SELECT p_no, pname, weight, city, color FROM p SELECT p.p_no, p.pname, p.weight, p.city, p.color FROM p

Выборка данных Извлечь сведения о поставщиках из Парижа или Лондона со статусом от 20 до 30 с упорядочиванием результата по именам поставщиков SELECT * FROM s WHERE (city=London OR city = Paris) AND status BETWEEN 20 and 30 ORDER BY sname ASC DESC SELECT * FROM s WHERE city IN (London, Paris) AND status BETWEEN 20 and 30 ORDER BY sname ASC DESC

Выборка данных Извлечь сведения о поставщиках из Парижа или Лондона со статусом от 20 до 30 с упорядочиванием результата по городам, а внутри города по статусам, а для одинаковых значений статуса – по номерам поставщиков SELECT * FROM s WHERE city IN (London, Paris) AND status BETWEEN 20 and 30 ORDER BY city, status, s_no

Выборка данных Извлечь номера всех поставщиков, поставляющих товары SELECT s_no FROM sp Без дубликатов SELECT DISTINCT s_no FROM sp

Выборка данных с вычислением результата Перечень товаров с указанием номера, названия и веса в килограммах SELECT p_no, pname, weight*0.001 as kg

СТАТИСТИЧЕСКИЕ ФУНКЦИИ SUM (числПоле) MIN (числПоле) MAX(числПоле) AVG(числПоле) COUNT(числПоле) – без учета дубликатов COUNT(*) – подсчет числа строк группы (с учетом дубликатов).

Выборка данных из нескольких таблиц Задача: извлечь сведения о поставщиках, поставляющих товары с указанием номера, имени поставщика, номера товара, количества поставляемых товаров этого номера SELECT s.s_no, s.sname, sp.p_no, sp.qty FROM s,sp (декартово произведение этих таблиц)

Выборка данных из нескольких таблиц Задача: извлечь сведения о поставщиках, поставляющих товары с указанием номера, имени поставщика, номера товара, количества поставляемых товаров этого номера SELECT s.s_no, s.sname, sp.p_no, sp.qty FROM s,sp WHERE s.s_no=sp.s_no (эквисоединение)

Способы соединения таблиц Список таблиц в FROM, условие соединения – во фразе WHERE Запись во фразе FROM с использованием операции JOIN (SQL92) (s JOIN sp ON s.s_no=sp.s_no)

Внешнее соединение таблиц RIGHT Outer Join LEFT Outer Join FULL Outer Join

Сравнение множеств Задача: извлечь сведения о поставщиках, поставляющих все товары, содержащиеся в таблице s. SELECT * FROM s WHERE NOT EXISTS ( SELECT * FROM p WHERE p_no NOT IN( SELECT p_no FROM sp WHERE sp.s_no=s.s_no )

Сравнение множеств Задача: извлечь список поставщиков, поставляющих по крайней мере все те товары, которые поставляет поставщик s2. SELECT * FROM s WHERE NOT EXISTS( SELECT * FROM sp WHERE sp.s_no=s2 AND p_no NOT IN ( SELECT p_no FROM sp WHERE s_no=s.s_no )

Ведение баз данных 1. Вставка записи в таблицу INSERT INTO ИмяТаблицы [(список столбцов)] – по умолчанию – все столбцы таблицы в естественном порядке VALUES (список значений) – в соответствии со списком столбцов. 2. Удаление строк из таблицы DELETE FROM имяТаблицы WHERE условие – определяет те записи, которые удаляются. Если нет WHERE, то удаляются все строки из таблицы 3. Изменение строк таблицы UPDATE имяТаблицы SET имяСтолбца = Значение, … WHERE условие – задает строки, которые будут изменены.

Виртуальные таблицы CREATE VIEW имяПросмотра AS SELECT … – формирует содержимое виртуальной таблицы на основе реальной таблицы или дргуих просмотров.

Хранимые процедуры CREATE PROCEDURE CHAR(5) CHAR(15) CHAR(15) INT OUTPUT AS /тело @status=status FROM s WHERE

Триггер CREATE TRIGGER Check_sp_ins ON sp FOR INSERT AS INT BEGIN TRANSACTION FROM INSERTED, = status FROM s WHERE = count(*) FROM sp WHERE BEGIN COMMIT TRANSACTION END ELSE BEGIN RAISERROR( Too many parts,16,1) ROLLBACK TRANSACTION END