INSERT INTO animals (name) VALUES ("dog"),("cat"),("penguin"), ("lax"),("whale");
Можно получить AUTO_INCREMENT ключ с помощью функции SQL LAST_INSERT_ID() или с помощью функции mysql_insert_id() интерфейса C.
MySQL поддерживает следующие строковые типы(М обозначает максимальный отображаемый размер или PRECISION).
CHAR(M) – строка фиксированной длины всегда дополняемая справа пробелами. М может находиться в диапазоне от 1 до 255 символов.
VARCHAR(M) – строка переменной длины. Замыкающие пробелы удаляются базой данных при записи значения.М может находиться в диапазоне от 1 до 255 символов.
ENUM(' value1' , 'value2',...) – перечисление. Строковый объект, у которого может быть только одно значение, выбранное из заданного списка (или NULL). В перечислении может быть до 65 535 различных значений.
SET('value1' , ' value2' , ..) –множество. Строковый объект, у которого может быть несколько значений (или ни одного), каждое из которых должно выбираться из указанного списка. SET может иметь максимум 64 элемента.
BLOB представляет собой двоичный объект большого размера, который может содержать переменное количество данных. Существуют 4 модификации этого типа - TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB, отличающиеся только максимальной длиной хранимых величин.
TEXT также имеет 4 модификации - TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT, соответствующие упомянутым четырем типам BLOB и имеющие те же максимальную длину и требования к объему памяти. Единственное различие между типами BLOB и TEXT состоит в том, что сортировка и сравнение данных выполняются с учетом регистра для величин BLOB и без учета регистра для величин TEXT. Другими словами, TEXT - это независимый от регистра BLOB.
При сравнениях и сортировке регистр символов в колонках CHAR и VARCHAR не учитывается, если только не задать атрибут BINARY, например:
CREATE TABLE foo (A VARCHAR(10)BINARY);
Обычно, следует выполнять SELECT для SET-столбца, используя оператор LIKE или функцию FIND_IN_SET():
SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
Но и такая форма также работает:
SELECT * FROM tbl_name WHERE set_col = 'val1,val2';
SELECT * FROM tbl_name WHERE set_col & 1;
Первый оператор в каждом примере делает выборку точного значения. Второй оператор делает выборку значений, содержащих первого элемента множества.
Если нужно получить все возможные значения для столбца SET, следует вызвать SHOW COLUMNS FROM table_name LIKE set_column_name и проанализировать SET-определение во втором столбце.