Note that we tend to update the manual at the same time we implement new things to MySQL. If you find a version listed below that you can't find on the MySQL download page, this means that the version has not yet been released!
The major difference between release 3.23 and releases 3.22 and 3.21 is that 3.23 contains a new ISAM library (MyISAM), which is more tuned for SQL than the old ISAM was.
The 3.23 release is under development, and things will be added at a fast pace to it. For the moment we recommend this version only for users that desperately need a new feature that is found only in this release (like big file support and machine-independent tables). (Note that all new functionality in MySQL 3.23 is extensively tested, but as this release involves much new code, it's difficult to test everything). This version should start to stabilize as soon as we get subselects included in it.
SELECT DISTINCT ... ORDER BY RAND()
.
ALTER TABLE
+ adding a column after the last field didn't work.
CREATE TABLE foo (a int not null auto_increment, b char(5), primary key (b,a))
AS
on fieldname with CREATE TABLE table_name SELECT ...
didn't
work.
NATIONAL
and NCHAR
when defining character columns.
This is the same as not using BINARY
.
NULL
columns in a PRIMARY KEY
(only in UNIQUE
keys).
LAST_INSERT_ID
if in uses this in ODBC:
WHERE auto_increment_column IS NULL
. This seams to fix some problems
with Access.
SET SQL_AUTO_IS_NULL=0|1
now turns off/on the handling of
searching after the last inserted row with WHERE
auto_increment_column IS NULL
.
concurrency
for Solaris.
--relative
to mysqladmin
to make
extended-status
more useful to monitor changes.
COUNT(DISTINCT..)
on an empty table.
LOAD DATA INFILE
and BLOB
columns.
~
(negation).
DATETIME
into a TIME
column will not anymore
try to store 'days' in it.
SUM()
.)
LIKE
"%" on a index that may have NULL
values.
REVOKE ALL PRIVILEGES
didn't revoke all privileges.
SHOW GRANTS FOR user
(by Sinisa).
date_add
syntax: date/datetime + INTERVAL # interval_type
.
By Joshua Chamas.
LOAD DATA REPLACE
.
REGEXP
is now case insensitive if you use not binary strings.
ASC
is now the default again for ORDER BY
.
LIMIT
to UPDATE
.
mysql_change_user()
.
SHOW VARIABLES
.
--[whitespace]
comments.
INSERT into tbl_name VALUES ()
, that is, you may now specify
an empty value list to insert a row in which each column is set to its
default value.
SUBSTRING(text FROM pos)
to conform to ANSI SQL. (Before this
construct returned the rightmost 'pos' characters).
SUM(..)
with GROUP BY
returned 0 on some systems.
SHOW TABLE STATUS
.
DELAY_KEY_WRITE
option to CREATE TABLE
.
AUTO_INCREMENT
on any key part.
YEAR(NOW())
and YEAR(CURDATE())
.
CASE
construct.
COALESCE()
.
SELECT * FROM table_name WHERE
key_part1 >= const AND (key_part2 = const OR key_part2 = const)
. The
bug was that some rows could be duplicated in the result.
myisamchk
without -a
updated the index
distribution wrong.
SET SQL_LOW_PRIORITY_UPDATES=1
gave parse error before.
WHERE
clause.
UPDATE tbl_name SET KEY=KEY+1 WHERE KEY > 100
SELECT ... WHERE key_part1=const1 AND
key_part_2=const2 AND key_part1=const4 AND key_part2=const4
; Indextype
should be range
instead of ref
.
egcs
1.1.2 optimizer bug (when using BLOB
s) on Linux Alpha.
LOCK TABLES
combined with DELETE FROM table
.
NULL
and BLOB/TEXT
columns.
SELECT ... FROM t1 LEFT JOIN t2 ON ... WHERE t2.not_null_column IS NULL
.
ORDER BY
and GROUP BY
can be done on functions.
ORDER BY RAND()
.
WHERE key_column = function
.
WHERE key_column = column_name
even if
the columns are not identically packed.
WHERE column_name IS NULL
.
--init-file=file_name
to mysqld
.
COUNT(DISTINCT value,[value,...])
CREATE TEMPORARY TABLE
now creates a temporary table, in its own
namespace, that is automatically deleted if connection is dropped.
CASE
): CASE, THEN,