Novas funcionalidade
Comando como do Oracle CONNECT BY PRIOR
...
para estruturas de busca tipo árvore
(hierárquica)
Adicionar todos os tipos que faltam do SQL-92 e ODBC 3.0.
Adicionar SUM(DISTINCT)
.
INSERT SQL_CONCURRENT
e
mysqld --concurrent-insert
para
fazer uma inserção concorrente no fim do arquivo se
o arquivo tiver lock de leitura.
Permitir a atualização de variáveis nas
instruções UPDATE
. Por exemplo:
UPDATE TABLE foo SET @a=a+b,a=@a,
b=@a+c
.
Alterar quando as variáveis de usuários são
atualizadas e assim pode se usá-las com
GROUP BY
, como no exemplo a seguir:
SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM
nome_tabela GROUP BY id
.
Adicionar a opção IMAGE
a
LOAD DATA INFILE
para não
atualizar campos TIMESTAMP
e
AUTO_INCREMENT
.
Adicionar a sintaxe LOAD DATA INFILE ...
UPDATE
que funciona assim:
Para tabelas com chaves primárias, se o registro
de entrada contém um valor de chave primária,
linhas existentes correspondendo às chaves
primárias são atualizadas para o restante das
colunas de entrada. No entanto, colunas
faltosas
na inserção dos
registros de entradas não são alteradas.
Para tabelas com chaves primárias, se um registro
de entrada não contém um valor de chave
primária ou estrá faltando alguma parte da
chave, o registro é tratado como um LOAD
DATA INFILE ... REPLACE INTO
.
Fazer com que LOAD DATA INFILE
entenda a sintaxe do tipo:
LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name TEXT_FIELDS (text_field1, text_field2, text_field3) SET table_field1=CONCAT(text_field1, text_field2), table_field3=23 IGNORE text_field3
Isto pode ser usado para saltar colunas extras no arquivo texto, ou atualizar colunas baseadas nas expressões dos dados lidos.
Novas funções para tyrabalhar com tipos de colunas
SET
:
ADD_TO_SET(valor,conjunto)
REMOVE_FROM_SET(valor,conjunto)
Se você abortar o mysql
no meio de
uma consulta, você deve abrir outra conexão e matar
a consulta antiga em execução. Alternativamente,
deve ser feita um tentativa de detecção deste
problema no servidor.
Adicione um interface do mecanismo de armazenamento
para informações da tabela assim que você puder
usá-la como uma tabela de sistema. Isto seria um
pouco mais lento se você pedisse informações sobre
todas as tabelas, mas muito flexível. SHOW
INFO FROM tbl_name
para informações
básicas das tabelas deve ser implementado.
Permite SELECT a FROM crash_me LEFT JOIN
crash_me2 USING (a)
; neste caso é
considerado que a
vem da tabela
crash_me
.
Opções DELETE
e
REPLACE
para a instrução
UPDATE
(isto deletará registros
quando se tiver um erro de chave duplicada durante a
atualização).
Altera o formato de DATETIME
para
armazenar frações de segundo.
Possibilitar o uso da nova biblioteca regexp GNU em vez da atual (a biblioteca GNU deve ser muito mais rápida que a antiga).
Compatibilidade com os padrões, portabilidade e migração
Não adicionar valores DEFAULT
automáticos as colunas. Enviar um erro ao usar um
INSERT
que não contenha uma coluna
que não tenha um DEFAULT
.
Adicionar as funções de agrupamento
ANY()
, EVERY()
e
SOME()
. No padrão SQL isto só
funciona em colunas booleanas, mas podemos
extendê-las para funcionar em qualquer
coluna/expressão tratando valores 0 como FALSE e
valores diferentes de 0 como TRUE.
Corrigir para que o tipo de
MAX(coluna)
seja o mesmo do tipo da
coluna:
mysql>CREATE TABLE t1 (a DATE);
mysql>INSERT INTO t1 VALUES (NOW());
mysql>CREATE TABLE t2 SELECT MAX(a) FROM t1;
mysql>SHOW COLUMNS FROM t2;
Aumento de velocidade
Não permitir mais que um número definido de threads façam a recuperação do MyISAM ao mesmo tempo.
Alterar INSERT ... SELECT
para usar
inserções concorrentes opcionalmente.
Adicionar uma opção para descarregar paginas de chaves para tabelas com delayed keys se elas não forem usados por um tempo.
Permitir joins em partes de chaves (otimização).
Adicionar simulação de
pread()
/pwrite()
no Windows para permitir inserções concorrentes.
Um analizador de arquivos de log que possam analizar informações sobre quais tabelas são usadas com mais frequência, a frequência com que joins multi-tables são executados, etc. Isto deve ajudar os usuários a identificar áreas ou projetos de tabelas que podiam ser otimizados para executar consultas muito mais eficientes.
Internacionalização
Aprimoramentos de usabilidade
Retorna os tipos dos campos originais ao se fazer
SELECT MIN(coluna) ... GROUP BY
.
Possibilita especificar
long_query_time
com uma
granularidade em microsegundos.
Ligue o código myisampack
no
servidor assim ele poderá realizar operações
PACK
e COMPRESS
.
Adicionar uma cache de chaves temporária durante
INSERT/DELETE/UPDATE
para podermos
fazer um recuperação se o índice ficar cheio.
Se você realizar um ALTER TABLE
em
uma tabela que é ligada simbolicamente a outro disco,
crie tabelas tenporárias neste disco.
Implementar um tipo DATE/DATETIME
que trate as informações de fusos horários de forma
apropriada e assim lidar com datas em diferentes fusos
horários será mais fácil.
Corrigir o configure para se poder compilar todas as
bibliotecas (como no MyISAM
) sem
threads.
Permitir variáveis SQL em LIMIT
,
como em LIMIT @a,@b
.
Saída automática do mysql
para um
navegador web.
LOCK DATABASES
(com diversas
opções).
Muito mais variáveis para SHOW
STATUS
. Leitura e atualização de
registros. Selects em 1 tabela e select com joins.
Número de tabelas na select. Número de consultas
ORDER BY
e GROUP
BY
.
mysqladmin copy database
novo-banco_dados
; exige que o comando
COPY
seja adicionado ao
mysqld
.
Lista de processos deve mostar o número de consultas/threads.
SHOW HOSTS
para xibir informações
sobre a cache de nome de máquina.
Alterar o nome de tabelas de string vazias para
NULL
para colunas calculadas.
Não usar Item_copy_string
em
valores numéricos para evitar a conversão
number->string->number no casos de:
SELECT COUNT(*)*(id+0) FROM nome_tabela GROUP
BY id
Alterar aqueles ALTER TABLE
que
não abortam clientes que executam INSERT
DELAYED
.
Colunas referênciadas em uma cláusula
UPDATE
irão conter os valores
antigos antes da atualização iniciar.
Novos sistemas operacioais.
Portar os clientes MySQL para LynxOS.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.