Houston, we have a problem.

jQuery Manipulating CSS




  • addClass() - Adds one or more classes to the selected elements

  • removeClass() - Removes one or more classes from the selected elements

  • toggleClass() - Toggles between adding/removing classes from the selected elements

  • css() - Sets or returns the style attribute



jQuery css() Method
Return a CSS Property
To return the value of a specified CSS property, use the following syntax:


Set a CSS Property
To set a specified CSS property, use the following syntax:


@темы: jQuery, jQuery Учебка, Ссылки

jQuery - Remove Elements




  • remove() - Removes the selected element (and its child elements)

  • empty() - Removes the child elements from the selected element



remove() method removes the selected element(s) and its child elements
http://jsfiddle.net/9K74f/10/
http://jsfiddle.net/9K74f/13/

empty() method removes the child elements of the selected element(s)
http://jsfiddle.net/9K74f/14/

Filter the Elements to be Removed
The jQuery remove() method also accepts one parameter, which allows you to filter the elements to be removed.

The parameter can be any of the jQuery selector syntaxes.
http://jsfiddle.net/9K74f/17/

@темы: jQuery, jQuery Учебка, Ссылки

Houston, we have a problem.
Houston, we have a problem.
Houston, we have a problem.
http://ruseller.com/project.php?id=5

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



Добавим в таблицу users в бд поле для хранения аватара
ALTER TABLE users ADD avatar VARCHAR(255) NOT NULL AFTER password;

@темы: MySQL, PHP, Создание регистрации на сайте на PHP + MySQL, Ссылки

Houston, we have a problem.

Протокол HTTP



Буферизированный вывод



Самый простой способ установить буферизацию вывода - воспользоваться
директивой output_buffering конфигурационного файла php.ini, установив
ее значение равной on ( winginx\php5\php.ini ).

К счастью, РНР предоставляет альтернативный способ управления буфериза­ций
вывода. Для этого предназначены функции группы управления выводом.



Размер и тип документа


Формирование НТТР-заголовка Content-length


Изменение типа файла


Подавление кэширования






Управление временем кэширования документа


@темы: PHP, Протокол HTTP

12:47

CSS Beautify

Houston, we have a problem.
CSS Beautify automatically formats your style to be consistent and easy to read
http://cssbeautify.com/

@темы: Верстка, CSS, CSS Beautify, Ссылки

Houston, we have a problem.

Протокол HTTP



Функции для работы с HTTP-заголовками



В ответ на запрос к серверу клиент получает HTTP-документ, который состоит
из HTTP-заголовков и тела документа, содержащего, как правило, HTML­
страницу или изображение.

Функции для управления НТТР-заголовками


header () Отправляет НТТР-заголовок
headers_list () Возвращает список отправленных или готовых к отправке НТТР-заголовков
headers_sent () Проверяет, отправлены ли НТТР-заголовки

Функция header (), позволяющая отправить клиенту произвольный НТТР­
заголовок, имеет следующий синтаксис:
header ( $header [, $replace [, $http_response_code ]])
Данная функция отправляет НТТР-заголовок $header. Второй параметр
$replace определяет поведение интерпретатора РНР, если тот встречает два
одинаковых заголовка: если параметр принимает значение true, отправляет­ся
последний заголовок, в противном случае - отправляется первый заголо­вок.
Третий параметр $http_response_code позволяет задать код возврата НТТР.
Простейшей процедурой, которую можно осуществить при помощи функции
header ( ), является переадресация, осуществляемая при помощи НТТР­
заголовка Location.



Переадресация средствами HTML



Если в качестве второго параметра передать функции header () значе­ние
true, то все предыдущие НТТР-заголовки с таким же именем будут
заменяться последующими.


На каждый запрос клиента сервер может возвращать HTTP-код состояния,
отражающий вид переадресации при окончательном или временном переме­щении
документа. Если документ найден и успешно отправлен клиенту, в
НТТР-заголовки помещается код состояния 200; если документ не найден - 404; в случае переадресации клиенту отправляется код состояния 302 - "ресурс временно перемещен ", иногда бывает
полезно изменить код состояния на 301 - "ресурс перемещен постоянно".



