Приведение типов в MySQL

Здесь речь пойдёт об основных способах приведения типов в MySQL. Заранее следует оговорить тот момент, что в большинстве случаев приведение типов в MySQL сработает автоматически, например:

//Выполнив запрос:
select 1+'1';
//Получим результат: 2


Однако в ряде случаев требуется специальное приведение типов, о них и пойдёт речь далее.

Случай первый — Сравнение строк (ключевое слово BINARY)

В СУБД MySQL сравнение тестовых строк не зависит от регистра сравниваемых строк. Например, если мы будем сравнивать строки «Чупакабра крут» и «ЧУПАКАБРА КРУТ», то MySQL сочтёт их идентичными.

Подробнее

MSSQL Оконные функции - Пример ROWNUMBER OVER PARTITION BY

Оконные функции — это такие функции которые на основе окна (набора записей) вычисляют скалярное (одиночное) значение. Это значение определяется с помощью инструкции OVER.

Пример:

select regioncode, aolevel, offname,
 row_number() over(partition by regioncode order by aolevel, offname) as rownum
 from s_adr_fias
order by regioncode, aolevel, offname;



В данном примере будет сделана выборка в которой для каждого regioncode в поле rownum будет нумерация отсортированных значений aolevel, offname.

Подробнее

Типы и структура таблиц в MySQL

    База данных MySQL поддерживает несколько разных видов таблиц, все они имеют свои особенные возможности и ограничения.

    Начну своё описание с «родного» для баз данных MySQL типа таблиц MyISAM. Если в операторе create table не задать тип таблицы то будет назначен именно этот тип.
    Каждая MyISAM таблица хранится на диске в трёх файлах (в поддиректории каталога mysql/data), имена этих файлов совпадают с названием таблицы, а расширение может принимать одно из следующих значений:
.frm — структура таблицы, этот файл содержит информацию об именах и типах столбцов и индексов;
.MYD — в этом файле содержатся данные таблицы;
.MYI — в этом файле содержатся индексы таблицы.

Подробнее

Ресурс посвящённый строкам подключения к БД "Connection Strings"

    Не так давно наткнулся на очень полезный ресурс для всех разработчиков приложений для работы с базами данных, называется ресурс Connection Strings.

    Ресурс представляет собой сборку всевозможных строк подключения к самым различным базам данных с использованием самых разнообразный провайдеров и технологий.

    Ну просто очень полезный ресурс.
    Вот ссылка: http://www.connectionstrings.com
    Ресурс правда на английском, но для тех кому надо это я полагаю не проблема.

Подробнее

Что делать если результат выборки NULL а надо 0.

Вот такая вот задача появилась, в случае отсутствия данных в таблице результат выборки максимального значения в поле выдаст значение null, можно конечно обрабатывать полученный результат в программе, но значительно проще возложить этот функционал на скрипт.

Делается это вот так:

SELECT     (CASE WHEN MAX(ID) IS NULL THEN '0' ELSE MAX(ID) + 1 END) AS Expr1
FROM         MyTable


Теперь, если в выборке будет пусто, то-есть null, то в качестве результата выборки будет передан 0.

Подробнее

Хранение паролей в базе данных MySQL

    Самый простой способ хранить пароли в базе это положить их в таблице пользователей в открытом виде, допустим в поле с типом VARCHAR. Но при таком подходе, в случае попадания базы в руки злдоумышленника, все пароли 100% становятся ему известны.<br/>
    Чтобы этого не произошло, пароль лучше хранить в зашифрованном виде, использовав алгоритмы шифрования md5, sha1 и т.п.

Подробнее

Курсоры в MSSQL - перебор выборки в цикле.

Команды манипулирования данными SELECT, UPDATE, DELETE работают сразу с группами строк. Эти группы, вплоть до отдельных строк, можно выбрать с помощью опции WHERE. А если надо перебрать строки некоторой таблицы последовательно, одну за другой? На этот случай в языке SQL существуют курсоры. Курсор (current set of record) – временный набор строк, которые можно перебирать последовательно, с первой до последней.

При работе с курсорами используются следующие команды.

Объявление курсора: 
DECLARE имя_курсора CURSOR FOR SELECT текст_запроса
Любой курсор создается на основе некоторого оператора SELECT.

Подробнее

Важное о наименовании процедур в MySQL!

Из архива
Расскажу об одном небольшом нюансе который поможет сэкономить время и нервы. Эта особенность мною была замечена только в MySQL (проявлялась как в 5 так и пока в тестовом 6-ом). Заключается она в необходимости особого наименования процедур, для правильного восстановления базы из архива (дампа MySQL).

Смысл заключается в алфавитном порядке функций. При создании дампа базы все элементы сохраняются в алфавитном порядке, тоесть если в процедуре proc1 вызвать процедуру proc2 — то при восстановлении из дампа вылетит ошибка поскольку первой будет восстанавливаться процедура proc1 — которой требуется proc2 — но её в базе на момент воссоздания ещё не будет.

Подробнее

Установка русской кодировки на уже созданную базу данных (смена COLLATION)

Полезный пример изменения кодировки (COLLATION) на уже созданной базе данных.
В данном примере устанавливается русская кодировка: Cyrillic_General_CI_AS

USE master;
GO

-- Переводим БД в single-user mode
ALTER DATABASE [имя_базы_данных]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

-- Меняем кодировку COLLATION
ALTER DATABASE [имя_базы_данных]
COLLATE Cyrillic_General_CI_AS ;
GO

-- Переводим БД обратно в multi-user mode
ALTER DATABASE [имя_базы_данных]
SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO  
 
--Проверяем настройки COLLATION.
SELECT name, collation_name
FROM sys.databases
WHERE name = 'имя_базы_данных';
GO
Подробнее