Синтаксис создания ролей в Oracle также схож с синтаксисом создания пользователей.
-- создание ролиCREATE ROLE rolename; -- роль с паролемCREATE ROLE rolename IDENTIFIED BY pswd; -- добавление права ролиGRANT select ON tblname TO rolename; -- добавление роли пользователюGRANT rolename TO username; -- уничтожение ролиDROP ROLE rolename;
Роли MySQL
MySQL пока не поддерживает ролей.
Файловый вывод/ввод
Большинство программ, работающих с БД, позволяют сохранять выборки в различных форматах, но не все позволяют сохранить в виде простого текстового файла. Например, была ситуация, когда в БД была необходимая информация о сотрудниках (более тысячи человек) для одной стандартной формы. А формат файла, описывающий эту форму, оказался текстовым. Поэтому проблема решилась выборкой в файл и вставкой его содержимого в файл формы. А соответствующий отдел был избавлен от лишней работы. Для конкретности примера, воспользуемся следующей таблицей с данными.
-- таблица цветовcreate table colors(id integer,cname varchar(45), constraint pk_colors primary key (id)); insert into colors values(1,'красный');insert into colors values(2,'синий');insert into colors values(3,'зеленый');insert into colors values(4,'белый');insert into colors values(5,'черный');commit;
Oracle
В Oracle вывод в файл реализуется с помощью команды SQL plus spool. Она служит как для начала вывода в файл, так и для остановки. По умолчанию расширение файла lst.
-- открываем вывод в файлspool c:\\myfile; -- выборкаselect t.id || ' ' || t.cname from colors t; -- закрываем вывод в файлspool off;
Так как это не SQL команда, то ее нельзя использовать внутри PL/SQL блока, но можно поместить блок между этими командами. По этой же причине, чтобы выполнить этот пример в PL/SQL developer, нужно открыть Command window.
На некоторых операционных системах поддерживается дополнительный параметр out, позволяющий сразу распечатать выборку на принтере установленном по умолчанию.
-- открываем вывод в файлspool c:\myfile; -- выборкаselect t.id || ' ' || t.cname from colors t; -- закрываем вывод файл и распечатываемspool out;
MySQL
В MySQL данная задача реализована аналогично сохранению выборки в списке переменных в команде select.
select *into outfile 'c:/myfile.lst' -- указываем файлfields terminated by ',' -- разделитель полейenclosed by '"' -- заключить каждое поле между "lines terminated by '\\n' -- разделитель строкиfrom colors;
Если какой-либо разделитель не нужен, то его определение можно опустить. В отличие от Oracle здесь нельзя вывести более одной выборки в один файл.
Команда LOAD DATA INFILE является обратной и позволяет загрузить данные из файла в таблицу.
Например пусть есть файл myfile.lst, со следующим содержимым в обычной для Windows русской кодировке.
"50", "светло-коричневый""51", "темно-коричневый"
Тогда загрузить данные можно следующей командой.
load data infile 'c:/myfile.lst' ignore -- пропускаем если данные уже в таблице into table colors character set cp1251 -- кодировка исходного файла fields terminated by ',' -- разделитель полей enclosed by '"' -- поле заключено между " lines terminated by '\\n'; -- разделитель строки
Если таблица colors использует другую кодировку, например utf-8, данные преобразуются корректно.