В ряде случаев нельзя быть заранее уверенным, отправлены НТТР-заголовки
или все еще имеется возможность использовать функцию header().
Чтобы выяснить это, можно воспользоваться функцией headers_sent ( ), которая
имеет следующий синтаксис:
bool headers_sent ( &$file [, &$line ] ])
Функция возвращает false, если НТТР-заголовки не были отправлены кли­енту, и true - в противном случае.



Выведет

Hello
Передача HTTP-документа начата в файле C:\Winginx\home\test3\public_html\index-2.php в строке 2. Поэтому перенаправление на другой ресурс невозможно.


Иногда бывает полезно проконтролировать, какие НТТР-заголовки были
от­правлены клиенту . Для этого удобно воспользоваться функцией
headers_list (), которая имеет следующий синтаксис:
array headers_list ()



Выведет

Array
(
[0] => X-Powered-By: PHP/5.3.27
[1] => X-my-header: Hello world!
)


@темы: PHP, Протокол HTTP

Houston, we have a problem.

РНР и MySQL



Библиотека php_mysql предоставляет классически й файловый интерфейс к СУБД MySQL.

При работе с MySQL из РНР используются два вида дескрипторов:
дескриптор соединения - идентифицирует соединение с сервером.
дескриптор результирующей таблицы - предназначен для доступа к
результату выполнения запроса.

В первую очередь следует установить соединение с сервером при
помощи функции mysql_connect(), которая имеет следующий синтаксис:
resource mysql_connect([ $ server [, $username [, $password
[, $new_link [, $client_flags] ]]]])



После того как соединение установлено, необходимо выбрать базу данных при
помощи функции mysql_select_db()
bool mysql_select_db($database_name [, $link_identifier] )


После того как соединение установлено и выбрана база данных, с которой
будет осуществляться дальнейшая работа, можно отправлять серверу SQL­
запросы. Данную операцию можно осуществить при помощи функции
mysql_query() , которая имеет следующий синтаксис:
resource mysql_query ($query [, $link_identifier] )

Получить сообщение об ошибке можно при помощи
функции mysql_error()

Дескриптор результирующей таблицы, возвращаемый функцией
mysql_query ( ), используется далее для получения значений, возвращаемых
СУБД. Обычно это осуществляется при помощи одной из пяти функций:
mysql_result(),
mysql_fetch_row(),
mysql_fetch_assoc(),
mysql_fetch_array (),
mysql_fetch_object ()
.

Закрытие соединения производится при помощи функции mysql_close().
bool mysql_close ([ $link_identifier] )

Закрывать соединение в РНР не обязательно, так как скрипт работает
непродолжительное время, а после завершения его работы соединение закрывается
автоматически.

config.php


index.php


@темы: MySQL, PHP, РНР и MySQL

Функции MySQL


Функции шифрования



Обратимое шифрование
При обратимом шифровании, как правило, предоставляются две функции для
шифровки и расшифровки данных. Наиболее серьезную защиту обеспечивают
функции AES_ENCRYPT (str, key_str) и AES_DECRYPT (crypt _str, key_str ) ,
которые используют официальный алгоритм AES (Advanced El1cryptiol1 Stаndard).

SELECT AES_ENCRYPT('MySQL', 'секретный ключ');
SELECT AES_DECRYPT('x��$Fb�;�q��%�;)}', 'секретный ключ');

Нео6ратимое шифрование
Функция MD5() осуществляет необратимое шифрование дан­ных
по алгоритму MD5 (Message-Digest Algorithm) и имеет следующий
синтаксис:
MD5 ( str)
SELECT MD5('MySQL'), MD5('MySQL');
SELECT MD5('MySQL1'), MD5('MySQL');


Алгоритм MD5 часто применяется также для создания уникального ХЭШ-КОДа
объемных файлов, которые передаются по сети . Загрузив файл, всегда можно
про верить его целостность , вы числ ив код по алгоритму MD5 и сравнив
полученный результат с хэш-кодом, предоставляемым распространителем. Это
позволяет отследить повреждения файла, вызванные передачей через сеть, а
также предотвратить фальсификацию дистрибутива.

Агрегатные функции


