Псевдонимы

Автор: manager Среда, Март 26th, 2008 Нет комментариев

Рубрика: MySQL

СУБД MySQL поддерживает концепцию псевдонимов для таблиц и полей.
Псевдонимы для таблиц являются стандартной частью языка SQL.

ПРИМЕР:

SELECT A.user,A.select_priv,A.insert_priv,A.update_priv FROM user A

В этом примере использован псевдоним таблицы, чтобы сократить ваш запрос, объявляя псевдоним, который короче имени таблицы. Вы используете псевдоним в первой части выбора, и определяете это в FROM, определяя реальное имя таблицы, пробел и псевдоним. Если Вы имеете больше чем одну таблицу, для которой Вы желаете создать псевдоним, просто добавьте запятую после каждой пары имя/псевдоним таблицы.

Если Вы используете псевдонимы с запросом, который будет иметь предложение WHERE, Вы должны использовать псевдоним в предложении WHERE вместо реального имени таблицы.

Псевдонимы для полей таблицы — специфическое для MySQL расширение.

ПРИМЕР:

SELECT user.user AS «User Name», user.delete_priv AS «Delete» FROM user;
Одно хорошее дело, которое делают псевдонимы поля — это то, что они позволяют Вам определять более дружественные метки для вашего вывода. Результат вышеупомянутого запроса мог бы окончательно выглядеть примерно так:

