Поиск: INCREMENT (37)
| Проблемы и распространенные ошибки » Проблемы со значением NULL |
A.5.3 Проблемы со значением NULL
Концепция NULL-значения часто вводит в заблуждение новичков в SQL, которые считают, что NULL - то же, что и пустая строка "". Это ошибка! Например, следующие команды совершенно различны:
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES (""); |
|
теги: NULL, INSERT, SELECT |
| |
| Интерфейсы для MySQL » Какие результаты можно получить из запроса? |
8.4.6.2 Какие результаты можно получить из запроса?
В дополнение к возвращенному запросом результирующему набору данных можно также получить следующую информацию:
Функция mysql_affected_rows() возвращает количество строк, подвергшихся воздействию во время последнего запроса при выполнении INSERT, UPDATE или DELETE. Исключение составляет случай использования команды DELETE без выражения WHERE, когда таблица воссоздается как пустая, а это намного быстрее! |
|
теги: INSERT, UPDATE, DELETE |
| |
| Интерфейсы для MySQL » mysql_insert_id() |
8.4.3.126 mysql_insert_id()
my_ulonglong mysql_insert_id(MYSQL *mysql)
8.4.3.127 Описание
Возвращает идентификатор ID, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом. Эту функцию следует использовать после выполнения запроса INSERT в таблице, содержащей поле AUTO_INCREMENT. |
|
теги: UPDATE |
| |
| Интерфейсы для MySQL » Обзор функций интерфейса C |
8.4.2 Обзор функций интерфейса C
В приведенной ниже таблице перечислены доступные в интерфейсе C функции. Более детально они описаны в следующем разделе (see section 8.4.3 Описание функций интерфейса C). Функция Описание
mysql_affected_rows() Возвращает количество строк, измененных/удаленных/вставленных последним запросом UPDATE, DELETE или INSERT.
mysql_change_user() Переключает пользователя и базу данных для открытого соединения. |
|
теги: mysql, DATABASE |
| |
| Интерфейсы для MySQL » Типы данных C API |
8.4.1 Типы данных C API
MYSQL
Данная структура представляет дескриптор соединения с базой данных. Используется почти во всех функциях MySQL.
MYSQL_RES
Эта структура содержит результат запроса, возвратившего строки (SELECT, SHOW, DESCRIBE, EXPLAIN). Возвращенная из запроса информация далее в этом разделе называется результирующим набором данных.
MYSQL_ROW
Является ``типобезопасным'' представлением данных одной строки. В настоящее время этот тип реализован как массив строк с фиксированным количеством байтов (их нельзя трактовать как строки с нулевым символом в конце, если величины полей могут содержать двоичные данные, поскольку они могут содержать ноль байтов). Строки можно получить вызовом функции mysql_fetch_row().
MYSQL_FIELD |
|
теги: SELECT, SHOW |
| |
| Интерфейсы для MySQL » Как получить значение столбца AUTO_INCREMENT в ODBC |
8.3.6 Как получить значение столбца AUTO_INCREMENT в ODBC
Существует распространенная проблема, заключающаяся в том, как получить значение автоматически сгенерированного ID из INSERT. С помощью ODBC можно сделать что-то наподобие следующего (предполагается, что auto представляет собой поле AUTO_INCREMENT ):
INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID(); |
|
теги: ODBC, NULL |
| |
| Интерфейсы для MySQL » Интерфейс DBI |
8.2.2 Интерфейс DBI
Унифицированные методы DBI Метод Описание
connect Создает соединение с сервером
disconnect Разрывает соединение с сервером
prepare Готовит SQL-запрос к выполнению
execute Выполняет приготовленный запрос
do Готовит и выполняет запрос |
|
теги: DBI, NULL |
| |
| Типы таблиц MySQL » Таблицы HEAP |
7.4 Таблицы HEAP
Для HEAP-таблиц используются хэш-индексы; эти таблицы хранятся в памяти. Благодаря этому обработка их осуществляется очень быстро, однако в случае сбоя MySQL будут утрачены все данные, которые в них хранились. Тип HEAP очень хорошо подходит для временных таблиц! |
|
теги: mysql, CREATE |
| |
| Типы таблиц MySQL » Таблицы MERGE |
7.2 Таблицы MERGE
Таблицы MERGE (объединение) являются новшеством версии MySQL 3.23.25. В настоящее время код находится еще на стадии разработки, но, тем не менее, должен быть достаточно стабилен.
Таблица MERGE (или таблица MRG_MyISAM) представляет собой совокупность идентичных таблиц MyISAM, которые могут использоваться как одна таблица. К совокупности таблиц можно применять только команды SELECT, DELETE и UPDATE. Если же попытаться применить к таблице MERGE команду DROP, она подействует только на определение MERGE. |
|
теги: SELECT, DELETE |
| |
| Типы таблиц MySQL » Таблицы MyISAM |
7.1 Таблицы MyISAM
Тип таблиц MyISAM принят по умолчанию в MySQL версии 3.23. Он основывается на коде ISAM и обладает в сравнении с ним большим количеством полезных дополнений.
Индекс хранится в файле с расширением `.MYI' (MYIndex), а данные - в файле с расширением `.MYD' (MYData). Таблицы MyISAM можно проверять/восстанавливать при помощи утилиты myisamchk. See section 4.4.6.7 Использование myisamchk для послеаварийного восстановления. Таблицы MyISAM можно сжимать при помощи команды myisampack, после чего они будут занимать намного меньше места. See section 4.7.4 myisampack, MySQL-генератор сжатых таблиц (только для чтения). |
|
теги: MyISAM, VARCHAR |
| |
| Справочник по языку MySQL » Как работает кэширование запросов |
6.9.1 Как работает кэширование запросов
Перед синтаксическим анализом запросы сравниваются, поэтому запросы
SELECT * FROM TABLE
и
Select * from table
для кэша запросов рассматриваются как различные, поскольку они должны быть абсолютно одинаковыми (байт в байт), чтобы рассматриваться как идентичные. Помимо этого, запрос может трактоваться как отличающийся, если, например, какой-либо клиент использует протокол соединения нового формата или иной набор символов, чем другой клиент. |
|
теги: SELECT, DELETE |
| |
| Справочник по языку MySQL » Полнотекстовый поиск в MySQL |
6.8 Полнотекстовый поиск в MySQL
Что касается MySQL 3.23.23, то эта версия MySQL поддерживает полнотекстовый поиск и индексацию. Полнотекстовые индексы в MySQL обозначаются как индексы типа FULLTEXT. Эти индексы могут быть созданы в столбцах VARCHAR и TEXT во время создания таблицы командой CREATE TABLE или добавлены позже с помощью команд ALTER TABLE или CREATE INDEX. Загрузка больших массивов данных в таблицу будет происходить намного быстрее, если таблица не содержит индекс FULLTEXT, который затем создается командой ALTER TABLE (или CREATE INDEX). Загрузка данных в таблицу, уже имеющую индекс FULLTEXT, будет более медленной. |
|
теги: VARCHAR, TABLE |
| |
| Справочник по языку MySQL » Синтаксис оператора ALTER TABLE |
6.5.4 Синтаксис оператора ALTER TABLE
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
или ADD [COLUMN] (create_definition, create_definition,...)
или ADD INDEX [index_name] (index_col_name,...)
или ADD PRIMARY KEY (index_col_name,...)
или ADD UNIQUE [index_name] (index_col_name,...)
или ADD FULLTEXT [index_name] (index_col_name,...)
или ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...) |
|
теги: ADD, TABLE |
| |
| Справочник по языку MySQL » Синтаксис оператора CREATE TABLE |
6.5.3 Синтаксис оператора CREATE TABLE
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
[table_options] [select_statement]
create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]
или PRIMARY KEY (index_col_name,...)
или KEY [index_name] (index_col_name,...)
или INDEX [index_name] (index_col_name,...)
или UNIQUE [INDEX] [index_name] (index_col_name,...)
или FULLTEXT [INDEX] [index_name] (index_col_name,...)
или [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) |
|
теги: CREATE, SET |
| |
| Справочник по языку MySQL » Синтаксис оператора LOAD DATA INFILE |
6.4.9 Синтаксис оператора LOAD DATA INFILE
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES TERMINATED BY '\n']
[IGNORE number LINES]
[(col_name,...)] |
|
теги: DATA, NULL |
| |
| Справочник по языку MySQL » Синтаксис оператора INSERT DELAYED |
6.4.4 Синтаксис оператора INSERT DELAYED
INSERT DELAYED ...
Опция DELAYED для команды INSERT является специфической для MySQL возможностью, которая очень полезна, если клиент не может ждать завершения команды INSERT. Такая проблема встречается часто - она возникает, когда MySQL используется для ведения журналов (проще говоря, для логгинга) и при этом периодически запускаются команды SELECT и UPDATE, для выполнения которых требуется много времени. Оператор DELAYED был введен в версию MySQL 3.22.15. Он является расширением MySQL к ANSI SQL92. |
|
теги: INSERT, SELECT |
| |
| Справочник по языку MySQL » Синтаксис оператора INSERT ... SELECT |
6.4.3.1 Синтаксис оператора INSERT ... SELECT
INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name [(column list)] SELECT ...
Команда INSERT ... SELECT обеспечивает возможность быстрого внесения большого количества строк в таблицу из одной или более таблиц.
INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID
FROM tblTemp1
WHERE tblTemp1.fldOrder_ID > 100; |
|
теги: SELECT, INSERT |
| |
| Справочник по языку MySQL » Синтаксис оператора INSERT |
6.4.3 Синтаксис оператора INSERT
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
или INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
или INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, ... |
|
теги: INSERT, SELECT |
| |
| Справочник по языку MySQL » Разные функции |
6.3.6.2 Разные функции
DATABASE()
Возвращает имя текущей базы данных:
mysql> SELECT DATABASE();
-> 'test'
Если в данное время нет активной базы данных, то функция DATABASE() возвращает пустую строку.
USER()
SYSTEM_USER()
SESSION_USER()
Возвращает имя текущего активного пользователя MySQL:
mysql> SELECT USER();
-> 'davida@localhost' |
|
теги: SELECT, mysql |
| |
|
|