Функции, применяемые совместно с конструкцией GROUP ВY, часто называют
агрегатными или суммирующими функциями. Они предназначены для
вы­числения одного значения для каждой группы, создаваемой конструкцией
GROUP ВY.

Среднее значение
Функция AVG () возвращает среднее значение аргумента expr и имеет
сле­дующий синтаксис:
AVG ( [ DISTINCT ] expr)

Создадим таблицу
CREATE TABLE catalogs1 (
id_catalog INT(11) NOT NULL AUTO_INCREMENT,
name TINYTEXT NOT NULL,
total INT(11) NOT NULL,
PRIMARY KEY (id_catalog)
);
INSERT IGNORE INTO catalogs1 VALUES (1, 'Процессоры', 15);
INSERT IGNORE INTO catalogs1 VALUES (2, 'Материнские платы', 4);
INSERT IGNORE INTO catalogs1 VALUES (3, 'Видеоадаптеры', 7);
INSERT IGNORE INTO catalogs1 VALUES (4, 'Жесткие диски', 18);
INSERT IGNORE INTO catalogs1 VALUES (5, 'Оперативная память', 9);
SELECT * FROM catalogs1;


Запрос
SELECT AVG(total) FROM catalogs1;


Создадим таблицу
CREATE TABLE products (
id_product INT(11) NOT NULL AUTO_INCREMENT,
name TINYTEXT NOT NULL,
price DECIMAL(7,2) NOT NULL,
id_catalog INT(11) NOT NULL,
PRIMARY KEY (id_product),
KEY id_catalog (id_catalog)
);
INSERT IGNORE INTO products VALUES (1, 'Материнская плата N 1', '2050.00', 2);
INSERT IGNORE INTO products VALUES (2, 'Оперативная память N 1', '1500.00', 5);
INSERT IGNORE INTO products VALUES (3, 'Процессор N 1', '6000.00', 1);
INSERT IGNORE INTO products VALUES (4, 'Процессор N 2', '3523.00', 1);
INSERT IGNORE INTO products VALUES (5, 'Процессор N 3', '4856.00', 1);
INSERT IGNORE INTO products VALUES (6, 'Оперативная память N 2', '1028.00', 5);
INSERT IGNORE INTO products VALUES (7, 'Материнская плата N 2', '1845.00', 2);
INSERT IGNORE INTO products VALUES (8, 'Жесткий диск N 1', '4210.00', 4);
INSERT IGNORE INTO products VALUES (9, 'Видеоадаптер N 1', '3670.00', 3);


Запрос
SELECT id_catalog, AVG(price) FROM products GROUP BY id_catalog;
SELECT id_catalog, AVG(price*1.2) FROM products GROUP BY id_catalog;
SELECT id_catalog, AVG(price)*1.2 FROM products GROUP BY id_catalog;

Сортировка агрегатных значений


По полученным в результате выполнения агрегатных функций значениям
может выполняться сортировка результирующей таблицы . Для этого столбцу
назначается псевдоним при помощи оператора AS, который передается
кон­струкции ORDER ВY
SELECT id_catalog, AVG(price) AS price FROM products GROUP BY id_catalog ORDER BY price DESC;

Подсчет количества записей в таблице
Подсчет количества записей в таблице осуществляется при помощи функции
COUNT (), имеющей несколько форм со следующим синтаксисом:
COUNT (expr)
COUNT (*)
COUNT ( DISTINCT expr1 , expr2 , ... )


Создадим таблицу
CREATE TABLe tbl3 (
id INT(11) NOT NULL,
value INT(11) default NULL
);
INSERT IGNORE INTO tbl3 VALUES(1, 230);
INSERT IGNORE INTO tbl3 VALUES(1, NULL);
INSERT IGNORE INTO tbl3 VALUES(3, 405);
INSERT IGNORE INTO tbl3 VALUES(4, NULL);


Запрос
SELECT COUNT(id), COUNT(value) FROM tbl3;

Форма функции COUNT(*) возвращает общее количество строк в таблице, не­
зависимо от того, принимает какое-либо поле значение NULL или нет
SELECT COUNT(*) FROM tbl2;

Функция COUNT() может быть использована не только для подсчета общего
количества записей в таблице, но и для подсчета количества строк в выборке
с условием WHERE
SELECT COUNT(*) FROM tbl3 WHERE value < 300;