+————+———+
| User Name | Delete |
+————+———+
| root | Y |
| mke | N |
| dummy | N |
| admin | N |
+————+———+
Хороший совет — брать псевдонимы в кавычки, в данном примере «Delete» вызвало бы ошибку синтаксического анализа при применение без кавычек. (Это потому, что DELETE является ключевым словом SQL.

INSERT INTO

СИНТАКСИС:

INSERT INTO table [(column_name, ...)] VALUES (expression,…) ||
INSERT INTO table [(column_name, ...)] SELECT …

ОПИСАНИЕ:

Вставляет данные в таблицу.

В выражении можно использовать любое предыдущее поле в списке column_name (или таблицу, если список имен столбцов не задан).
При использовании SELECT вы не можете указать ORDER BY.
Вы можете использовать функцию C API mysql_info для получения строки:
@result{Records: 220 Duplicates: 1 Warnings: 1}

Records показывает число записей, возвращенных SELECT’ом.
Duplicates = число строк, которые не могли быть вставлены из-за дублирования ключей.
Warnings = счетчик числа столбцов в запросе SELECT, которые равны NULL, но были объявлены как NOT NULL для таблицы, в которую Вы вставляете результаты. Столбцы получат значение по умолчанию (помните: в MySQL все NOT NULL столбцы имеют значение по умолчанию!). Если Вы не объявляли при создании таблицы это самое значение, оно будет автоматически назначено, основанным на типе поля.
Если Вы желаете вставить NULL в данное значение, Вы должны сделать это, не определяя значение для поля, в которое Вы желаете вставить NULL.
ПРИМЕР:

INSERT INTO Customer(customer_name,customer_contact) VALUES(«Joes Wholesale»,»Joe Smith»)

Этот запрос создаст новую запись в таблице Customer, которая будет содержать автоматически сгенерированный customer_id, и значения, определенные в запросе. Все другие поля будут пустыми (NULL).

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

Вы должны иметь права доступа insert для использования этой команды.

LOAD DATA INFILE

СИНТАКСИС:

LOAD DATA INFILE syntax

ОПИСАНИЕ:

Команды, для чтения данных из текстового файла.

ПРИМЕР:

LOAD DATA INFILE ‘customer.tab’ [REPLACE | IGNORE] INTO TABLE Customer [fields [terminated by ',' [optionally] enclosed by ‘»‘ escaped by ‘\\’ ]] [lines terminated by '\n'] [(field list)]

Для записи в текстовый файл используйте:
SELECT … INTO OUTFILE ‘customer.tab’ fields terminated by ‘,’ enclosed by ‘»‘ escaped by ‘\\’ lines terminated by ‘\n’ .

«fields terminated by» Имеет значение по умолчанию \t.
«fields [optionally] enclosed by» Имеет значение по умолчанию «.
«fields escaped by» Имеет значение по умолчанию ‘\\’.
«lines terminated by» Имеет значение по умолчанию ‘\n’.
«fields terminated by» и «lines terminated by» могут быть больше, чем 1 символом.

Если «fields terminated by» и «fields enclosed by» являются пустыми строками, то размер строки будет фиксированным. То есть, будет производиться чтение полей одной длины.

С фиксированными значениями NULL для размера строки будут выводиться пустые строки.

Если указаны «optionally» в «enclosed by» и Вы не используете фиксированный размер строк, только строки с этим символом будут включены в команду SELECT … INTO.

Если «escaped by» не пусто, то следующие символы будут снабжены префиксом: «escaped by», ASCII 0, и первый символ из «fields terminated by», «fields enclosed by» и «lines terminated by».

Если использован REPLACE, новая строка заменит все строки, которые имеют тот же самый уникальный ключ. Если использован IGNORE, строки будут пропущен, если там уже существует запись с идентичным уникальным ключом. Если ни один из вышеупомянутых параметров не используется, будет выдана ошибка, и остальная часть textfile будет игнорироваться, если найден дублирующий ключ.

Некоторые ситуации, которые не поддерживаются LOAD DATA INFILE:

Фиксированные размеры строк («FIELDS TERMINATED BY» и «FIELDS ENCLOSED BY» являются пустыми) и поля BLOB.
Разделитель, являющийся префиксом другого разделителя.
«FIELDS ESCAPED BY» пустое и данные содержат один или несколько разделителей.
Все строки читаются в таблицу. Если строка имеет слишком мало полей, остальная часть полей в таблице устанавливается в значения по умолчанию.

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

Если «FIELDS ENCLOSED BY» не пустое, то NULL читается как значение NULL. Если «FIELDS ESCAPED» не пустое, то \N тоже читается как значение NULL. Note Обратите внимание, что это БОЛЬШАЯ N, верхний регистр!

Когда запрос LOAD DATA выполнен, Вы можете получить следующую строку информации, используя функцию C API mysql_info().

@result{Records: 1 Deleted: 0 Skiped: 0 Warnings: 0}

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

Вы должны иметь права доступа select и insert таблице user для использования этой команды.

SET OPTION

СИНТАКСИС:

SET OPTION SQL_VALUE_OPTON=value, …

ОПИСАНИЕ:

Меняет или устанавливает опции MySQL. Опции действуют только в пределах текущего сеанса.

MySQL поддерживает следующие опции (в этой версии пока одну):

SQL_SELECT_LIMIT=value Максимальное число записей, которое возвращает SELECT. Если SELECT имеет параметр LIMIT, то используется значение из этой опции.
UPDATE

СИНТАКСИС:

UPDATE table SET column=expression,… WHERE where_definition

Здесь where_definition:

where_definition:
where_expr or where_expr [AND | OR] where_expr
Здесь where where_expr имеет формат:
where_expr:
column_name [> | >= | = | | <= | SHOW fields FROM Widget_Table from WidgetDB;
6 rows in set (0.34 sec)
+———————+—————+——+——+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———————+—————+——+——+———+—————-+
| widget_id | mediumint(8) | | PRI | 0 | auto_increment |
| widget_name | char(60) | | MUL | | |
| widget_color_id | mediumint(8) | | MUL | 0 | |
| widget_size_id | mediumint(8) | | | 0 | |
| widgets_on_hand | smallint(5) | | | 0 | |
| widget_price | float(8,2) | | | 0.00 | |
| commission_percent | float(4,2) | | | 0.00 | |
+———————+—————+——+——+———+—————-+
mysql>
Первые два поля довольно очевидны. Null будет содержать YES, если это поле может быть равным NULL, Key сообщает имеет ли это поле индекс, Default сообщает Вам значение по умолчанию, которое будет назначено этому полю, если там ничего не окажется после выполнения команды INSERT, Extra указывает другие атрибуты поля, такие как AUTO_INCREMENT, например.

О строках

Строка может иметь ‘ или » в качестве ограничителей.
\ является управляющим символом. Распознаются следующие управляющие последовательности:
ASCII 0. Примечание: это — 5C 30, а не 5C 00!
\n Новая строка.
\t Табуляция.
\r Возврат каретки.
\b backspace
\’ ‘
\» »
\\ \
\% % (используется в строках с символами подстановки для поиска ‘%’)
\_ _ (используется в строках с символами подстановки для поиска ‘_’)
Примеры правильных строк:
‘hello’
«hello»
‘»"hello»"‘
«‘ello»
«‘e»l»lo»
‘\’hello’
«This\nIs\nFour\nlines»
‘ в строке записывается как ».

» в строке записывается как «».

Пример, чтобы прояснить ситуацию:

mysql> select ‘hello’,»‘hello’»,’»"hello»"‘,»’h»e»l»l»o»’,»hel»"lo»;

1 rows in set (0.01 sec)
+——-+———+————+————-+———+
| hello | ‘hello’ | «»hello»" | ‘h’e'l’l'o’ | hel»lo |
+——-+———+————+————-+———+
| hello | ‘hello’ | «»hello»" | ‘h’e'l’l'o’ | hel»lo |
+——-+———+————+————-+———+
О числах

Целые числа состоят из последовательности цифр.
Плавающие числа состоят из последовательности цифр с факультативным десятичным разделителем представляемым точкой «.».
В версии 3.20.X все вычисления выполняются с числами типа doubles, что приводит к тому, что большие значения типа ulonglong усекаются. В версии 3.21.X это исправлено.
Имена таблиц и столбцов

Вы можете использовать только набор символов ISO8859-2 (или набор символов который Вы определили при компиляции начальном выборе конфигурации и компиляции пакета), символ подчеркивания, и 0-9 в именах столбцов.

Дефисы, пробелы и другие специальные символы не могут использоваться, поскольку они сделали бы невозможным использование таблицы или столбца в операторе SELECT.

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

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты