MySQL - lncc.brborges/php/11 - MySQL.pdf · Inteiro grande . BIGINT[(M)] [UNSIGNED] [ZEROFILL] A...

Post on 09-Jul-2020

1 views 0 download

transcript

Fábio Borges de OliveiraFábio Borges de Oliveira

MySQLMySQL

Incremento automáticoIncremento automáticoCREATE 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")

ADMADMShell> mysql -u root mysql

UPDATE user SETPassword=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;

Incluindo usuáriosIncluindo usuáriosUSE mysqlINSERT 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áriosApagando usuáriosDROP USER nome_usuário

DELETE FROM mysql.user WHERE user=' nome_usuário' and host='hostname';

FLUSH PRIVILEGES;

Outras permissõesOutras permissõesGRANT ...

WITH MAX_QUERIES_PER_HOUR N1 MAX_UPDATES_PER_HOUR N2 MAX_CONNECTIONS_PER_HOUR N3;

StringsStrings\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 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 Tipo de campos TINYINT[(M)] [UNSIGNED] [ZEROFILL]

Um inteiro muito pequeno. A faixa deste inteiro com sinal é de -128 até 127. A faixa sem sinal é de 0 até 255.

BITBOOLBOOLEAN

Estes são sinônimos para TINYINT(1).

Interios 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 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 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 DOUBLEdescritos 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ãoDupla precisãoDOUBLE[(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 dupla-precisão.

Exemplos Exemplos salário DECIMAL(5,2)

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 Datas e horas Tipo de Coluna Valor ''Zero''DATETIME '0000-00-00 00:00:00'DATE '0000-00-00'TIMESTAMP 00000000000000TIME '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 Formatos Tipo da Coluna Formato do Display

TIMESTAMP(14) YYYYMMDDHHMMSSTIMESTAMP(12) YYMMDDHHMMSSTIMESTAMP(10) YYMMDDHHMMTIMESTAMP(8) YYYYMMDDTIMESTAMP(6) YYMMDDTIMESTAMP(4) YYMMTIMESTAMP(2) YY

Texto Texto Tipo tamanho-máximo bytesTINYTEXT 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 fotosIncluindo fotos

UPDATE tabela SET blob_coluna=LOAD_FILE("/tmp/foto")

WHERE id=1;

Enumerados Enumerados ENUM("um", "dois", "três")

Valor IndiceNULL NULL"" 0 "um" 1 "dois" 2 "três" 3

máximo de 65535 elementos

ConjuntosConjuntosSET("a","b","c","d")

SET membro valor-decimal valor-binárioa 1 0001b 2 0010c 4 0100d 8 1000

WHERE col_set = 'val1,val2';WHERE FIND_IN_SET('valor',col_set)>0;

Seleções 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 textoFunções de textoSELECT IF(STRCMP('teste','teste1'),'não','sim');SELECT IFNULL(1/0,10);SELECT NULLIF(1,1); #NULLSELECT NULLIF(1,2); #1SELECT ISNULL(1/0);SELECT CONCAT('My', 'S', 'QL'); SELECT LEFT('Fábio Borges', 5); SELECT LCASE('MYSQL');SELECT LTRIM(' Fábio');SELECT LENGTH('texto');