Подсчет количества товара в каждом разделе
SELECT id_catalog, COUNT(*) AS total FROM products
GROUP BY id_catalog ORDER BY total DESC;


Третий вариант функции COUNT () позволяет использовать ключевое слово
DISTINCT, которое обеспечивает подсчет только уникальных значений столб­ца
SELECT COUNT(id_catalog), COUNT(DISTINCT id_catalog) FROM products;

Объединение значений группы
Для объединения значения группы предназначена функция GROU P _ CONCAT ( ) ,
которая имеет следующий синтаксис :
GROUP_CONCAT ( [ DISTINCT ] expr [, expr ... ]
[ORDER ВY { unsigned_integer | col_name | expr }
[ASC | DESC] [, col_name ... ]]
[SEPARATOR str_val] )


В простейшем случае функция принимает имя столбца expr и возвращает
строку со значениями столбца, разделенными запятыми.
SELECT GROUP_CONCAT(id_catalog) FROM products;

Ключевое слово DISTINCT требует вернуть только уникальные значения
столбца, а ключевое слово SEPARATOR позволяет задать в качестве
разделите­ля значений произвольный символ.
SELECT GROUP_CONCAT(DISTINCT id_catalog) FROM products;

SELECT GROUP_CONCAT(DISTINCT id_catalog SEPARATOR '-') FROM products;

SELECT GROUP_CONCAT(DISTINCT id_catalog ORDER BY id_catalog DESC SEPARATOR '-') AS str FROM products;

SELECT GROUP_CONCAT(price ORDER BY price DESC)
FROM products GROUP BY id_catalog;



Поиск минимального и максимального значений
Для поиска минимального значения в столбце expr предназначена функция
MIN() , которая имеет следующий синтаксис:
MIN([ DISTINCT ] expr)
В качестве аргуме нта expr обычно вы ступает имя стол бца. Необязательное
ключевое слово DISTINCT позволяет дать указание СУБД MySQL обрабаты­вать
только уникальные значения столбца expr.
SELECT MIN(price) FROM products;

Использование конструкции GROU P ВY id_catalog позволяет найти
минимальную цену для каждого из разделов каталога
SELECT id_catalog, MIN(price) FROM products GROUP BY id_catalog;

Для поиска максимального значения в столбце expr предназначена функция
MAX() , которая имеет следующий синтаксис:
MAX([ DISTINCT ] expr)
SELECT MAX(price) FROM products;

SELECT id_catalog, MAX(price) FROM products GROUP BY id_catalog;


Сумма столбца
Сумму столбца expr позволяет подсчитать функция SUM(), которая имеет
следующий синтаксис:
SUМ( [ DISТINCT ] expr)

SELECT SUM(price) FROM products;

SELECT id_catalog, SUM(price) FROM products GROUP BY id_catalog;

Разное
Miscella­nеоus-функции, что переводится как смешанные функции, т. е. функции,
ко­торые не поддаются классификации.

Преобразование IР-адреса
Функция INET_ATON (address) принимает IР-адрес address и представляет
его в виде целого числа
SELECT INET_ATON('62.145.69.10'), INET_ATON('127.0.0.1');

Работа с сокращенной формой IР-адреса
SELECT INET_ATON('127.0.01'), INET_ATON('127.1');

Функция INET_NTOA ( address ) принимает IP -aдpec в виде числа (результат
выполнения функции INET_ATON ( ) ) и возвращает адрес в виде строки,
со­стоящей из четырех чисел, разделенных точкой
SELECT INET_NTOA(1049707786), INET_NTOA(2130706433);

@темы: MySQL

Houston, we have a problem.
Houston, we have a problem.
http://ruseller.com/project.php?id=5



Создадим бд и таблицу users в бд


Файл для подключения к бд bd.php


index.php


Регистрация reg.php


Сохранение пользователя в бд save_user.php


Вход testreg.php


@темы: MySQL, PHP, Создание регистрации на сайте на PHP + MySQL, Ссылки

Houston, we have a problem.

Функции MySQL


Математические функции



Вычисление площади треугольников


Вычисление площадей треугольников
SELECT A*B*SIN(RADIANS(angle))/2.0 AS S FROM triangle;

