Основы реляционных баз данных Лекция 6. Введение в SQL Желенкова Ольга Петровна, с.н.с. ОИ САО РАН, к.ф.-м.н апреля 2008
Операторы SQL DDL (Data Definition Language) - операторы определения объектов базы данных DML (Data Manipulation Language) - операторы манипулирования данными Операторы защиты и управления данными
DDL CREATE TABLE - создать таблицу ALTER TABLE - изменить таблицу DROP TABLE - удалить таблицу CREATE VIEW - создать представление DROP VIEW - удалить представление
Объекты СУБД Oracle База данных (datebase), Таблица (table), Представление (view) Индекс (index), Последовательность (sequence) Процедура (procedure), функция (function), пакет(package) Триггер (trigger), ограничение (constrain) Синоним (synonym), кластер (cluster) Связь (database link) Пользователь (user), роль (role)
DML SELECT - отобрать строки из таблиц INSERT - добавить строки в таблицу UPDATE - изменить строки в таблице DELETE - удалить строки в таблице COMMIT - зафиксировать внесенные изменения ROLLBACK - откатить внесенные изменения
GRANT - предоставить привилегии пользователю или приложению на манипулирование объектами REVOKE - отменить привилегии пользователя или приложения
CREATE TABLE CREATE TABLE STUDENT (ID INTEGER, NAME CHAR (70), COURSE VARCHAR2 (200), GROUP INTEGER);
INSERT - вставка строк в таблицу INSERT INTO P (PNUM, PNAME) VALUES (4, "Иванов"); UPDATE - обновление строк в таблице UPDATE P SET PNAME = "Пушников WHERE P.PNUM = 1; DELETE - удаление строк в таблице DELETE FROM P WHERE P.PNUM = 1;
SELECT SELECT * FROM P; SELECT P.NAME FROM P; SELECT * FROM P WHERE P.PNUM > 2; SELECT DISTINCT P.NAME FROM P; SELECT TOVAR.TNAME, TOVAR.KOL, TOVAR.PRICE, TOVAR.KOL*TOVAR.PRICE AS SUMMA FROM TOVAR;
SELECT PD.PNUM, PD.DNUM, PD.VOLUME FROM PD ORDER BY DNUM; SELECT PD.PNUM, PD.DNUM, PD.VOLUME FROM PD ORDER BY DNUM ASC, VOLUME DESC; SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P, PD WHERE P.PNUM = PD.PNUM; SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P JOIN PD USING PNUM;
SELECT P.PNUM, P.PNAME, P.PSTATUS, D.DNUM, D.DNAME, D.DSTATUS FROM P, D WHERE P.PSTATUS >= D.DSTATUS; SELECT P1.PNAME AS PNAME1, P1.PSTATUS AS PSTATUS1, P2.PNAME AS PNAME2, P2.PSTATUS AS PSTATUS2 FROM P P1, P P2 WHERE P1.PSTATUS1 > P2.PSTATUS2;
Использование агрегатных функций в запросах SELECT COUNT(*) AS N FROM P; SELECT SUM(PD.VOLUME) AS SM, MAX(PD.VOLUME) AS MX, MIN(PD.VOLUME) AS MN, AVG(PD.VOLUME) AS AV FROM PD; SELECT PD.DNUM, SUM(PD.VOLUME) AS SM GROUP BY PD.DNUM; SELECT PD.DNUM, SUM(PD.VOLUME) AS SM GROUP BY PD.DNUM HAVING SUM(PD.VOLUME) > 400;