Выборка полей с параметрами из таблицы
Чтобы выбрать поля и все параметры по полю из таблицы достаточно воспользоваться процедурой SP_COLUMNS
Пример:
exec sp_columns [Наименование таблицы]
Чтобы выбрать поля и все параметры по полю из таблицы достаточно воспользоваться процедурой SP_COLUMNS
Пример:
exec sp_columns [Наименование таблицы]
Функция ADDDATE возвращает переданное в нее время определяемое первым параметром, с добавленным временным интервалом, который определяется вторым параметром.
Синтаксис:
ADDDATE(date, INTERVAL expr type)
У функции ADDDATE() существует синоним DATE_ADD().
Второй параметр в функции начинается ключевым словом INTERVAL, после которого следует значение и тип
этого значения.
Функция, также, допускает использование и отрицательных значений, при этом период не прибавляется а отнимается.
! Есть упрощённый формат записи функции ADDDATE(date,days) — где days — дни.
В данной публикации будут рассмотрены некоторые функции необратимого шифрования применяемые в СУБД MySQL.
Функция MD5() — производит необратимое шифрование входящих данных по алгоритму MD5 (Message-Digest Algoritm).
Функция принимает на вход строку и возвращает 128-битную контрольную сумму, вычисляемую по алгоритму MD5. Возвращаемое значение — это 32-разрядное шестнадцатиричное число, уникальное для каждой строки. Если строки отличаются хотя бы одним символом, то результат выполнения функции MD5() для этих строк будет разный, для двух одинаковых строк — результат будет всегда одинаков.
Функции AES_ENCRYPT() и AES_DECRYPT() производят симметричную шифровку и дешифровку данных с использованием алгоритма AES (Advanced Encryption Standard), при этом используется кодирование с 128-битным ключом. Есть возможность расширить до 256-бит, но как стандарт в MySQL выбран 128-битный, как достаточный по надёжности и более быстрый.
Синтаксис функций:
AES_ENCRYPT('Шифруемая строка','Ключ');
AES_DECRYPT('Дешифруемая строка','Ключ');
--Входные параметры AES_ENCRYPT() могут быть любой длины.
--Если любой из входных параметров равен NULL - то и результат выполнения тоже будет NULL.
--Ключ в AES_DECRYPT() должен совпадать с ключом в AES_ENCRYPT().
Приведем рабочий пример работы с функциями:
Ошибка возникает из-за отсутствия доступа у пользователя, для того, чтобы предоставить этот доступ, делаем так:
$ mysql -u root -p
Enter password:
mysql> use mysql
mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password';
mysql> FLUSH PRIVILEGES;
Этот запрос возвращает набор полей таблицы со всеми характеристиками. Метод также применим и замечательно работает с представлениями VIEW.
SELECT
ORDINAL_POSITION
,COLUMN_NAME
,DATA_TYPE
,CHARACTER_MAXIMUM_LENGTH
,IS_NULLABLE
,COLUMN_DEFAULT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Название таблицы'
ORDER BY
ORDINAL_POSITION ASC;
А вот так можно узнать права пользователя.
sp_HelpUser имя_пользователя
Иногда возникает необходимость, в ходе работы процедуры, удалить временно созданную таблицу которая может быть либо создана либо нет, тогда не достаточно просто написать например drop table #myTempTable — потому что в случае если таблицы не существует то запрос не выполнится и выдаст ошибку. Пример ниже показывает как правильно удалять временные таблицы в таком случае:
if exists (
select * from tempdb.dbo.sysobjects o
where o.xtype in ('U')
and o.id = object_id(N'tempdb..#myTempTable')
)
BEGIN
DROP TABLE #myTempTable;
END
Время от времени приходится общаться с СУБД FireBird и Interbase. И вот недавно возникла необходимость поиска и выбора всех вложенных элементов дерева. В моём случае необходимо было удалить все вложенные группы дерева при удалении родительской группы и в дальнейшем организовать поиск всех вложенных элементов.
Удаление можно сделать на триггерах, а вот с поиском так не прокатит. Поэтому используем рекурсивную процедуру выборки. (заранее оговорюсь, рекурсия — это вариант для небольших и не очень нагруженных БД, если база большая и нагрузка на СУБД планируется существенная, то рекурсии лучше избежать, пример того как это можно сделать будет ниже)
Давно меня интересовал этот вопрос! Как же так сделать? Вставить одним запросом в таблицу несколько строк. Дело в том, что в СУБД InterBase в отличие от множества других СУБД запрос типа:
insert into tabble1
(param1, param2)
values
(1, 'Сидоров'), (2, 'Петров'), (3, 'Иванов');
выполнить, оказывается нельзя.
Даже не знаю по какой причине, но нельзя и всё тут. Не работает такое.
Но ведь очень хочется!!!
Ведь вставка за один раз множества записей сильно экономит время, делается быстрее.
И оказывается есть таки альтернатива!
В этой публикации я рассмотрю подробно, на сколько это возможно, основные типы данных используемые в СУБД MySQL.
MySQL поддерживает несколько различных типов данных:
Числовые данные — это все целые числа (без дробной части) и вещественные числа (с дробной частью).
Строковые данные — последовательность символов, заключенная в кавычки. В MySQL в качестве стандарта используются одинарные кавычки и для совместимости с другими базами данных рекомендуется именно их использование.
Календарные данные — тип для обозначение даты и времени, принимает различные формы, например строковую «2007-11-23» или числовую 20071123. Особенностью этого типа данных является их хранение в едином внутреннем формате, что позволяет производить операции сложения и вычитания, в независимости от внешнего представления.
NULL — специальный тип данных, обозначает отсутствие информации.
Итак, теперь о каждом типе данных подробнее.