Округление результата вычисления до третьего знака после запятой
SELECT ROUND(A*B*SIN(RADIANS(angle))/2.0, 3) AS S FROM triangle;

CEILING()/CEIL() возвращает первое целое число, которое встречает справа от
значения аргумента
SELECT CEILING(0.49), CEILING(1.51), CEIL(-0.49), CEIL(-1.51);

FLOOR() принимает дробное число Х и возвращает максимальное
целое значение, не больше чем Х.
SELECT FLOOR(0.49), FLOOR(1.51), FLOOR(-0.49), FLOOR(-1.51);

TRUNCATE (Х , О ) , которая возвращает число х с дробной частью, имеющей O
знаков после запятой. Если количество знаков после запятой в числе х боль­ше О,
лишние разряды усекаются, если меньше, то в конец числа добавляют­ся нули
SELECT TRUNCATE(1.284, 0), TRUNCATE(1.284, 1), TRUNCATE(1.284, 4);

Функции даты и времени



Форматирование календарных значений




SELECT fio, (TO_DAYS(NOW()) - TO_DAYS(putdate))/365.25 AS putdate FROM tbl1;
SELECT fio, FLOOR((TO_DAYS(NOW()) - TO_DAYS(putdate))/365.25) AS putdate FROM tbl1;

Прео6разование даты в UNIХSТАМР-формат


Для преобразо­вания MySQL-даты в UNIXSTАМР-формат используется функция
UNIX_TIMESTAМP ( [ date_time ] )

SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP('1997-10-04 22:18:56');

Функция FROM_UN IXT IME (unix _times tamp) решает обратную задачу : прини­
мает число секунд, прошедших с полуночи 1 января 970 года, и возвращает
дату и время суток в виде строки 'YYYY-MM-DD hh:mm:ss' или В виде числа
YYYYMMDDhhmmss в зависим ости от того, вызвана функция в строковом или
числовом контексте
SELECT FROM_UNIXTIME(1389208775), FROM_UNIXTIME(0);

Функция FROM_UNIXTIME (unix_ timestamp , format) может принимать второй
параметр format
SELECT FROM_UNIXTIME(1389208775, 'В %Y году контракт заканчивается');

Строковые функции


http://dev.mysql.com/doc/refman/5.5/en/string-functions.html

Изменение кодировки строки


Функция CONVERT (expr USING charset) преобразует текст из одной
кодировки в другую
SELECT CONVERT ('База данных MySQL' USING koi8r);

Иногда требуется не преобразовать строку из одной кодировки в другую при
помощи функции CONVERT ( ) , а указать ее кодировку: это осуществляется при
помощи так называемого представителя : имени кодировки, начинающегося
с символа подчеркивания
SELECT _koi8r'База данных MySQL';

Первые несколько символов строки
SELECT SUBSTRING(fio,1,5) FROM tbl1;

Извлечение инициалов
Создание таблицы

SELECT CONCAT(surname, ' ',
SUBSTRING(name,1,1), '.',
SUBSTRING(patronymic,1,1), '.') AS fio

FROM tbl2;


Изменение регистра строки
UPDATE tbl2 SET surname = UPPER(surname),
name = UPPER(name),
patronymic = UPPER(patronymic);
SELECT * FROM tbl2;


Преобразование строки в верхний регистр осу­ществляется
при помощи функции UPPER(); для решения обратной задач и
предназначена функция LOWER()
UPDATE tbl2 SET surname = LOWER(surname),
name = LOWER(name),
patronymic = LOWER(patronymic);
SELECT * FROM tbl2;


Перевод первого символа в верхний регистр
UPDATE tbl2 SET
surname = CONCAT(UPPER(SUBSTRING(surname, 1, 1)), SUBSTRING(surname,2)),
name = CONCAT(UPPER(SUBSTRING(name, 1, 1)), SUBSTRING(name,2)),
patronymic = CONCAT(UPPER(SUBSTRING(patronymic, 1, 1)), SUBSTRING(patronymic,2));
SELECT * FROM tbl2;


@темы: MySQL, Ссылки

Houston, we have a problem.

Выборка данных



Все данные из таблицы
SELECT * FROM catalogs;

