ГоловнаКаталогБлогРейтингЕ-Пошта 
 
 
Зробити домашньою у вибране  

  Інші функції  
Описані в цьому розділі функції не можна віднести ні до однієї з вище перелічених категорій.

BENCHMARK
BIT_COUNT
BIT_LENGTH
CONNECTION_ID
DATABASE
FOUND_ROWS
GET_LOCK
INET_ATON
INET_NTOA
IS_FREE_LOCK
LAST_INSERT_ID
LOAD_FILE
MASTER_POS_WAIT
RELEASE_LOCK
SESSION_USER
SYSTEMUSER
USER
VERSION


BENCHMARK

BENCHMARK(n,expr)

Розраховує вираз expr число разів, визначене аргументом n. Особливість функції BENCHMARK() полягає в тому, що вона призначена для використання в клієнтських програмах mysql. Вона завжди повертає значення 0,яке ніякого інтересу не представляє. Основний інтерес представляє час, що виводиться програмою mysql після відображення результатів запиту.

mysql>SELECT BENCHMARK(100000,PASSWORD('secret'));
--------------------------------
BENCHMARK(100000,PASSWORD('secret'))
--------------------------------
0
--------------------------------
1 row in set (2.3S sec)

Цей час є тільки приблизним індикатором швидкості обчислень, оскільки відображає час обробки для клієнта, а не окремий час обробки запиту процесором сервера. На це значення часу можуть впливати такі чинники: швидкість завантаження на сервері, чи знаходиться сервер в активному стані або завантажений у момент отримання запиту і т.д. Цю функцію бажано запускати кілька разів, щоб оцінити постійність повертаємого значення.

Функція BENCHMARK() вперше з'явилася в MySQL 3.22.15.


BIT_COUNT

BIT_COUNT(n)

Повертає число визначених аргументом розрядів, яке обробляється як значення типу BIGINT (64-розрядне ціле значення).

BIT_COONT(0) => 00
BIT_COUNT(1) => 1
BIT_COUNT(2) => 1
BIT_COUNT(7) => 3
BIT_COUNT(-1) => 64
BIT_COUNT(NULL) => NULL


BIT_LENGTH

BIT_LENGTH(str)

Ця функція повертає довжину рядка str в бітах або порожнє значення, якщо аргумент рівний "NULL".

BIT_LENGTH ('abc') => 24
BIT_LENGTH('а long string') => 104

Ця функція BIT_LENGTH() була додана в MYSQL 4.0.2 для забезпечення ODBC-сумісності.



CONNECTION_ID

CONNECTION_ID()

Повертає ідентифікатор з'єднання поточного з'єднання. Це ідентифікатор процесу, який сервер асоціює із з'єднанням клієнта.

CONNECTION_ID() => 10146

Функція
CONNECTION_ID() вперше з'явилася в MYSQL 3.23.14.


DATABASE

DATABASE()

Повертає рядок з ім'ям поточної бази даних або порожній рядок, якщо поточна база даних не задана.

DATABASE() =>'sampdb'


FOUND_ROWS

FOUND_ROWS()

Повертає кількість рядків, які повинен повернути попередній оператор SELECT без виразу LIMIT. Наприклад, наступний оператор повертає максимум 10 рядків.

mysql> SELECT * FROM mytbl LIMIT 10;

Для того, щоб дізнатися, скільки рядків повинен повернути оператор, якщо не задавати пропозицію LIMIT, досить зробити наступне:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM mytbl LIMIT 10;
mysql> SELECT FOUND_ROWS();

Функція
FOUND_ROWS() була вперше додана в MYSQL 4.0.0.


GET_LOCK

GET_LOCK(str, timeout)

Функція
GET_LOCK() використовується разом з функціями RELEASE_LOCK() і IS_FREE_LOCK() для встановленя і зняття блокування. Ці дві функції можна застосовувати при створенні додатків,що взаємодіють один з одним по імені блокування.

Функція GET_LOCK() викликається разом з ім'ям блокування, вказаним в рядку str, і значенням періоду, аргументом timeout, що задається, в секундах. Ця функція повертає значення 1, якщо блокування встановлене на протязі заданого періоду, або значення 0, якщо блокування встановлено не було. Виникнення помилки в процесі роботи функції призводить до повернення значення NULL. Значення timeout визначає, скільки часу необхідно чекати до спроби установки блокування (але не період часу, після досягнення якого блокування знімається). Після встановлення блокування залишається постійно активізоване до моменту розблокування користувачем. Наприклад,наступна функція встановлює блокування з ім'ям 'Nellie', чекаючи 10 секунд:

