Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование БД: привилегии (DCL) Определение структуры БД (DDL) Определение структуры БД (DDL) Манипулирование данными (DML) Манипулирование данными (DML) Транзакции (TCL). Уровни изоляции Транзакции (TCL). Уровни изоляции
Язык Data Control Language (DCL) Как и DDL, очень зависит от СУБД. Ниже – Oracle: Как и DDL, очень зависит от СУБД. Ниже – Oracle: Создание пользователей и схем Создание пользователей и схем create user IVANOV identified by a123 create user IVANOV identified by a123 при первом DDL-операторе создается схема IVANOV при первом DDL-операторе создается схема IVANOV проверка: select * from all_users проверка: select * from all_users Назначение привилегий и ролей Назначение привилегий и ролей grant to IVANOV grant to IVANOV =connect – для соединения и простейших действий =connect – для соединения и простейших действий =resource – для выполнения DDL =resource – для выполнения DDL =unlimited tablespace – чтобы не вводить квоты =unlimited tablespace – чтобы не вводить квоты =select any table – для чтения чужих таблиц =select any table – для чтения чужих таблиц revoke from IVANOV revoke from IVANOV Удаление пользователей (вместе со схемами) Удаление пользователей (вместе со схемами) drop user IVANOV cascade //схема тоже удаляется drop user IVANOV cascade //схема тоже удаляется
Язык Data Definition Language (DDL) Как и DCL, очень зависит от СУБД. Ниже – Oracle: Как и DCL, очень зависит от СУБД. Ниже – Oracle: Создание таблиц (а также view, sequence,..) Создание таблиц (а также view, sequence,..) create table EMP (EMP_ID int primary key,NAME varchar(50) unique not null, BOSS_ID int, DEPT_ID int references DEPT) create table EMP (EMP_ID int primary key,NAME varchar(50) unique not null, BOSS_ID int, DEPT_ID int references DEPT) create view MANAGERS as select e.NAME, d.NAME from EMP e, EMP b, DEPT d where e.DEPT_ID=d.DEPT_ID and e.BOSS_ID=b.EMP_ID and e.DEPT_IDb.DEPT_ID //менеджеры отделов – те, чей начальник не работает в их отделе create view MANAGERS as select e.NAME, d.NAME from EMP e, EMP b, DEPT d where e.DEPT_ID=d.DEPT_ID and e.BOSS_ID=b.EMP_ID and e.DEPT_IDb.DEPT_ID //менеджеры отделов – те, чей начальник не работает в их отделе create sequence EMP_SEQ //чтобы автоматически присваивать уникальные значения ID: insert into EMP values (EMP_SEQ.nextval,... create sequence EMP_SEQ //чтобы автоматически присваивать уникальные значения ID: insert into EMP values (EMP_SEQ.nextval,... create index EMP_I1 on EMP(DEPT_ID) create index EMP_I1 on EMP(DEPT_ID) Изменение таблиц, в т.ч. добавление ограничений Изменение таблиц, в т.ч. добавление ограничений alter table EMP add (SALARY number(8,2) default 0) alter table EMP add (SALARY number(8,2) default 0) alter table EMP add (foreign key (BOSS_ID) references EMP (EMP_ID) on delete cascade) //удалять босса вместе с подч. alter table EMP add (foreign key (BOSS_ID) references EMP (EMP_ID) on delete cascade) //удалять босса вместе с подч. Удаление таблиц (и других объектов БД) Удаление таблиц (и других объектов БД) drop table EMP cascade constraints //связи тоже удаляются drop table EMP cascade constraints //связи тоже удаляются
Data Manipulation Language (DML) Наполнение таблиц Наполнение таблиц insert into EMP (EMP_ID, NAME, SALARY) values (EMP_SEQ.NEXTVAL, Ivan Frolov, 2000) insert into EMP (EMP_ID, NAME, SALARY) values (EMP_SEQ.NEXTVAL, Ivan Frolov, 2000) проверка: select * from EMP where DEPT_ID is null проверка: select * from EMP where DEPT_ID is null Модификация ячеек Модификация ячеек update EMP set SALARY=SALARY*1.1 where EMP_ID=1 update EMP set SALARY=SALARY*1.1 where EMP_ID=1 Удаление строк Удаление строк delete from EMP where DEPT_ID = 123 delete from EMP where DEPT_ID = 123 Для справки: получение метаинформации о БД Для справки: получение метаинформации о БД какие есть таблицы: select table_name from user_tables какие есть таблицы: select table_name from user_tables информация о таблице (SQL Plus): desc[ribe] EMP информация о таблице (SQL Plus): desc[ribe] EMP
Transaction Control Language (TCL) Транзакция – неделимая последовательность операторов, имеющих смысл лишь вместе Транзакция – неделимая последовательность операторов, имеющих смысл лишь вместе Фиксация и откат транзакций Фиксация и откат транзакций commit и rollback [имя] //бывает режим autocommit commit и rollback [имя] //бывает режим autocommit savepoint имя (Oracle) – для отката части транз. savepoint имя (Oracle) – для отката части транз. Уровни изоляции транзакций – 4 (в Oracle 2) Уровни изоляции транзакций – 4 (в Oracle 2) Serializable – транзакция не видит изменений, сделанных после ее начала, даже заcommitенных Serializable – транзакция не видит изменений, сделанных после ее начала, даже заcommitенных Read committed - транзакция обнаруживает данные, заcommitенные после ее начала Read committed - транзакция обнаруживает данные, заcommitенные после ее начала set transaction isolation level serializable set transaction isolation level serializable