SELECT id_catalog, name FROM catalogs;
SELECT name, id_catalog FROM catalogs;

Условная выборка


Ключевое слово WHERE , после
которого следует логическое условие.

SELECT * FROM catalogs WHERE id_catalog > 2;

Условие может быть составным и объединяться при помощи логических
операторов AND (И) или OR (ИЛИ).
SELECT * FROM catalogs
WHERE id_catalog > 2 AND id_catalog <= 7;


СУБД MySQL поддержи­вает унарный оператор отрицания NOT
SELECT id_catalog, id_catalog > 2, NOT id_catalog > 2 FROM catalogs;


Помимо операторов OR и AND язык SQL предоставляет еще один логический
оператор: исключающее ИЛИ - XOR.

Для выборки записей из определенного интервала используется оператор
BETWEEN min AND mах, возвращающий записи, значения которых лежат в диапазоне
от min до mах.
SELECT * FROM catalogs WHERE id_catalog BETWEEN 2 and 6;


Существует конструкция, противоположенная конструкции BETWEEN - NOT
BETWEEN, которая возвращает записи, не попадающие в интервал между min и
mах.
SELECT * FROM catalogs WHERE id_catalog NOT BETWEEN 2 and 6;

Иногда требуется извлечь записи, удовлетворяющие не диапазону, а списку,
например, записи с id_cata1og из списка ( 1, 2, 5).
Для этого предназначена конструкция IN.
SELECT * FROM catalogs WHERE id_catalog IN (1, 2, 7, 10);

Конструкция NOT IN является противоположной оператору IN
SELECT * FROM catalogs WHERE id_catalog NOT IN (1, 2, 7, 10);

В конструкции WHERE могут использоваться не только числовые столбцы.
SELECT * FROM catalogs WHERE name = 'видеоадаптеры';

Условную выборку с участием строк удобнее производить при помощи оператора LIKE,
который по­зволяет использовать простейшие регулярные выражения.
Оператор LIKE имеет следующий синтаксис:
expr LIКE раt
SELECT * FROM catalogs WHERE name LIKE '%ы';

Оператор NOT LIKE противоположен по действию
оператору LIKE и имеет следующий синтаксис:
expr NOT LIКE раt
SELECT * FROM catalogs WHERE name NOT LIKE '%ы';

Псевдонимы столбцов
В SELECT-заnросе столбцу можно назначить новое имя при
помощи оператора AS.
SELECT id_catalog , name , DATE_FORMAT (putdate , '%d. %m. %Y') AS printdate
FROM catalogs ;


Сортировка записей


Осуществляется при помощи конструкции ORDER ВY,
которая следует за выражением SELECT.
SELECT id_catalog, name FROM catalogs ORDER BY id_catalog;
SELECT id_catalog, name FROM catalogs ORDER BY name;

По умолчанию сортировка производится в прямом порядке, однако, добавив
после имени столбца ключевое слово DESC, можно добиться сортировки в
обратном порядке
SELECT id_catalog, name FROM catalogs ORDER BY id_catalog DESC;
SELECT id_catalog, name FROM catalogs ORDER BY name DESC;

Сортировка таблицы по двум столбцам
SELECT * FROM tbl ORDER BY id_catalog, putdate DESC;

Записи в таблице tbl сначала сортируются по
столбцу id_catalog, а совпадающие в рамках одного значения id_catalog
записи сортируются по полю putdate в обратном порядке.
!!! Следует отметить, что ключевое слово DESC относится только к полю putdate.

Вывод записей в случайном порядке
Для вывода записей в случай ном порядке используется конструкция
ORDER ВY RAND ()
SELECT id_catalog, name FROM catalogs ORDER BY RAND();

Вывести одну случайную запись
SELECT id_catalog, name FROM catalogs ORDER BY RAND() LIMIT 1;

Ограничение выборки


Постраничная навигация
используется при помощи ключевого слова LIMIT, за которым следует
коли­чество записей, выводимых за один раз.

Получить последние две записи
SELECT id_catalog, name FROM catalogs
ORDER BY id_catalog DESC
LIMIT 2;