GET_LOCK('Nellie',10)

Блокування може застосовуватись тільки до рядка. Неможливо заблокувати базу даних, таблицю, який-небудь рядок або стовпець в межах таблиці. Іншими словами, блокування не заборонить іншому клієнту вносити зміни в таблиці бази даних. Саме тому блокування за допомогою функції GET_LOCK() є тільки поверхневим — інші клієнти можуть легко визначити, чи було встановлено яким-небудь користувачем блокування. Клієнт, що встановив блокування на ім'я, не дозволяє іншим клієнтам заблокувати це ж ім'я (або подібні спроби інших потоків багатопотокового клієнта, який підтримує декілька з'єднань з сервером.) Припустимо, наприклад, що клієнт 1 блокує рядок "Nellie". Якщо клієнт 2 намагається блокувати цей самий рядок, вона виявиться недоступною до тих пір, поки клієнт 1 не зніме блокування або поки не закінчиться час заданого ним періоду. У першому випадку клієнт 2 згодом зможе успішно встановити блокування, а в останньому випадку його спіткає невдача. Оскільки два клієнти не можуть блокувати даний рядок одночасно, додатки, що звертаються до даних по іменах, можуть використовувати стан блокування цього імені як індикатор доступності або недоступності рядка. Наприклад, можна створити ім'я блокування, засноване на значенні унікального ключа для рядка в таблиці, що дозволить виконувати сумісне його блокування. Блокування знімається тільки викликом функції RELEASE_LOCK() з вказівкою імені блокування:

RELEASE_LOCK('Nellie')

Функція RELEASE_LOCK() повертає значення 1, якщо блокування зняте успішно, або значення 0, якщо блокування встановлене іншим з'єднанням (знімаються тільки власні блокування). Якщо блокування із заданим ім'ям не існує, функція повертає значення NULL.

Розрив клієнтського з'єднання або повторний виклик функції GETLOCK() призводить до автоматичного зняття блокування (один клієнт в змозі заблокувати тільки один рядок в певний момент часу). В останньому випадку старе блокування знімається до встановлення нового, навіть якщо ім'я нового блокування подібно до імені старого.Блокування також знімається при розриві з'єднання клієнта і сервера. Відмітимо, що якщо цей клієнт з дуже тривалим з'єднанням розриває з'єднання по тайм-ауту із-за тривалого періоду неактивності, будь-яке блокування, установленая даним клієнтом, буде знято.

Функцію GETLOCK(str, 0) можна також використовувати для визначення, чи встановлена у нинішній момент часу блокування на рядок str. (Якщо цей рядок не заблокований, то виклик даної функції приведе до установки блокування. У такому випадку слід обов'язково викликати функцію RELEASE_LOCK().)

Для перевірки стану блокування імені можна викликати функцію IS_FREE_LOCK(str), що повертає 1, якщо ім'я доступне (не використовується в блокуваннях); 0, якщо ім'я заблоковане, або NULL, якщо виникла помилка. Всі три функції повертають значення NULL, якщо аргумент імені блокування рівний "NULL".


INET_ATON

INET_ATON(str)

Для заданої IP-адреси, представленої в традиційному вигляді рядка з розділеними крапками тетрадами, повертає цілочисельне представлення адреси або значення "NULL", якщо аргумент не є допустимою IP-адресою.

INET_ATON ('64.28.67.70') => 1075594054
INET_ATON ('25S.255.2SS.2SS') => 4294967295
INET_ATON ('256.255.255.255') => NULL
INET_ATON ('www.mysql.com') => NULL

Функція INET_ATON() з'явилася в MYSQL 3.23.15.


INET_NTOA

INET_NTOA(n)

Для заданого цілочисельного представлення IP-адреси, представленої у вигляді рядка з розділеними крапками тетрадами, повертає відповідне представлення IP-адреси у вигляді рядка з розділеними крапками тетрадами або значення "NULL", якщо аргумент не є допустимою IP-адресою.

INET_NTOA (1075594054) => '64.28.67.70'
INET_NTOA (2130706433) => '127.0.0.1'

Функція
INET_NTOA() з'явилася в MYSQL 3.23.15.


IS_FREE_LOCK

IS_FREE_LOCK(str)

Перевіряє стан блокування, заданим рядком str.Функція IS_FREE_LOCK() використовується спільно з функцією GET_LOCK(). Докладніше про блокування можна дізнатися в описі функції GET_LOCK().

Функція IS_FREE_LOCK() з'явилася в MYSQL 4.O.2.



LAST_INSERT_ID

LAST_INSERT_ID()
LAST_INSERT_ID(expr)

Перша форма цієї функції (без аргументу) повертає значення AUTO_INCREMENT, яке було згенеровано останнім під час поточного сеансу роботи сервера, або значення 0, якщо таке значення згенеровано не було.

Друга форма цієї функції
LAST_INSERT_ID() призначена для використання в операторі UPDATE. Результат її обробляється таким же чином, як і автоматично створене значення.

Детальніше про цю функцію розповідається в розділі 2, "Робота з даними в MYSQL". Результуюче значення обох форм функції LAST_INSERT_ID() зберігається сервером для кожного з'єднання окремо і не може бути змінено іншими клієнтами, навіть задаючими автоматичне створення нових значень.

Форма функції LAST_INSERT_ID() з аргументом вперше з'явилася в MYSQL 3.22.9.


LOAD_FILE

LOAD_FILE(file_name)

Зчитує файл file_name і повертає його склад у вигляді рядка.Файл повинен розташовуватися на сервері і визначається за допомогою абсолютного (повного) імені шляху.Крім того,цей файл повинен бути відкритим для загального доступу,оскільки спроба прочитання захищеного файлу обов'язково завершиться невдачею.Розміщення файлу на сервері вимушує використовуючого функцію користувача мати привілей FILE. Якщо хоч би одна з цих умов не виконується, функція
LOAD_FILE() повертає значення NULL.

Функція LOAD_FILE() вперше з'явилася в MYSQL 3.23.0.


MASTER_POS_WAIT

MASTER_POS_WAIT(log_file,pos)

Ця функція використовується для тестування головного сервера реплікації.Він блокує головний сервер до тих пір, поки сервер не досягне заданого місця в реєстраційному файлі.Якщо підлеглий сервер вже досяг цієї позиції, функція повертає значення, якщо підлеглий сервер не працює, головний блокується до тих пір, поки підлеглий не буде запущений і не досягне заданого положення. Функція MASTER_POS_WAIT() повертає кількість подій реєстраційного файлу, які він повинен чекати до тих пір, поки підлеглий не досягне вказаного положення, або "NULL", якщо виникає помилка або інформація головного сервера не ініціалізувалася.

Функція MASTER_POS_WAIT() була додана в MYSQL 3.23.32.


RELEASE_LOCK

RELEASE_LOCK(str)

Функція RELEASE_LOCK() використовується разом з функцією GET_LOCK().Детальніше про неї розпові дається в описі функції GET_LOCK().

Функція RELEASE_LOCK() вперше з'явилася в MYSQL 3.21.7.


SESSION_USER

SESSION_USER()

Ця функція є аналогом функції
USER().


SYSTEMUSER

SYSTEMUSER()

Ця функція є аналогом функції
USER().


USER

USER()

Повертає рядок, що представляє поточне для користувача ім'я клієнта.В MYSQL 3.22.1 і в пізніших версіях цей рядок має форму "user@host", де user— ім'я користувача, а host — ім'я комп'ютера, з якого клієнт підключається до сервера.

USER() =>'sampadm@localhost'
SUBSTRING_INDEX (USER(), '@', 1) =>'sampadm'
SUBSTRING_INDEX (USER(), '@', -1) =>'localhost'

До MYSQL 3.22.1 значення, що повертається з USER(), складається тільки з імені користувача.


VERSION

VERSION()

Повертає рядок, що описує версію сервера.

VERSION() =>'4.0.3-beta-log'

Значення складається з номера версії сервера з суфіксами, які можуть включати одне з наступних значень.
-alpha, -beta або - gamma. Відображають стабільність версії MYSQL.
-debug. Означає, що сервер працює в налагоджувальному режимі.
-demo. Відображає той факт, що сервер працює в демонстраційному режимі (використовувався включно до MYSQL 3.23.30).
-embedded. Позначає вбудований сервер, libmysqld.
-log. Позначає включення процесу протоколювання.
-max. Означає, що сервер був відтрансльований з додатковими можливостями.
-nt. Сервер побудований для роботи під управлінням ОС Windows,що використовують NT-технології.




  Ім'я:
  Пароль:
Учімося рахувати. Веселі циферки-наклейки
Учімося рахувати. Веселі циферки-наклейки

APServer | SiMan CMS | Лічильник відвідувань | Тека сайтів | Рейтинг | Форум | Лінійки малюкам | PHP Builder | Download | Шаблони сторінок | Посібник Smarty | Підручник PHP | Статті/Огляди | Розробка сайтів | Банерна мережа