Fábio Borges de Oliveira MySQL
Incremento automático CREATE TABLE alunos ( registro MEDIUMINT NOT NULL AUTO_INCREMENT, nome CHAR(30) NOT NULL, PRIMARY KEY (registro) ); INSERT INTO alunos (nome) VALUES ("Fábio"),("Ana"),("Michele"), ("Thais"),("Débora"),("Rachel")
ADM Shell> mysql -u root mysql UPDATE user SET Password=PASSWORD('nova_senha') WHERE user='root'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON databases.* TO fulano@'192.58.197.0/255.255.255.0'; SHOW FULL PROCESSLIST;
USE mysql Incluindo usuários INSERT INTO user VALUES('localhost','fulano', PASSWORD('senha'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON db.* TO fulano@'server.domain' IDENTIFIED BY 'senha';
Apagando usuários DROP USER nome_usuário DELETE FROM mysql.user WHERE user=' nome_usuário' and host='hostname'; FLUSH PRIVILEGES;
Outras permissões GRANT... WITH MAX_QUERIES_PER_HOUR N1 MAX_UPDATES_PER_HOUR N2 MAX_CONNECTIONS_PER_HOUR N3;
Strings \0 Um caractere ASCII 0 (NUL). \' Um caractere de aspas simples ('). \" Um caractere de aspas duplas ("). \b Um caractere de backspace. \n Um caractere de nova linha. \r Um caractere de retorno de carro. \t Um caractere de tabulação. \z ASCII(26) (Control-Z). \\ O caractere de barra invertida. \% Um caractere "%". \_ Um caractere '_'.
Comentários select 1+1; # comentário até o fim da linha select 1+1; -- comentário até o fim da linha select 1 /* Este é um comentário de linha */ + 1; select 1+ /* Este é um comentário de múltiplas linhas */ 1;
Tipo de campos TINYINT[(M)] [UNSIGNED] [ZEROFILL] BIT Um inteiro muito pequeno. A faixa deste inteiro com sinal é de -128 até 127. A faixa sem sinal é de 0 até 255. BOOL BOOLEAN Estes são sinônimos para TINYINT(1).
Interios SMALLINT[(M)] [UNSIGNED] [ZEROFILL] Um inteiro pequeno. A faixa do inteiro com sinal é de - 32768 até 32767. A faixa sem sinal é de 0 a 65535. MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] Um inteiro de tamanho médio. A faixa com sinal é de - 8388608 a 8388607. A faixa sem sinal é de 0 to 16777215. INT[(M)] [UNSIGNED] [ZEROFILL] Um inteiro de tamanho normal. A faixa com sinal é de - 2147483648 a 2147483647. A faixa sem sinal é de 0 a 4294967295. INTEGER[(M)] [UNSIGNED] [ZEROFILL] Este é um sinônimo para INT.
Inteiro grande BIGINT[(M)] [UNSIGNED] [ZEROFILL] A faixa com sinal é de -9223372036854775808 a 9223372036854775807. A faixa sem sinal é de 0 a 18446744073709551615. Todas as operações aritméticas são feitas usando valores BIGINT ou DOUBLE com sinal, não devemos utilizar inteiros sem sinal maiores que 9223372036854775807 (63 bits). Quando usar operadores (+, -, *, etc.) onde ambos os operadores são inteiros. Você pode armazenar valores inteiro exatos em um campo BIGINT armazenando-os como string, como ocorre nestes casos não haverá nenhuma representação intermediaria dupla.
Flutuantes FLOAT(precisão) [UNSIGNED] [ZEROFILL] Um número de ponto flutuante. Não pode ser sem sinal. precisão pode ser <=24 para um número de ponto flutuante de precisão simples e entre 25 e 53 para um número de ponto flutuante de dupla-precisão. Estes tipos são como os tipos FLOAT e DOUBLE descritos logo abaixo. FLOAT(X) tem o mesma faixa que os tipos correspondentes FLOAT e DOUBLE, mas o tamanho do display e número de casas decimais é indefinido. FLOAT(precisão) sempre tem 2 casas decimais.
Dupla precisão DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] Um número de ponto flutuante de tamanho normal (dupla-precisão). Valores permitidos estão entre -1.7976931348623157E+308 e - 2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308 e 1.7976931348623157E+308. Se UNSIGNED for especificado, valores negativos não são permitidos. O M é a largura do display e o D é número de casa decimais. DOUBLE sem argumento ou FLOAT(X) onde 25 <= X <= 53 são números de ponto flutuante de duplaprecisão.
salário DECIMAL(5,2) Exemplos Tipo bytes de até TINYINT 1-128 127 SMALLINT 2-32768 32767 MEDIUMINT 3-8388608 8388607 INT 4-2147483648 2147483647 BIGINT 8-9223372036854775808 9223372036854775807
Datas e horas Tipo de Coluna Valor ''Zero'' DATETIME '0000-00-00 00:00:00' DATE '0000-00-00' TIMESTAMP 00000000000000 TIME '00:00:00' YEAR 0000 Valores de ano na faixa 00-69 são convertidos para 2000-2069. Valores de anos na faixa 70-99 são convertidos para 1970-1999. TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
Formatos Tipo da Coluna Formato do Display TIMESTAMP(14) YYYYMMDDHHMMSS TIMESTAMP(12) YYMMDDHHMMSS TIMESTAMP(10) YYMMDDHHMM TIMESTAMP(8) YYYYMMDD TIMESTAMP(6) YYMMDD TIMESTAMP(4) YYMM TIMESTAMP(2) YY
Texto Tipo tamanho-máximo bytes TINYTEXT ou TINYBLOB 2^8-1 255 TEXT ou BLOB 2^16-1 (64K-1) 65535 MEDIUMTEXT ou MEDIUMBLOB 2^24-1 (16M-1) 16777215 LONGBLOB 2^32-1 (4G-1) 4294967295
Incluindo fotos UPDATE tabela SET blob_coluna=load_file("/tmp/foto") WHERE id=1;
Enumerados ENUM("um", "dois", "três") Valor Indice NULL NULL "" 0 "um" 1 "dois" 2 "três" 3 máximo de 65535 elementos
SET("a","b","c","d") Conjuntos SET membro valor-decimal valor-binário a 1 0001 b 2 0010 c 4 0100 d 8 1000 WHERE col_set = 'val1,val2'; WHERE FIND_IN_SET('valor',col_set)>0;
Seleções SELECT 1 BETWEEN 2 AND 3; SELECT 'b' BETWEEN 'a' AND 'c'; SELECT 2 BETWEEN 2 AND '3'; SELECT 2 IN (0,3,5,'Fábio'); SELECT 'Fábio' IN (0,3,5,'Fábio'); SELECT CASE var WHEN 1 THEN "um" WHEN 2 THEN "dois" ELSE "mais" END; SELECT CASE WHEN var1>var2 THEN "verdadeiro" ELSE "falso" END;
Funções de texto SELECT IF(STRCMP('teste','teste1'),'não','sim'); SELECT IFNULL(1/0,10); SELECT NULLIF(1,1); #NULL SELECT NULLIF(1,2); #1 SELECT ISNULL(1/0); SELECT CONCAT('My', 'S', 'QL'); SELECT LEFT('Fábio Borges', 5); SELECT LCASE('MYSQL'); SELECT LTRIM(' Fábio'); SELECT LENGTH('texto');