Ключевое слово LIMIT с двумя числами:
первое указывает позицию, начиная с которой необ­ходимо вернуть
результат, а второе - количество извлекаемых записей
SELECT id_catalog, name FROM catalogs
ORDER BY id_catalog DESC
LIMIT 2, 2;


Вывод уникальных значений
Kлючевое слово DISTINCT предписывает MySQL извлекать
только уникальные значения
SELECT DISTINCT id_catalog FROM tbl ORDER BY id_catalog;

Для ключевого слова DISTI NCT имеется противоположенное слово ALL, кото­
рое предписывает извлечение всех значений столбца, в том числе и повто­
ряющихся. Поскольку такое поведение установлено по умолчанию, ключевое
слово ALL часто опускают.

Часто для извлечения уникальных записей прибегают к конструкции
GROUP ВY, содержащей имя столбца, по которому группируется результат
SELECT id_catalog
FROM tbl
GROUP BY id_catalog
ORDER BY id_catalog;


Объединение таблиц


Если формат результирующих таблиц (число, порядок следования и тип
столбцов) совпадает, то возможно объединение результатов выполнения двух
операторов SELECT в одну результирующую таблицу. Это достигается с
ис­пользованием оператора UNION.

SELECT id_catalog FROM catalogs
UNION
SELECT id_catalog + 5 FROM tbl;


Отобразить повторяющиеся вопросы
SELECT id_catalog FROM catalogs
UNION ALL
SELECT id_catalog + 5 FROM tbl;


@темы: MySQL

Houston, we have a problem.

Обновление записей


Операция обновления позволяет менять значения полей в уже существующих
записях. Для обновления данных предназначены операторы UРDАТЕ и
REPLACE. Первый обновляет отдельные поля в уже существующих записях,
тогда как оператор REPLACE больше похож на INSERT IGNORE, за исключением того,
что если старая запись в данной таблице имеет тоже значение индекса
UN IQUE или PRIMARY КЕУ, что и новая, то старая запись перед занесением
но­вой записи будет удалена.

UPDATE [ IGNORE ] tbl
SET col1=expr1 [, col2= expr2 ... ]
[WНERE where_ definition]
[ORDER ВУ ... ]
[LIMIT rows]


UPDATE catalogs SET name = 'Процессоры (Intel)'
WHERE name = 'Процессоры';
SELECT * FROM catalogs;


Синтаксис оператора RENAМE аналогичен синтаксису оператора INSERT IGNORE :
REPLACE [INTO ] tbl [( col _name, ... )] VALUES (exprеssion, ... ) , ( ... ) , ...

@темы: MySQL

Houston, we have a problem.

Удаление данных



DELETE - удаление всех или части записей из таблицы;
TRUNCATE TAВLE - удаление всех записей из таблицы.

DELETE FROM tbl
WНERE where_definition
ORDER ВY ...
LIMIT rows


DELETE FROM catalogs WHERE id>2;
SELECT * FROM catalogs;


Если в операторе DELETE отсутствует условие WHERE, из таблицы удаляются
все записи.

DELETE FROM catalogs;
SELECT * FROM catalogs;


Применение ограничения LIMIT позволяет задать максимальное количество
уничтожаемых записей.
DELEТE FROМ catalogs LIМIT З;

Оператор TRUNCATE TAВLE, в отличие от оператора DELETE, полностью очища­ет
таблицу и не допускает условного удаления. То есть оператор
TRUNCATE TAВLE аналогичен оператору DELETE без условия WHERE и ограниче­ния
LIMIT. В отличие от оператора DELETE удаление происходит гораздо бы­стрее,
так как при этом не выполняется перебор каждой записи.

@темы: MySQL

Houston, we have a problem.

Вставка записи в таблицу



Для вставки записи в таблицу используется оператор INSERT IGNORE.
INSERT IGNORE [ IGNORE ] [ INTO ] tbl [( col_nаmе, ... )] VALUES (expression , ... )

Вставка числовых значений в таблицу


Создадим таблицу
CREATE TABLE tbl (
id INT(11) NOT NULL DEFAULT '5',
id_cat INT(11) DEFAULT NULL
);


Вставим значения
INSERT IGNORE INTO tbl VALUES (10, 20);
INSERT IGNORE INTO tbl (id_cat, id) VALUES (10, 20);
INSERT IGNORE INTO tbl (id) VALUES (30);
INSERT IGNORE INTO tbl () VALUES ();
INSERT IGNORE INТO tbl (id, id_cat) VALUES (DEFAULT, DEFAULT );


Просмотр содержимого таблицы
SELECT * FROM tbl;

Альтернативный синтаксис оператора INSERT IGNORE (СУБД MySQL)
INSERT IGNORE INTO tbl SET id = 40, id_cat = 50;
INSERT IGNORE INTO tbl SET id = 50;


Вставка строковых значений в таблицу


Создадим таблицу
CREATE TABLE catalogs (
id_catalog INT(11) NOT NULL,
name TINYTEXT NOT NULL
);


Добавление новой записи в таблицу
INSERT IGNORE INTO catalogs VALUES (1, 'Процессоры');
INSERT IGNORE INTO catalogs VALUES (2, "Память");

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

(!!!) При помещении в базу данных текста , набранного пользователем, всегда
следует экранировать кавычки, для того чтобы предотвратить возникновение
ошибки и атаку SQL-инъекцией.


Вставка календарных значений в таблицу



CREATE TABLE tbl (
id INT(11) NOT NULL,
putdate DATETIME NOT NULL,
lastdate DATE NOT NULL
);


Вставка календарных значений
INSERT IGNORE INTO tbl VALUES(1, '2007-01-03 0:00:00', '2007-01-03');

Для получения текущего времени удобно вос­пользоваться
встроенной функцией MySQL - NOW ()

INSERT IGNORE INTO tbl VALUES(3, NOW(), NOW());

Для получения сдвига даты относительно текущей можно прибавлять и вы­читать
интервалы. Для этого используется ключевое слово INTERVAL, после
которого следует временной интервал.
INSERT IGNORE INTO tbl VALUES (4, '2007-01-01 0:00:00' - INTERVAL 3 WEEK, NOW() + INTERVAL 3 MONTH);


Вставка уникальных значений в таблицу


Первичный ключ таблицы ( PRIМARY КЕУ) или столбец, индексированный
уникальным индексом (UNIQUE ), не могут иметь повторяющихся значений.
Вставка записи со значением, уже имеющимся в таблице, приводит к возник­новению
ошибки.

CREATE TABLE tbl (
id INT(11) NOT NULL,
name TINYTEXT NOT NULL,
PRIMARY KEY (id)
);


Если необходимо, чтобы новые записи с дублирующим ключом
отбрасывались без генерации ошибки, следует добавить после
оператора INSERT IGNORE клю­чевое слово IGNORE.

INSERT IGNORE INTO tbl VALUES (1, 'Видеоадаптеры');
INSERT IGNORE IGNORE INTO tbl VALUES (1, 'Видеоадаптеры');
SELECT * FROM tbl;


Генерации ошибки не происходит, тем не менее,
новая запись также не добавляется.

АUTO_INCREMENT

Многострочны й оператор INSERT IGNORE

@темы: MySQL

Houston, we have a problem.
Создать БД
CREAТE DATAВASE wet;

Показать БД
SHOW DATABASES;

Удалить БД
DROP DATAВASE wet;

Создать БД с кодировкой
CREAТE DATAВASE wet DEFAULT CНARACТER SET ср1251;

Выбор БД
USE test;

Показать таблицы
SHOW TABLES;

Показать таблицы из БД
SHOW TABLES FROM test;

Выбор базы данных при помощи функции


Создать таблицу
CREATE TAВLE table_name [( create_definition , ... )]









Вывести описание таблицы
DESCRIBE table_nаme

Изменить структуру таблицы
ALTER TAВLE table_nаme alter_spec


alter_spec



Добавление столбца в таблицу
ALTER TABLE forums ADD test INT(10) AFTER name;

Переименование столбца
ALTER TABLE forums CHANGE test new_test TEXT;

Изменение типа столбца
ALTER TABLE forums CHANGE new_test new test INT(5) NOT NULL;

Удаление столбца из таблицы
ALTER TABLE forums DROP new_test;

Удаление одной ил и нескольких таблиц
DROP TAВLE table_name [ , table_name, ... ]

@темы: MySQL