Conhecendo os tipos de dados

Tamanho: px
Começar a partir da página:

Download "Conhecendo os tipos de dados"

Transcrição

1 Capítulo 7 Conhecendo os tipos de dados Uma das fases do projeto de bancos de dados é a escolha dos tipos de dados das colunas que constituem as tabelas. As implementações SQL oferecem várias opções de tipos e é preciso conhecer as características e limitações de cada um: uma coluna que armazena preços, por exemplo, tem requisitos diferentes de uma coluna que armazena datas, ou nomes. Para cada caso, há tipos que são mais ou menos adequados. Prevendo corretamente os valores que devem ser armazenados e fazendo a escolha certa, o projetista previne dores de cabeça e retrabalho no futuro. Escolha certa, neste caso, significa empregar tipos que suportam a gama de valores que um atributo pode assumir; suportam as operações efetuadas sobre esses valores; 1 atendidas as condições acima, requerem o menor espaço de armazenagem possível. Além do projeto de bancos de dados, a construção de consultas SQL é outro motivo importante para conhecer melhor os tipos de dados, pois alguns operadores são sensíveis aos tipos de dados dos atributos, como os operadores aritméticos e de comparação. Eventualmente, pode ser preciso converter alguns dados de um tipo para outro, de modo a permitir certas operações. Este capítulo apresenta os vários tipos de dados disponíveis no Access, MySQL, Oracle e SQL Server, detalhando-os quanto à sua finalidade, gama de valores, requisitos de armazenagem e operações permitidas. As funções de conversão de dados são apresentadas no capítulo TIPOS DE DADOS Os tipos de dados disponíveis nas implementações SQL podem ser categorizados em seis grandes grupos, a saber: Lógicos Numéricos Calendário Strings Binários Específicos Derivados que armazenam os valores lógicos verdadeiro e falso; que armazenam números, reais ou inteiros; que armazenam registros de tempo, tais como datas e horas; que armazenam cadeias de caracteres, tais como nomes, textos, etc; que armazenam dados não regularmente estruturados, tais como figuras, fotos, sons, etc; que armazenam dados específicos de cada implementação, tais como identificadores especiais. que podem ser definidos pelo usuário a partir de combinações dos tipos primitivos. 1 Note que as operações abrangem ordenação de registros com base no atributo e utilização do mesmo atributo em índices, que são fatores que auxiliam na determinação correta de um tipo.

2 2 Capítulo 7: Conhecendo os tipos de dados TIPOS DE DADOS LÓGICOS Algumas implementações, como o Access, reservam um tipo de dados específico para a armazenagem de valores lógicos, como verdadeiro/falso ou sim/não. Esses tipos são ditos lógicos porque possuem um domínio de apenas dois valores, além do valor nulo. Tipos lógicos são manipulados através dos operadores lógicos como not, and, or, que os combinam em expressões lógicas. Algumas implementações não distinguem entre tipos lógicos e outros tipos, sendo possível construir expressões lógicas onde qualquer tipo pode ter o papel que seria de um tipo lógico. Leia mais sobre isto nas seções que detalham os tipos de cada implementação. TIPOS DE DADOS NUMÉRICOS Há três tipos básicos de tipos de dados numéricos nas implementações de bancos de dados: números reais de ponto flutuante, números inteiros, com e sem sinal, e números decimais, que são números reais com ponto fixo. Os números reais de ponto flutuante são velhos conhecidos dos computadores, e normalmente apresentam-se com precisão simples (armazenados em 4 bytes) ou dupla (armazenados em 8 bytes), dependendo da gama de valores requerida. Embora permitam números de alta ordem, os números de ponto de flutuante, por sua própria concepção, têm a desvantagem de serem representados por valores às vezes aproximados. Por este motivo, são pouco indicados para representar grandezas financeiras, uma vez que os valores, neste caso, têm que ser exatos. Os números inteiros são bastante utilizados em aplicações de bancos de dados e apresentam-se em tipos cujos valores permitidos variam sensivelmente. Tipicamente, há inteiros com 1, 2, 4 e 8 bytes, o que requer especial atenção do projetista na escolha do tipo adequado. Por exemplo, um atributo que represente o número de itens numa nota fiscal certamente tem valores muito diferentes do que outro que represente a quantidade de refrigerantes vendidos no mundo nos últimos 12 meses. Além disso, os números inteiros podem ter sinal ou não. Por exemplo, um número inteiro de um byte pode representar valores entre 128 e 127, se o sinal for considerado, ou valores entre 0 e 255, sem sinal. Isto pode representar uma diferença importante se o sinal não for necessário, como no caso dos itens da nota fiscal. Os números decimais são uma representação especial de números reais, com ponto fixo: o número total de dígitos e o número de casas decimais é estabelecido na definição do tipo. Com isso, fica mais apropriada a manipulação de valores financeiros (o que é muito comum em bancos de dados), pois pode-se ter números reais não aproximados. Números decimais têm precisão e escala. Precisão determina o número máximo de dígitos no número e escala determina quantos desses dígitos estão à direita do ponto decimal. Note que, para números de ponto flutuante não há uma escala pré-determinada, daí sua denominação. Normalmente, um valor que tem mais casas decimais que seu tipo determina é arredondado; se tiver mais dígitos à esquerda do ponto decimal, é truncado. Veja alguns exemplos de valores fornecidos, tipos e valores armazenados ,5689 DECIMAL (14,4) 56374, ,5689 DECIMAL (14,3) 56374, ,5689 DECIMAL (14,0) Em algumas implementações admite-se escala negativa. Neste caso, o número é arredondado antes da casa decimal. Exemplos 56374,5689 DECIMAL (14,-1) ,5689 DECIMAL (14,-2) 56400

3 Error! Style not defined. 3 Também é possível o caso em que a precisão é menor que a escala. Neste caso, limita-se o número de dígitos que aparecem após a casa decimal, como nos exemplos a seguir. 0, DECIMAL (2,7) 0, ,05689 DECIMAL (3,4) 0,0568 A implementação de números decimais pode variar bastante, pois um número decimal pode ser armazenado como um inteiro escalado (com uma parte decimal imaginária), uma string de dígitos numéricos que é convertida quando operada, ou outras formas compactadas. Números decimais podem ter sinal ou não. Tipos numéricos podem ser operados livremente através dos operadores aritméticos e de comparação. Normalmente, quando um ou mais tipos numéricos distintos são envolvidos numa operação aritmética, todos são convertidos para um tipo comum (o mais genérico) e então as operações são realizadas. Ao final da expressão, o resultado é convertido para o tipo designado para receber o valor final da expressão. Por exemplo, a soma de dois inteiros, de 1 e 4 bytes, respectivamente, pode ser feita convertendo-se o operando de 1 byte para uma representação de 4 bytes. O resultado produzido é um inteiro de 4 bytes. Já para uma operação aritmética entre um inteiro e um real, os dois operandos devem estar representados como reais, assim como o resultado da operação. TIPOS DE DADOS DE CALENDÁRIO Normalmente, registros de tempo são representados como um determinado instante numa certa escala. Essa escala pode ser mais ou menos precisa, de acordo com o espaço de armazenagem disponível. Vamos supor que seja necessário registrar o instante 05/03/ :12:00. Vamos também supor que o instante de referência seja 01/01/ :00:00 e que a precisão seja de minutos. Neste caso, bastaria armazenar o número de minutos decorridos entre o instante de referência e o instante sendo registrado. Esse número seria ! Ou seja, há minutos entre a zero hora do dia 01/01/1900 e as quatorze horas e doze minutos do dia 05/03/2007. O mesmo raciocínio seria aplicado aos instantes anteriores ao de referência: o instante 31/12/ :59:00 seria representado como 1. O gráfico abaixo ilustra uma escala de tempo. Representação interna Tempo /03/ :14: /03/ :13:00 T /03/ :12: /03/ :11: /01/ :02: /01/ :01:00 T /01/ :00: /12/ :59: /12/ :58: Se a precisão fosse de dias, seriam unidades entre 01/01/1900 e 05/03/2007. Observamos que, dependendo da precisão requerida, o tamanho em bytes do número que representa a diferença pode ser maior ou menor. No caso de minutos, seriam necessários pelo menos 26 bits; com precisão de dias, 17 bits fariam o serviço.

4 4 Capítulo 7: Conhecendo os tipos de dados O espaço de memória necessário para armazenar um instante de tempo (seja data, horário ou a combinação de ambos) depende: da precisão requerida e da amplitude que se deseja cobrir. Note que se fôssemos armazenar o instante 31/12/ :24:00, com precisão de milisegundos, teríamos grande precisão (milisegundos) e grande amplitude (mais de anos!). Aplicações de bancos de dados, na maior parte das vezes, não requerem muita amplitude e precisão. Datas de nascimento e datas de transações comerciais, por exemplo, estão adequadamente cobertas com amplitudes próximas de 200 anos, para o passado e para o futuro, com precisão de dias. Alguns registros de tempo, entretanto, podem requerer maior precisão, tais como os atributos que registram o exato momento em que as transações foram efetuadas, onde uma precisão de segundos, ou até de milisegundos, pode ser necessária. De qualquer forma, há vários graus de precisão e amplitude nas implementações que permitem uma escolha bastante adequada. Os tipos que registram tempo devem permitir alguma forma de aritmética sobre seus valores. Calcular as datas de uma prestação mensal a partir de uma data base, somando-se um mês a cada passo, ou calcular o número de dias decorridos entre duas datas ou, ainda, calcular o número de minutos entre dois registros de tempo são exemplos de operações usuais sobre esses tipos que devem estar disponíveis ao programador SQL. Além disso, tipos que armazenam registros de tempo são inerentemente estruturados: ano, mês, dia, hora, etc, são componentes naturais da nossa concepção de tempo e a capacidade de isolar e manipular esses componentes é um requisito primordial. TIPOS DE DADOS STRINGS São tipos de dados que armazenam coleções de caracteres. Caracteres representam símbolos gráficos, ou de controle, e têm uma estrutura uniforme, dependendo do conjunto com o qual se trabalhe. Existem dezenas de diferentes padrões de caracteres, tais como ASCII, EBCDIC, Unicode (Padrão de Caracteres da ISSO - International Standards Organization), etc. De acordo com o padrão, o número de bytes necessários para representar um caracter pode variar. Há conjuntos monobyte, como o código ASCII, e conjuntos multibyte, como alguns alfabetos asiáticos. Os conjuntos podem ser diferenciados entre si: um mesmo código pode representar diferentes caracteres gráficos em diferentes conjuntos. Isso ocorre, principalmente, com conjuntos de caráter nacional: o conjunto padrão (ou padrão nacional) utilizado na Grécia é bem diferente do conjunto padrão utilizado no Brasil! Muitos dos conjuntos de caracteres utilizados estão limitados ao máximo de 256 caracteres, uma vez que dispõem de somente 8 bits para representar cada caracter. Com a explosão da utilização dos computadores e com a sofisticação dos equipamentos como impressoras e monitores, muitos outros caracteres passaram a ser utilizados, tais como símbolos matemáticos, letras gregas, setas e outros grafismos que demandam uma expansão nos conjuntos de caracteres. O conjunto Unicode visa a solucionar este problema. Com códigos de 16 bits, ou 2 bytes, o número de possibilidades passa para caracteres, o que é suficiente para acomodar quase todos os conjunto existentes. Outro aspecto é o tamanho do código de cada caracter no âmbito do padrão. É possível que se tenham caracteres com códigos de comprimento diferente. Assim, as letras mais comumente usadas podem ter códigos mais curtos, enquanto os caracteres mais raros podem ocupar mais espaço. Este é um princípio bastante empregado em algoritmos de compactação de dados. Alguns implementações, como Oracle, são capazes de manipular conjuntos de caracteres com códigos de tamanho variável. As implementações SQL são capazes de identificar os conjuntos de caracteres em uso e manipulá-los adequadamente. Note que a busca de um padrão num conjunto de caracteres de 1 byte é diferente da busca de um padrão num conjunto multibyte. Essas diferenças devem ser transparentes para o programador SQL e resolvidas pela implementação, automaticamente.

5 Error! Style not defined. 5 As operações usuais sobre strings são bastante simples, resumindo-se à concatenação, desmembramento em substrings e busca de substrings. Entretanto, uma característica importante é a capacidade de armazenar valores com comprimentos variáveis. Nomes de pessoas e empresas, títulos de livros e endereços são exemplos em que as diferenças de tamanho de um valor para outro podem ser consideráveis. A capacidade de manipular campos variáveis torna-se, assim, um importante fator de diferenciação dos tipos string. TIPOS DE DADOS BINÁRIOS São tipos de dados não estruturados. Embora normalmente sejam tratados genericamente como caracteres, na verdade dados binários não têm necessariamente esta característica. Uma figura, por exemplo, é um mapa de bits que não configuram caracteres específicos. Normalmente, dados binários são tratados como um todo, pois não há uma estrutura prevalecente. TIPOS DE DADOS ESPECÍFICOS Cada implementação possui peculiaridades próprias e essas peculiaridades podem se manifestar através da existência de tipos específicos, exclusivos. Esses tipos de dados serão tratados separadamente. TIPOS DE DADOS DERIVADOS A redigir???. TIPOS DE DADOS NO ACCESS, MYSQL, ORACLE E SQL SERVER As seções seguintes deste capítulo apresentam, de forma completa, os tipos de dados disponíveis em cada uma das quatro implementações SQL consideradas neste livro. Os tipos são identificados pelo nome principal, juntamente com seus sinônimos. Isto é útil porque, conhecendo-se os tipos e os sinônimos válidos em cada implementação, fica mais fácil produzir scripts SQL que sejam portáteis. Cada tipo é detalhado com relação à gama de valores que suporta e ao espaço requerido para armazenagem. 7.2 TIPOS DE DADOS NO ACCESS QUADRO RESUMO DOS TIPOS DE DADOS NO ACCESS Tipo Sinônimos Lógicos BIT LOGICAL, LOGICAL1, YESNO Numéricos BYTE SHORT LONG SINGLE DOUBLE CURRENCY INTEGER1 INTEGER2, SMALLINT INT, INTEGER, INTEGER4 FLOAT4, IEEESINGLE, REAL FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC MONEY Tempo DATETIME DATE, TIME, TIMESTAMP

6 6 Capítulo 7: Conhecendo os tipos de dados String Binários Específicos TEXT LONGTEXT BINARY LONGBINARY GUID COUNTER ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR LONGCHAR, MEMO, NOTE VARBINARY GENERAL, OLEOBJECT AUTOINCREMENT TIPOS LÓGICOS NO ACCESS Access implementa o tipo BIT, definido expressamente como um tipo lógico, isto é, que pode assumir os valores true e false, além do valor nulo. Se T é uma tabela onde a é um atributo definido com o tipo BIT (ou LOGICAL, LOGICAL1, YESNO), é possível escrever uma consulta como select * from T where a uma vez que um atributo de um tipo lógico pode fazer o papel de uma expressão lógica. Esta consulta seria equivalente a select * from T where a = true Atenção, porém, porque esta construção também é válida para atributos de outros tipos, que não lógicos. Uma consulta como produz como resultado select * from inscricao where nota matricula coddisciplina nota , , , , , , ,0 Os registros com notas nulas não aparecem no resultado, assim como não apareceriam registros com notas iguais a zero. Isto ocorre porque são considerados verdadeiros os valores diferentes de zero (notas negativas teriam aparecido). Mesmo uma consulta como select * from aluno where nome seria possível! Compõem o resultado todos os registros em que o atributo nome não é nulo. O mesmo raciocínio aplica-se a campos com tipos de calendário.

7 Error! Style not defined. 7 As duas consultas a seguir mostram como um valor lógico é apresentado no resultado de uma consulta. select nota, nota > 5 as 'maior que cinco?' from inscricao select nota, iif(nota > 5, true, iif(nota <= 5, false, null)) as 'maior que cinco?' from inscricao nota 'maior que cinco?' NULL NULL 8,00-1 9,50-1 3,00 0 4,20 0 NULL NULL 7,00-1 5, ,00-1 Na primeira consulta, a segunda coluna contém o resultado da expressão nota > 5, cujo valor pode ser verdadeiro, falso ou nulo, representados, respectivamente, com 1, 0 e null. Na segunda consulta, equivalente à primeira, a segunda coluna inclui no resultado, expressamente, os literais true, false e null, de acordo com o resultado da expressão lógica. TIPOS DE CALENDÁRIO NO ACCESS Os valores de tempo são armazenados sob o tipo datetime, que consiste num número real de 8 bytes, com precisão de minutos. O instante de referência é zero hora do dia 30/12/1899. A amplitude engloba datas do ano 0008 até o ano A parte inteira do número representa o número (positivo ou negativo) de dias decorridos da data do instante de referência. A parte decimal do número representa a fração do dia correspondente ao horário sendo armazenado. O instante que correspondente às 12 horas do dia 01/01/1900 é representado pelo número 2,5. A parte inteira, 2, é o número de dias decorridos desde 30/12/1899. A parte decimal, 0,5, corresponde ao horário do meio-dia, que é exatamente a metade de um dia. Outro exemplo: 36891,75 é o número que corresponde às 18 horas do dia 31/12/2000. O Access permite operações aritméticas sobre operandos do tipo de registro de tempo. Como uma data é sempre armazenada como um número, pode-se somar ou subtrair valores, que são transformados em unidades de tempo. Por exemplo, somando-se 1 a um registro de tempo obtém-se o registro de tempo, com o mesmo horário, do dia seguinte. Somando-se 1/24 a um registro de tempo obtém-se o registro de tempo de uma hora depois. Embora este seja um recurso útil por vezes, a manipulação de datas é mais segura com as funções apropriadas para este fim, apresentadas no capítulo 8. A consulta a seguir produz a lista de alunos juntamente com suas datas de nascimento e a data em que completam dias de vida. select nome, nascimento, nascimento as dia10000 from aluno nome nascimento dia10000 Ricardo Biondi 21/02/80 09/07/07 Maria Rita Colatti 10/11/78 28/03/06 Oscarito Vianna 14/08/79 30/12/06 Barbara Carlito 29/10/79 16/03/07 Carlos Maradona 30/06/77 15/11/04 Sacadura Miranda 12/12/81 29/04/09 Maria Lucia Silva 10/08/75 26/12/02

8 8 Capítulo 7: Conhecendo os tipos de dados A próxima consulta é mostrada a título de curiosidade, uma vez que sua utilidade beira o zero absoluto. Sendo a data de nascimento armazenada como um número, é possível imaginar algo como select nascimento, nascimento * nascimento as produto from aluno nascimento produto 21/02/ /11/ /08/ /10/ /07/ /12/ /08/ Uma distante, mas possível, utilidade para essa construção é a geração de números aleatórios, vistos no capítulo 8. TIPOS NUMÉRICOS NO ACCESS Os tipos numéricos no Access cobrem inteiros BYTE, SHORT, LONG, de 1, 2 e 4 bytes e números de ponto flutuante, SINGLE, DOUBLE, de 4 e 8 bytes, respectivamente. O tipo CURRENCY (ou MONEY), é um exemplo aproximado de número decimal, porque é definido com 4 casas decimais, mas o Access não permite que o número total de dígitos seja definido: são sempre 19 dígitos. Na verdade, este tipo é armazenado como um inteiro escalado, pois tem a mesma gama de valores do tipo LONG, consideradas as decimais em todas as operações em que aparece como operando. TIPOS STRING NO ACCESS Os tipos string armazenam caracteres ASCII, com um byte por caracter. Há dois tipos, sendo um para strings curtas, até 255 caracteres e outro, para strings muito longas, com até 1,2 Gbytes. TIPOS BINÁRIOS NO ACCESS Quanto aos tipos binários, há dois tipos, sendo um variável, com até 255 bytes e outro longo, adequado para armazenar figuras, documentos do Office, mapas de bits, sons e outros valores não organizados como caracteres. TIPOS ESPECÍFICOS NO ACCESS Os tipos específicos COUNTER e GUID permitem a geração de códigos identificadores de registros. COUNTER é um número seqüencial, armazenado como um inteiro LONG, que não se repete na tabela onde foi utilizado. Já o tipo GUID, conhecido também como Código de Replicação, garante códigos de 16 bytes que não se repetem em outros registros. RELAÇÃO COMPLETA DOS TIPOS DE DADOS NO ACCESS ALPHANUMERIC O mesmo que TEXT. AUTOINCREMENT O mesmo que COUNTER.

9 Error! Style not defined. 9 BINARY(t) Dados binários de formato livre, de comprimento variável n, 0 n t 255. Tamanho: 1 + n bytes Sinônimos: VARBINARY BIT Valores lógicos, verdadeiro e falso, armazenados como os números 1 e 0, respectivamente. Tamanho: 1 byte Sinônimos: LOGICAL, LOGICAL1, YESNO BYTE Números inteiros, sem sinal, entre 0 e 255. Tamanho: 1 byte Sinônimos: INTEGER1 CHAR O mesmo que TEXT. CHARACTER O mesmo que TEXT. CURRENCY Números entre ,5808 e ,5807, com 4 casas decimais fixas. Valores com mais de 4 casas decimais são truncados na quinta decimal. Tamanho: 8 bytes Sinônimos: MONEY COUNTER Números utilizados em colunas com auto-incremento, armazenados como LONG. Tamanho: 4 bytes Sinônimos: AUTOINCREMENT DATETIME Registros de tempo entre os anos 0008 e 9999, com precisão de minutos. Tamanho: 8 bytes Sinônimos: DATE, TIME, TIMESTAMP DATE O mesmo que DATETIME. DOUBLE Um valor de ponto flutuante de dupla precisão com um intervalo de 1, a 4, para valores negativos, 4, a 1, para valores positivos e 0. Tamanho: 8 bytes Sinônimos: FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC FLOAT O mesmo que DOUBLE. FLOAT4 O mesmo que SINGLE. FLOAT8 O mesmo que DOUBLE. GENERAL O mesmo que LONGBINARY. GUID Um número de identificação exclusivo utilizado com chamadas de procedimento remoto. Também conhecido por código de replicação, garante um identificador que não se repete em outros registros. Tamanho: 16 bytes

10 10 Capítulo 7: Conhecendo os tipos de dados IEEESINGLE O mesmo que SINGLE. IEEEDOUBLE O mesmo que DOUBLE. INT O mesmo que LONG. INTEGER O mesmo que LONG. INTEGER1 O mesmo que BYTE. INTEGER2 O mesmo que SHORT. INTEGER4 O mesmo que LONG. LOGICAL O mesmo que BIT. LOGICAL1 O mesmo que BIT. LONG Números inteiros, com sinal, entre e Tamanho: 4 bytes Sinônimos: INT, INTEGER, INTEGER4 LONGBINARY Formato livre, de zero até 1,2 Gbytes. Tamanho: variável, dependendo do tamanho do atributo Sinônimos: GENERAL, OLEOBJECT LONGCHAR O mesmo que LONGTEXT. LONGTEXT Strings de caracteres, de comprimento variável n, 0 n t 1,2 Gbytes. Tamanho: 4 + n bytes Sinônimos: LONGCHAR, MEMO, NOTE MEMO O mesmo que LONGTEXT. NOTE O mesmo que LONGTEXT. NUMBER O mesmo que DOUBLE. NUMERIC O mesmo que DOUBLE. OLEOBJECT O mesmo que LONGBINARY. REAL O mesmo que SINGLE. SHORT Números inteiros, com sinal, entre e Tamanho: 2 bytes Sinônimos: INTEGER2, SMALLINT SINGLE

11 Error! Style not defined. 11 Números reais com precisão simples entre -3, e 1, para valores negativos; -1, e 3, para valores positivos. Tamanho: 4 bytes Sinônimos: FLOAT4, IEEESINGLE, REAL SMALLINT O mesmo que SHORT. STRINGT O mesmo que TEXT. TEXT(t) Strings de caracteres, de comprimento variável n, 0 n t 255. Tamanho: 1 + n bytes Sinônimos: ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR TEXT O mesmo que TEXT(255). TIME O mesmo que DATETIME. TIMESTAMP O mesmo que DATETIME. VARBINARY O mesmo que BINARY. VARCHAR O mesmo que TEXT. YESNO O mesmo que BIT. 7.3 TIPOS DE DADOS NO MYSQL QUADRO RESUMO DOS TIPOS DE DADOS NO MYSQL Tipo Sinônimos TINYINT BIT, BOOL Numéricos Tempo SMALLINT MEDIUMINT INT BIGINT FLOAT DOUBLE DECIMAL DATE DATETIME TIMESTAMP TIME YEAR CHAR CHAR BINARY INTEGER DOUBLE PRECISION, REAL DEC, NUMERIC NATIONAL CHAR, NCHAR NATIONAL CHAR BINARY, NCHAR BINARY, CHAR BYTE

12 12 Capítulo 7: Conhecendo os tipos de dados String Binários Específicos VARCHAR TEXT TINYTEXT MEDIUMTEXT LONGTEXT TINYBLOB BLOB MEDIUMBLOB LONGBLOB ENUM SET NATIONAL VARCHAR, VARCHARACTER TIPOS LÓGICOS NO MYSQL No MySQL não há um tipo de dados que expressamente armazene os valores lógicos verdadeiro e falso. Entretanto, os mesmos efeitos podem ser facilmente simulados. As duas consultas a seguir ilustram claramente este aspecto. A primeira delas produz como resultado a lista de notas da tabela Inscrição e o valor lógico resultante da expressão lógica nota > 5 A segunda consulta produz exatamente o mesmo resultado, porém obtido a partir do uso explícito dos literais true e false na sua lista alvo. Nos dois casos, observa-se que o valor verdadeiro ( ou true) é 1 e o valor falso (ou false) é 0. Com isso, pode-se inferir corretamente que qualquer valor numérico, diferente de zero, vale como o valor verdadeiro numa expressão lógica e que qualquer valor igual a zero vale como falso. select nota, nota > 5 as 'maior que cinco?' from inscricao select nota, if(nota > 5, true, if(nota <= 5, false, null)) as 'maior que cinco?' from inscricao nota 'maior que cinco?' NULL NULL 8,00 1 9,50 1 3,00 0 4,20 0 NULL NULL 7,00 1 5, ,00 1 O efeito disso é que uma consulta como select * from inscricao where nota

13 Error! Style not defined. 13 produz uma lista com todos os registros de INSCRIÇÃO que não possuem notas nulas, como havíamos constatado no Access. Isto não significa que uma consulta como select * from inscricao where nota = true seja equivalente. O teste de igualdade acima é sempre e o resultado, vazio. Mas, o que acontece se usarmos valores do tipo string nesta situação? Diferentemente do que acontece no Access, a consulta select * from aluno where nome produz um resultado vazio (no Access aparecem todos os alunos para esta consulta!). Note que a conversão do nome para um tipo numérico retorna zero, como veremos no capítulo 8. Por fim, a consulta select * from aluno where nascimento retorna todos os alunos que não têm a data de nascimento nula. Em suma, qualquer expressão, numérica ou não, pode ser utilizada no papel de uma expressão lógica. Se o seu valor, convertido para um tipo numérico, for diferente de zero, a expressão é verdadeira; caso contrário, é falsa. Expressões numéricas no papel de expressões lógicas podem ser combinadas pelos operadores lógicos, o que permite uma consulta como select * from aluno where 0 or 1 TIPOS NUMÉRICOS NO MYSQL O MySQL oferece quatro tipos de inteiros, com 1, 2, 3, 4 e 8 bytes (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT). Todos podem ser declarados com signed ou unsigned (com ou sem sinal). Os números reais de ponto flutuante podem ter precisão simples ou dupla (FLOAT e DOUBLE), e também ser definidos com signed ou unsigned. Neste caso, a gama de valores não é alterada, nem o modo de armazenagem: simplesmente, no caso de unsigned, os valores negativos são desabilitados. O tipo DECIMAL permite a armazenagem de números reais de ponto fixo. Na declaração, são determinados o número total de dígitos e o número de casas decimais. Esses números são armazenados como strings mas, como devem ser convertidos para números reais para ser operados, têm sua gama de valores restrita à gama dos números reais de dupla precisão. TIPOS STRING NO MYSQL MySQL oferece duas opções básicas de tipos string: com tamanho fixo ou variável. O tipo CHAR define strings de tamanho fixo com até 255 caracteres. Se uma string menor que o tamanho é armazenada, a mesma é completada com caracteres espaço, no final. Quando recuperada, os brancos no final são todos retirados. O tipo VARCHAR define strings de tamanho variável, limitadas em 255 caracteres. Espaços em branco ao final da string são removidos quando esta é armazenada. Tanto os tipo CHAR e VARCHAR podem ser acompanhados das palavras-chave BINARY e NATIONAL. A primeira significa que as strings devem ser ordenadas com sensibilidade de maiúsculas e minúsculas. A segunda palavra-chave determina que o conjunto de caracteres usado para as strings deve ser o padrão nacional. Isto já é default no MySQL, que usa o padrão ISO (Latin1) como conjunto padrão. O conjunto padrão pode ser alterado pela opção -

14 14 Capítulo 7: Conhecendo os tipos de dados (Latin1) como conjunto padrão. O conjunto padrão pode ser alterado pela opção - default-character-set. O MySQL permite que, através de seus arquivos de configuração, novos conjuntos de caracteres sejam definidos e utilizados pelo servidor. Outros quatro tipos de tamanho variável são disponíveis no MySQL: TEXT, TINYTEXT, MEDIUMTEXT e LONGTEXT. A diferença entre eles está no tamanho máximo admitido em cada caso, respectivamente , 255, e caracteres. De fato, os tipos *TEXT e *BLOB são bastante semelhantes, exceto pelo critério de ordenação: sensível a maiúsculas e minúsculas para *BLOB e insensível para *TEXT. MySQL, por sua conta, altera os tipos de uma tabela observando que tipos VARCHAR com tamanho menor que 4 caracteres são criados como CHAR; se há um tipo de tamanho variável em alguma coluna, todo registro passa a ter tamanho variável e todos os tipos CHAR com mais de 3 caracteres são criados como VARCHAR. Atributos do tipo *TEXT podem ser referenciados nas cláusulas order by e group by. Contudo, são considerados apenas os primeiros bytes do campo. A variável max_sort_lenght determina quantos bytes são usados. O default é 1.024, mas pode ser alterado com a opção -O. TIPOS DE CALENDÁRIO NO MYSQL MySQL trabalha com cinco tipos de dados para registro de tempo. O tipo date tem precisão de dias, e portanto representa datas redondas, com uma amplitude de quase anos, de 01/01/ :00:00 até 31/12/ :00:00. O tipo datetime é o mais preciso e de maior amplitude, suportando tempos entre 01/01/ :00:00 até 31/12/ :59:59, com precisão de segundos. O tipo timestamp oferece a mesma precisão, de segundos, numa amplitude menor, e registra tempos desde 01/01/ :00:00 até o ano de O tipo time serve para registrar intervalos de tempo em horas, minutos e segundos e suporta uma escala relativa entre -838:59:59 e +838:59:59. Usualmente, este tipo é usado como um cronômetro, pois não é automaticamente conversível para dias. O quinto e último tipo, year, serve para a armazenagem de anos, com dois ou quatro dígitos. Com dois dígitos, representa os anos entre 1970 e Com quatro dígitos, registra anos entre 1901 e O programador deve ser cuidadoso com as datas no MySQL porque não há um teste sobre sua validade. Embora o ano deva estar entre 1000 e 9999, o mês entre 0 e 12 e o dia entre 0 e 31, é possível registrar algo como 31/11/2010! Também é possível registrar 00/11/1980 ou 10/00/1960. Este último caso pode ser usado como um recurso, por exemplo, quando se tem dados incompletos sobre alguma data, embora a aritmética de datas não funcione corretamente sobre esses valores. Quando o valor nulo é atribuído a uma coluna do tipo TIMESTAMP, na verdade o MySQL armazena a data e hora correntes para aquele valor. Por este motivo, é irrelevante permitir ou não valores nulos para uma coluna deste tipo. Vide capítulo 11. Os tipos de calendário permitem operações aritméticas sobre seus valores, embora com resultados por vezes imprevisíveis! A consulta abaixo ilustra este aspecto.

15 Error! Style not defined. 15 select nome, nascimento as nascimento_d, nascimento+0 as nascimeto_n, nascimento as dia10000_n, cast(nascimento+1000 as date) as dia10000_d, date_add(nascimento, INTERVAL DAY) as dia10000_ok from aluno nome nascimento nascimento_n dia10000_n dia10000_d dia10000_ok Ricardo Biondi 21/02/ /02/81 09/07/07 Maria Rita Colatti 10/11/ /11/79 28/03/06 Oscarito Vianna 14/08/ /08/80 30/12/06 Barbara Carlito 29/10/ /10/80 16/03/07 Carlos Maradona 30/06/ /06/78 15/11/04 Sacadura Miranda 12/12/ /12/82 29/04/09 Maria Lucia Silva 10/08/ /08/76 26/12/02 Além do nome de cada aluno, a consulta produz mais cinco colunas. A primeira mostra a data de nascimento. Na segunda, aparece o número que corresponde à data de nascimento do aluno. Note que somando 0 a uma data força a conversão de tipo, de registro de tempo para inteiro. É possível observar que o número contém exatamente ano/mês/dia, nesta ordem. Este é o problema, ilustrado na terceira coluna: somado-se à data de nascimento, tem-se um número que não corresponde à data de dez mil dias depois, como tínhamos no Access. Note que para a data 30/06/1977 o número é (terceira coluna) que somado a resulta em na quarta coluna. A conversão deste último para data, através da função cast, retorna 30/06/78 na quinta coluna. Ou seja, um ano depois e não dias como queríamos. Um ano depois porque somamos uma unidade na quinta casa decimal à esquerda, que corresponde exatamente ao ano no citado número! A sexta coluna mostra a data correta, obtida através da função date_add, que corresponde a dias após o nascimento de cada aluno. As funções cast e date_add são explicadas em detalhes no capítulo 8. Outro caso interessante é mostrado a seguir. select nascimento, cast(nascimento+1 as date) as dia_seguinte from aluno nascimento dia_seguinte 21/02/80 22/02/80 10/11/78 11/11/78 14/08/79 15/08/79 29/10/79 30/10/79 30/06/77 31/06/77 12/12/81 13/12/81 10/08/75 11/08/75 Neste exemplo, aparecem as datas dos dias seguintes, obtidos somando-se 1 à data de nascimento de cada aluno. Note que, somando-se apenas 1 o resultado está aparentemente correto. Mas há um problema: na quinta linha, aparece a data 31/06/77, que é inválida. Embora seja um recurso bastante comum entre programadores SQL, a aritmética de datas nem sempre funciona corretamente no MySQL. Todas as operações com datas devem preferencialmente ser efetuadas através das funções de calendário, apresentadas no capítulo 8. TIPOS BINÁRIOS NO MYSQL Há quatro tipos binários no MySQL: BLOB, TINYBLOB, MEDIUMBLOB e LONGBLOB. A diferença está no tamanho máximo admitido em cada caso, respectivamente , 255, e

16 16 Capítulo 7: Conhecendo os tipos de dados caracteres. Tipos *BLOB e *TEXT são bastante semelhantes, exceto pelo critério de ordenação: sensível a maiúsculas e minúsculas para *BLOB e insensível para *TEXT. A exemplo dos tipos *TEXT, atributos dos tipos *BLOB também podem ser referenciados nas cláusulas order by e group by. Contudo, são considerados os primeiros bytes do campo apenas. A variável max_sort_lenght é determina quantos bytes são usados. O default é 1024, mas pode ser alterado com a opção -O. TIPOS ESPECÍFICOS NO MYSQL O tipo ENUM permite estabelecer os possíveis valores de strings para uma coluna. Esses valores podem ser referenciados por seus valores literais ou pela posição relativa de cada um. Por exemplo, se uma coluna definida como ENUM ( amarelo, verde, azul ) Somente algum desses valores, além do valor nulo e da string vazia podem armazenados nesta coluna. A ordem em que são enumerados os valores define também o critério de ordenação da coluna. No caso acima, os registros com o valor verde apareceriam antes daqueles que têm azul. Um atributo do tipo ENUM referenciado num contexto numérico toma o valor de sua posição na lista que o define (contado a partir de 1). Assim, se o valor de x é verde a expressão x+0 tem valor 2. Um tipo enumerado pode ter até elementos. Um tipo enumerado requer o espaço de armazenagem de um ou dois bytes dependendo do número de elementos. O tipo SET é uma string especial que pode conter uma combinação de um ou mais valores de uma lista que é fornecida por ocasião da criação da tabela. Uma coluna criada com o tipo Pode conter os valores SET ('amarelo', 'verde', 'azul') 'amarelo' 'amarelo', 'verde' 'amarelo', 'azul' 'verde' 'verde', 'azul' 'azul' 'amarelo', 'verde', 'azul' além do valor nulo e da string vazia. Pode haver até 64 diferentes valores. Cada elemento, a partir da esquerda da lista, corresponde a um número que é uma potência de 2 de acordo com a posição do elemento. Assim, o valor amarelo corresponde a 1; verde corresponde a 2 e azul corresponde a 4. Um conjunto com os valores verde e azul corresponderia ao valor 6 e o conjunto com os três elementos teria valor 7. Um atributo do tipo set pode ser manipulado como um número ou como uma string. Veja a função find_in_set no capítulo 8. RELAÇÃO COMPLETA DOS TIPOS DE DADOS NO MYSQL BIGINT Números inteiros: entre e , se declarado como signed; entre 0 e , se declarado como unsigned. Tamanho: 8 bytes BIT O mesmo que TINYINT. BLOB Formato livre, com até caracteres; ordenado com sensibilidade para maiúsculas e minúsculas.

17 Error! Style not defined. 17 Tamanho: comprimento do campo + 2 bytes BOOL O mesmo que TINYINT. CHAR (t) String de caracteres, de tamanho fixo t, 0 t 255; quando armazenada, preenchida com espaços à direita até completar o tamanho; quando recuperada, espaços à direita são removidos; CHAR(0) é permitido, porém os únicos valores permitidos são null e a string de zero caracteres. Tamanho: 1 + t bytes Sinônimos: NATIONAL CHAR (t) CHAR O mesmo que CHAR (1). CHAR (t) BINARY Semelhante a CHAR (t), porém com sensibilidade para maiúsculas e minúsculas na ordenação. Tamanho: 1 + t bytes Sinônimos: NATIONAL CHAR (t) BINARY CHAR (t) BYTE O mesmo que CHAR (t) BINARY. DATE Registros de tempo, entre 01/01/1000 e 31/12/9999, com precisão de dias (datas apenas). Tamanho: 3 bytes DATETIME Registros de tempo, entre 01/01/ :00:00 e 31/12/ :59:59, com precisão de segundos. Tamanho: 8 bytes DEC (p, s) O mesmo que DECIMAL (p, s). DECIMAL (p, s) Números armazenados como strings de dígitos, com ou sem sinal dependendo se declarados como signed ou unsigned, limitados aos valores máximos do tipo DOUBLE; p é o tamanho total do número; s é o número de casas decimais. Para números negativos, o sinal conta como um dígito. Tamanho: p +2 bytes se s > 0; p +1 bytes se s = 0; s +2 bytes, se p < s Sinônimos: DEC (p, s), NUMERIC (p, s) DOUBLE Números reais, com precisão dupla, entre 1, e - 2, , 0 e entre 2, e 1, , se declarado como signed; se for declarado com unsigned, os valores negativos são desabilitados. Tamanho: 8 bytes Sinônimos: DOUBLE PRECISION, REAL DOUBLE PRECISION O mesmo que DOUBLE. ENUM (e 1,...,e n) Strings que podem assumir somente um dos até valores enumerados, o valor nulo ou o valor de erro. Tamanho: 1 ou 2 bytes, dependendo do número de elementos FLOAT

18 18 Capítulo 7: Conhecendo os tipos de dados Números reais com precisão simples entre -3, e -1, , 0 e entre 1, e 3, , se declarado como signed; se for declarado como unsigned, os valores negativos são desabilitados. Tamanho: 4 bytes Sinônimos: DOUBLE PRECISION, REAL FLOAT (p [,s]) O mesmo que FLOAT se p 24; o mesmo que DOUBLE se 25 p 53. O argumento s indica o número de casas decimais. Tamanho: 4 ou 8 bytes, dependendo de p. INT Números inteiros: entre e , se declarado como signed; entre 0 e , se declarado como unsigned. Tamanho: 4 bytes Sinônimos: INTEGER INTEGER O mesmo que INT. LONGBLOB Formato livre, com até caracteres; ordenado com sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 4 bytes LONGTEXT Dados de formato livre, com até caracteres; ordenado sem sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 4 bytes MEDIUMBLOB Formato livre, com até caracteres; ordenado com sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 3 bytes MEDIUMINT Números inteiros: entre e , se declarado como signed; entre 0 e , se declarado como unsigned. Tamanho: 3 bytes MEDIUMTEXT Dados de formato livre, com até caracteres; ordenado sem sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 3 bytes NATIONAL CHAR (t) O mesmo que CHAR (t). NATIONAL CHAR (t) BINARY O mesmo que CHAR (t) BINARY. NUMERIC (p, s) O mesmo que DECIMAL (p, s). REAL O mesmo que DOUBLE. Se o MySQL estiver rodando sob a opção --ANSI ou com a opção --sqlmode=real_as_float, então REAL é o mesmo que FLOAT. SET (e 1,...,e n)

19 Error! Style not defined. 19 Strings que podem assumir qualquer combinação de um ou mais dos até 64 valores enumerados. Tamanho: de 1 a 8 bytes, dependendo do número de elementos SMALLINT Números inteiros: entre e , se declarado como signed; entre 0 e , se declarado como unsigned. Tamanho: 2 bytes TEXT Dados de formato livre, com até caracteres; ordenado sem sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 2 bytes TIME Registros de tempo, compostos apenas de horas, minutos e segundos, entre -838:59:59 e 838:59:59, com precisão de segundos. Tamanho: 3 bytes TIMESTAMP (t) Registros de tempo, entre 01/01/ :00:00 e o ano de 2037, com precisão de segundos. Este tipo pode ser declarado associado a um tamanho t (que pode ser 14, 12, 10, 8, 6, 4 ou 2) que refere-se somente ao formato de edição do dados quando da sua apresentação, não fazendo diferença quanto à forma de armazenagem. Tamanho: 4 bytes TINYBLOB Formato livre, com até 255 caracteres; ordenado com sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 1 byte TINYINT Números inteiros: entre -128 e 127, se declarado como signed; entre 0 e 255, se declarado como unsigned. Tamanho: 1 byte Sinônimos: BIT, BOOL TINYTEXT Dados de formato livre, com até 255 caracteres; ordenado sem sensibilidade para maiúsculas e minúsculas. Tamanho: comprimento do campo + 1 bytes VARCHAR (t) Strings de caracteres, de tamanho variável até t, 0 t 255; quando armazenadas, espaços à direita são removidos; VARCHAR(0) é permitido, porém os únicos valores admissíveis são null e a string de zero caracteres. Tamanho: t + 1 bytes Sinônimos: NATIONAL VARCHAR (t) VARCHARACTER (t) O mesmo que VARCHAR (t). YEAR (4) Registros de tempo, compostos apenas do ano, com quatro dígitos, entre 1901 e Tamanho: 1 byte

20 20 Capítulo 7: Conhecendo os tipos de dados YEAR (2) Registros de tempo, compostos apenas do ano, com dois dígitos, entre 1970 e Tamanho: 1 byte 7.4 TIPOS DE DADOS NO ORACLE Alguns dos tipos listados a seguir são aceitos pelo Oracle a título de compatibilidade com tipos ANSI, e podem ser utilizados na construção de tabelas, por exemplo. O sistema armazena o nome do tipo original mas converte-os para tipos nativos (built-in). Na relação completa de tipos, ao final desta seção, os tipos ANSI aparecem destacados dos tipos built-in. QUADRO RESUMO DOS TIPOS DE DADOS NO ORACLE Tipo NUMBER Sinônimos DEC, DECIMAL, DOUBLE PRECISION, FLOAT, FLOAT (p), INTEGER, INT, NUMERIC, REAL, SMALLINT Tempo DATE String Binários Específicos CHAR NCHAR VARCHAR2 NVARCHAR2 LONG CLOB NCLOB BLOB RAW LONG RAW BFILE ROWID UROWID CHARACTER NATIONAL CHARACTER, NATIONAL CHAR VARCHAR, CHARACTER VARYING, CHAR VARYING NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING, NCHAR VARYING TIPOS LÓGICOS NO ORACLE O Oracle não disponibiliza tipos lógicos explícitos, como faz o Access, nem permite que expressões aritméticas sejam automaticamente convertidas para valores lógicos como o MySQL. Assim, atributos que têm o papel de registrar valores como sim ou não devem ser simulados, seja com tipos string ou numéricos. Isso significa que uma consulta como select * from inscricao where nota que foi usada como exemplo no caso do Access e do MySQL não é aceita pelo Oracle. Efeito semelhante teria de ser obtido com uma consulta como select *

21 Error! Style not defined. 21 from inscricao where nota is not null and nota > 0 TIPOS NUMÉRICOS NO ORACLE Oracle armazena números de ponto flutuante e de ponto fixo. Não há referências explícitas a números inteiros, que são armazenados como números de ponto fixo com zero casas decimais. Os tipos INTEGER, INT e SMALLINT são tratados como NUMBER (38,0). Os tipos DOUBLE, DOUBLE PRECISION e REAL, que permitem compatibilidade com tipos ANSI, são interpretados como NUMBER. Oracle permite a especificação de escalas negativas, como explicado na seção 7.1. O efeito dessas definições é arredondar o número à esquerda da casa decimal. TIPOS STRING NO ORACLE Oracle oferece tipos para strings de tamanho fixo que manipulam conjuntos de caracteres monobyte ou multibyte (CHAR e NCHAR). Esses atributos são completados com brancos no final quando são armazenados com comprimentos menores que o tamanho especificado na declaração do tipo da coluna. Para strings de tamanho variável, os tipos VARCHAR2 e NVARCHAR2 suportam, igualmente, conjuntos de caracteres mono ou multibyte. Strings longas podem ser armazenadas sob os tipos LONG, CLOB e NCLOB. Os dois últimos suportam conjuntos monobyte e multibyte, respectivamente, e têm função similar ao tipo LONG, porém com algumas vantagens, entre elas: uma tabela pode conter somente um atributo do tipo LONG enquanto CBLOB e NCBLOB podem ocorrer mais de uma vez; LONG pode ir até 2 Gbytes e CBLOB e NCBLOB até 4 Gbytes; CBLOB e NCBLOB estão sujeitos aos controles de transação do Oracle, o que facilita a manipulação de dados. Colunas dos tipos são armazenadas na base sob o código Unicode, de 2 bytes, e são convertidos para o conjunto de caracteres utilizados pelo usuário que os recupera. Atributos NCBLOB suportam caracteres com códigos de tamanho variável. O tipo LONG é mantido para prover compatibilidade com versões anteriores. A Oracle recomenda fortemente que, em novas aplicações, sejam empregados os tipos xlob para campos longos, binários ou strings. Oracle suporta vários conjuntos de caracteres, que abrangem idiomas do mundo todo. A lista abaixo contém os conjuntos europeus. Além da categorização de mono e multibyte, os conjuntos marcados com a palavra ASCII são superconjuntos do código ASCII, sendo portanto passíveis de conversão Há ainda outros conjuntos, suportando idiomas asiáticos e do oriente médio. LEGENDA>>> US7ASCII ASCII 7-bit American Monobyte, ASCII SF7ASCII ASCII 7-bit Finnish Monobyte YUG7ASCII ASCII 7-bit Yugoslavian Monobyte RU8BESTA BESTA 8-bit Latin/Cyrillic Monobyte, ASCII EL8GCOS7 Bull EBCDIC GCOS7 8-bit Greek Monobyte WE8GCOS7 Bull EBCDIC GCOS7 8-bit West European Monobyte EL8DEC DEC 8-bit Latin/Greek Monobyte TR7DEC DEC VT100 7-bit Turkish Monobyte TR8DEC DEC 8-bit Turkish Monobyte, ASCII TR8EBCDIC EBCDIC Code Page bit Turkish Monobyte TR8PC857 IBM-PC Code Page bit Turkish Monobyte, ASCII TR8MACTURKISH MAC Client 8-bit Turkish Monobyte TR8MACTURKISHS MAC Server 8-bit Turkish Monobyte, ASCII TR8MSWIN1254 MS Windows Code Page bit Turkish Monobyte, ASCII WE8BS2000L5 Siemens EBCDIC.DF.L5 8-bit West European/Turkish Monobyte WE8DEC DEC 8-bit West European Monobyte, ASCII D7DEC DEC VT100 7-bit German Monobyte

22 22 Capítulo 7: Conhecendo os tipos de dados F7DEC DEC VT100 7-bit French Monobyte S7DEC DEC VT100 7-bit Swedish Monobyte E7DEC DEC VT100 7-bit Spanish Monobyte NDK7DEC DEC VT100 7-bit Norwegian/Danish Monobyte I7DEC DEC VT100 7-bit Italian Monobyte NL7DEC DEC VT100 7-bit Dutch Monobyte CH7DEC DEC VT100 7-bit Swiss (German/French) Monobyte SF7DEC DEC VT100 7-bit Finnish Monobyte WE8DG DG 8-bit West European Monobyte, ASCII WE8EBCDIC37C EBCDIC Code Page 37 8-bit Oracle/c Monobyte WE8EBCDIC37 EBCDIC Code Page 37 8-bit West European Monobyte D8EBCDIC273 EBCDIC Code Page 273/1 8-bit Austrian German Monobyte DK8EBCDIC277 EBCDIC Code Page 277/1 8-bit Danish Monobyte S8EBCDIC278 EBCDIC Code Page 278/1 8-bit Swedish Monobyte I8EBCDIC280 EBCDIC Code Page 280/1 8-bit Italian Monobyte WE8EBCDIC284 EBCDIC Code Page bit Latin American/Spanish Monobyte WE8EBCDIC285 EBCDIC Code Page bit West European Monobyte F8EBCDIC297 EBCDIC Code Page bit French Monobyte WE8EBCDIC500C EBCDIC Code Page bit Oracle/c Monobyte WE8EBCDIC500 EBCDIC Code Page bit West European Monobyte EE8EBCDIC870 EBCDIC Code Page bit East European Monobyte WE8EBCDIC871 EBCDIC Code Page bit Icelandic Monobyte EL8EBCDIC875 EBCDIC Code Page bit Greek Monobyte CL8EBCDIC1025 EBCDIC Code Page bit Cyrillic Monobyte CL8EBCDIC1025X EBCDIC Code Page 1025 (Modified) 8-bit Cyrillic Monobyte BLT8EBCDIC1112 EBCDIC Code Page bit Baltic Multilingual Monobyte D8EBCDIC1141 EBCDIC Code Page bit Austrian German Monobyte DK8EBCDIC1142 EBCDIC Code Page bit Danish Monobyte S8EBCDIC1143 EBCDIC Code Page bit Swedish Monobyte I8EBCDIC1144 EBCDIC Code Page bit Italian Monobyte F8EBCDIC1147 EBCDIC Code Page bit French Monobyte EEC8EUROASCI EEC Targon 35 ASCI West European/Greek Monobyte EEC8EUROPA3 EEC EUROPA3 8-bit West European/Greek Monobyte LA8PASSPORT German Government Printer 8-bit All-European Latin Monobyte, ASCII WE8HP HP LaserJet 8-bit West European Monobyte WE8ROMAN8 HP Roman8 8-bit West European Monobyte, ASCII HU8CWI2 Hungarian 8-bit CWI-2 Monobyte, ASCII HU8ABMOD Hungarian 8-bit Special AB Mod Monobyte, ASCII LV8RST IBM-PC Alternative Code Page 8-bit Latvian (Latin/Cyrillic) Monobyte, ASCII US8PC437 IBM-PC Code Page bit American Monobyte, ASCII BG8PC437S IBM-PC Code Page bit (Bulgarian Modification) Monobyte, ASCII EL8PC437S IBM-PC Code Page bit (Greek modification) Monobyte, ASCII EL8PC737 IBM-PC Code Page bit Greek/Latin Monobyte LT8PC772 IBM-PC Code Page bit Lithuanian (Latin/Cyrillic) Monobyte, ASCII LT8PC774 IBM-PC Code Page bit Lithuanian (Latin) Monobyte, ASCII BLT8PC775 IBM-PC Code Page bit Baltic Monobyte, ASCII WE8PC850 IBM-PC Code Page bit West European Monobyte, ASCII EL8PC851 IBM-PC Code Page bit Greek/Latin Monobyte, ASCII EE8PC852 IBM-PC Code Page bit East European Monobyte, ASCII RU8PC855 IBM-PC Code Page bit Latin/Cyrillic Monobyte, ASCII WE8PC858 IBM-PC Code Page bit West European Monobyte, ASCII WE8PC860 IBM-PC Code Page bit West European Monobyte. ASII IS8PC861 IBM-PC Code Page bit Icelandic Monobyte, ASCII CDN8PC863 IBM-PC Code Page bit Canadian French Monobyte, ASCII N8PC865 IBM-PC Code Page bit Norwegian Monobyte. ASCII RU8PC866 IBM-PC Code Page bit Latin/Cyrillic Monobyte, ASCII EL8PC869 IBM-PC Code Page bit Greek/Latin Monobyte, ASCII LV8PC1117 IBM-PC Code Page bit Latvian Monobyte, ASCII US8ICL ICL EBCDIC 8-bit American Monobyte WE8ICL ICL EBCDIC 8-bit West European Monobyte WE8ISOICLUK ICL special version ISO Monobyte WE8ISO8859P1 ISO West European Monobyte, ASCII EE8ISO8859P2 ISO East European Monobyte, ASCII SE8ISO8859P3 ISO South European Monobyte, ASCII NEE8ISO8859P4 ISO North and North-East European Monobyte, ASCII CL8ISO8859P5 ISO Latin/Cyrillic Monobyte, ASCII AR8ISO8859P6 ISO Latin/Arabic Monobyte, ASCII

BANCO DE DADOS TIPOS DE VARÁVEIS SQL. Professor Carlos Muniz

BANCO DE DADOS TIPOS DE VARÁVEIS SQL. Professor Carlos Muniz TIPOS DE VARÁVEIS SQL Professor Carlos Muniz Tipos de Dados em MySQL Depois da fase de design da base de dados, e uma vez que se passou a tabelas, é necessário criar as tabelas correspondentes dentro da

Leia mais

Tipos de Dados. Banco de Dados I Prof. Erinaldo Nascimento

Tipos de Dados. Banco de Dados I Prof. Erinaldo Nascimento FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 5º Período Disciplina: Banco de Dados I Prof. Erinaldo Sanches Nascimento Tipos de Dados Banco de Dados I Prof. Erinaldo Nascimento

Leia mais

Conceito de Campos e Tabelas

Conceito de Campos e Tabelas Aula 04 Conceito de Campos e Tabelas Tabelas É um conjunto de registros de um mesmo tipo onde cada linha é composta por um campo que recebe um valor de atributo. Em um Banco de Dados poderá existir uma

Leia mais

Conceitos de Modelo Relacional Restrições de um Banco de Dados

Conceitos de Modelo Relacional Restrições de um Banco de Dados Aula 03 Revisando Conceitos de Modelo Relacional Restrições de um Banco de Dados Modelo Relacional, representa o banco de dados como uma coleção de relações. Criando as tabelas Cada linha representa uma

Leia mais

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes Escola Secundária de Albufeira Comandos MySQL (Páginas Web Dinâmicas: PHP e MySQL) (csmnunes@gmail.com) 2009/2010 Criar Base de Dados CREATE DATABASE basededados; Apagar Base de Dados DROP DATABASE basededados;

Leia mais

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe A Linguagem SQL Tecnologia de Base de Dados MSc. Eugénio. Macumbe A Linguagem SQL As raízes da linguagem SQL remontam a 1974, altura em que na IBM corp. se desenvolvia o protótipo de um sistema relacional

Leia mais

Comandos SQL. Exercícios com o MySQL ou MaridaDB. Prof. Emiliano S. Monteiro

Comandos SQL. Exercícios com o MySQL ou MaridaDB. Prof. Emiliano S. Monteiro Comandos SQL Exercícios com o MySQL ou MaridaDB Prof. Emiliano S. Monteiro Criando um banco de dados mysql> CREATE DATABASE unemat; É importante colocar o ponto de vírgula no final de cada linha de comando!!

Leia mais

Fábio Borges de Oliveira. MySQL

Fábio Borges de Oliveira. MySQL 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

Leia mais

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de Introdução O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de padrão SQL (Structured Query Language). O padrão SQL define precisamente uma interface SQL para a

Leia mais

Bando de Dados Web. Tipos de dados

Bando de Dados Web. Tipos de dados Bando de Dados Web Tipos de dados 4º TSI Jonathan de Matos A escolha dos tipos de dados Tipo de dado é o conjunto de valores e operações (domínio) que um determinado atributo ou variável pode armazenar.

Leia mais

Estrutura de Dados Conceitos Iniciais

Estrutura de Dados Conceitos Iniciais Engenharia de CONTROLE e AUTOMAÇÃO Estrutura de Dados Conceitos Iniciais Aula 01 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Leia mais

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

1/50. Conceitos Básicos. Programa Básico

1/50. Conceitos Básicos. Programa Básico 1/50 Conceitos Básicos Programa Básico 2/50 Operações básicas de entrada e saída #include main retorna um inteiro int main() { std::cout

Leia mais

MySQL + PHP 06/05/2015. IFSC/campus Florianópolis Programação para a WEB Prof. Herval Daminelli

MySQL + PHP 06/05/2015. IFSC/campus Florianópolis Programação para a WEB Prof. Herval Daminelli 1 MySQL + PHP MySQL é um dos sistemas de gerenciamento de banco de dados mais usados da atualidade, que utiliza a linguagem de manipulação de dados chamada SQL (structured query language ou linguagem de

Leia mais

BANCO DE DADOS WEB AULA 6. Tipos de Dados. professor Luciano Roberto Rocha.

BANCO DE DADOS WEB AULA 6. Tipos de Dados. professor Luciano Roberto Rocha. BANCO DE DADOS WEB AULA 6 Tipos de Dados professor Luciano Roberto Rocha www.lrocha.com A escolha dos tipos de dados Tipo de dado é o conjunto de valores e operações (domínio) que um determinado atributo

Leia mais

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR SQL Structured Query Language, ou Linguagem de Consulta Estruturada, foi desenvolvida pela IBM nos anos 70 para demonstrar a viabilidade do modelo relacional para bancos de dados. No final dos anos 80

Leia mais

Natanael Gonçalves Afonso 8º Período Engenharia da Computação Skydrive:

Natanael Gonçalves Afonso 8º Período Engenharia da Computação   Skydrive: Natanael Gonçalves Afonso 8º Período Engenharia da Computação Email: ngafonso7@hotmail.com Skydrive: http://sdrv.ms/wjyc3o Planejamento Prático http://www3.inatel.br/docentes/rosanna/cursos/planejamento-doconteudo-pratico-ec210-2013-1.html

Leia mais

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados Disciplina de Programação de Computadores I Universidade Federal de Ouro

Leia mais

Circuitos Lógicos Aula 5

Circuitos Lógicos Aula 5 Circuitos Lógicos Aula 5 Aula passada Sistemas numéricos Metodo de conversão Conversão entre sistemas Números fracionários Aula de hoje Conversão fracionária Método da multiplicação Código BCD Código ASCII

Leia mais

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura E-mail: gilvansistema@hotmail.com

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura E-mail: gilvansistema@hotmail.com MYSQL: TIPOS DE DADOS Gilvan Vieira Moura E-mail: gilvansistema@hotmail.com TIPOS DE DADOS Bancos de dados, como falamos anteriormente, armazenam dados dentro de tabelas, na forma de linhas e colunas.

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Um toque de álgebra relacional: UNION e outras operações

Um toque de álgebra relacional: UNION e outras operações Capítulo 10 Um toque de álgebra relacional: UNION e outras operações Embora o SQL sejasicamente uma linguagem oriunda da lógica de predicados, a operação de união é realizada explicitamente pelo operador

Leia mais

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2 Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador

Leia mais

4 Variáveis. Unesp Campus de Guaratinguetá

4 Variáveis. Unesp Campus de Guaratinguetá 4 Variáveis Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante Composição do Hardware MEMÓRIA UNIDADES FUNCIONAIS

Leia mais

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Sumário de Aula } Conceito de Memória } Variáveis e Tipos de Dados } Constantes 2 Conceito de Memória } A memória de um computador é

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES Representação de Dados Professor: Airton Ribeiro de Sousa E-mail: airton.ribeiro@faciplac.edu.br 1 Ao longo dos anos, muitos padrões e convenções foram estabelecidas para determinar certos aspectos da

Leia mais

Modelagem Física e SQL

Modelagem Física e SQL Programação em Banco de Dados - Parte 1 Modelagem Física e SQL Prof. Pablo Passos prof.pablo.passos@gmail.com SQL - Um modelo físico é gerado a partir de um modelo lógico já construído. A geração dos objetos

Leia mais

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados Mysql Quanto mais informações você busca, mais você evolui. Vitor Ramos SQL Structured Query Language - Linguagem de Consulta Estruturada Desenvolvida pela IBM, nos anos 70; Inicialmente chamada SEQUEL

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes Tipos de Dados Objectivos Observar os tipos fornecidos pelo C++ São dados alguns exemplos Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes O que são Como se distinguem

Leia mais

Fundamentos de TI. Aula07_Representação de dados pelo Computador.doc 1

Fundamentos de TI. Aula07_Representação de dados pelo Computador.doc 1 Aula07_Representação de dados pelo Computador.doc 1 Organização e representação de dados e Informações em computador. Introdução As informações e o conhecimento compõem recursos estratégicos essenciais

Leia mais

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1 CIT 2015.2 Aula 02 Variáveis e Estruturas de desvio condicional Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1 Variáveis Uma variável nada mais é que um nome que damos a uma determinada posição

Leia mais

MANUTENÇÃO DE COMPUTADORES SISTEMAS NUMÉRICOS

MANUTENÇÃO DE COMPUTADORES SISTEMAS NUMÉRICOS MANUTENÇÃO DE COMPUTADORES SISTEMAS NUMÉRICOS Professor Marlon Marcon Introdução Em nossa condição humana, geralmente realizamos cálculos utilizando o sistema numérico decimal, ou base 10. Isso provavelmente

Leia mais

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis Variável, na Matemática, é um termo utilizado em substituição de outro, normalmente, desconhecido. É utilizado para representar um número ou um conjunto. No contexto da programação de computadores, uma

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA DIM0320 Algoritmos e Programação de Computadores #VARIÁVEIS #TIPOS DE DADOS E L I EZ I O S O A R ES E L I EZ

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Aula de Revisão: Variáveis e Atribuições Introdução Memória Principal: Vimos no curso anterior que a CPU usa a memória

Leia mais

Banco de Dados. Linguagem SQL

Banco de Dados. Linguagem SQL Banco de Dados Linguagem SQL 1 A linguagem SQL: história Em junho de 1970, o matemático Edgar Frank Codd, publicou o artigo "A Relational Model of Data for Large Shared Data Banks" na revista "Communications

Leia mais

14/03/2011. A INFORMAÇÃO E SUA REPRESENTAÇÃO (Parte I)

14/03/2011. A INFORMAÇÃO E SUA REPRESENTAÇÃO (Parte I) A INFORMAÇÃO E SUA REPRESENTAÇÃO (Parte I) Prof: Alberto Melo O computador, sendo um equipamento eletrônico, armazena e movimenta as informações internamente sob forma eletrônica; tudo o que faz é reconhecer

Leia mais

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Tipos de Dados e Variáveis Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes

Leia mais

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo

Leia mais

Instruções, dados e expressões

Instruções, dados e expressões Instruções, dados e expressões Marina Andretta ICMC-USP 1 de março de 2016 Marina Andretta (ICMC-USP) sme0230-ipc 1 de março de 2016 1 / 50 Dados Um computador manipula informações presentes em sua memória.

Leia mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com

Leia mais

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída BCC 201 - Introdução à Programação Variáveis, Comandos de Atribuição e Comando de Entrada e Saída Guillermo Cámara-Chávez UFOP 1/1 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c

Leia mais

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.)

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.) SQL Linguagem de Definição de Dados (DDL) Linguagem de Definição dos Dados Tipos em SQL Manipular Tabelas (relações) Integridade e Segurança Linguagem de Manipulação dos Dados Estrutura básica Operações

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1 Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para

Leia mais

BCD29008 Banco de dados

BCD29008 Banco de dados BCD29008 Banco de dados Linguagem SQL Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 21 de agosto de 2017

Leia mais

Engenharia Civil. Representação da Informação. Introdução à Computação

Engenharia Civil. Representação da Informação. Introdução à Computação Engenharia Civil Representação da Informação Introdução à Computação Sumário Retomada... Representação de informação Bit, byte Conversão numérica Exercício Referência link na página 2.2.1 O bit, o byte,

Leia mais

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2018) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

Leia mais

Introdução a SQL (parte 2)

Introdução a SQL (parte 2) Introdução a SQL (parte 2) Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Eduardo R. B. Marques DCC/FCUP Introdução a SQL parte 2 Tipos,

Leia mais

Banco de Dados? Banco de Dados Professor Vanderlei Frazão

Banco de Dados? Banco de Dados Professor Vanderlei Frazão Banco de Dados? OU Vamos por partes... O que são dados? Definições... 1. Dados são observações documentadas ou resultados de medições. 2. Dados são matéria bruta de que é feita a informação. 3. Valores

Leia mais

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2017) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Constantes class Exemplo { static void Main() { float fahr, celsius; int lower, upper, step; lower = 0; /* limite inferior da tabela de temperaturas */ upper = 300; /* limite superior */ step = 20; /*

Leia mais

Introdução. 17-out-08 Leandro Tonietto 2

Introdução. 17-out-08 Leandro Tonietto 2 Programação II Leandro Tonietto Algoritmos e Programação em C++ Curso de Segurança da Informação ltonietto@unisinos.br http://www.inf.unisinos.br/~ltonietto/tsi/ica/programacao2.pdf out-08 Introdução O

Leia mais

Estrutura de Programas e Tipos de Dados Simples

Estrutura de Programas e Tipos de Dados Simples SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Estrutura de Programas e Tipos de Dados Simples Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br

Leia mais

Sistemas numéricos e a Representação Interna dos Dado no Computador

Sistemas numéricos e a Representação Interna dos Dado no Computador Sistemas numéricos e a Representação Interna dos Dado no Computador Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: http://www.inf.ufsc.br~silveira Material elaborado pelo prof

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4 Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para

Leia mais

BANCO DE DADOS GERENCIAL 1 A U L A 2

BANCO DE DADOS GERENCIAL 1 A U L A 2 BANCO DE DADOS GERENCIAL 1 A U L A 2 N Í V E I S D E V I S Ã O, S U B G R U P O D D L : C R I A N D O B A N C O D E D A D O S, C R I A N D O T A B E L A S, E S T R U T U R A D A T A B E L A CONCEITOS :

Leia mais

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Modificadores de Tipos Os tipos de dados básicos em C podem estar acompanhados por modificadores na declaração de variáveis. Tais modificadores

Leia mais

Laboratório de Programação II

Laboratório de Programação II Laboratório de Programação II Aula 02 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Na aula passada vimos... Na aula passada vimos... 01 Introdução à linguagem C;

Leia mais

Introdução à Computação MAC0110

Introdução à Computação MAC0110 Introdução à Computação MAC0110 Prof. Dr. Paulo Miranda IME-USP Aula 2 Variáveis e Atribuições Memória Principal: Introdução Vimos que a CPU usa a memória principal para guardar as informações que estão

Leia mais

Introdução à Programação

Introdução à Programação Programação de Computadores Introdução à Programação Prof. Helton Fábio de Matos hfmatos@dcc.ufmg.br Agenda Algoritmo & Programa Variáveis Declaração de tipos Comando de entrada ou de leitura Comando de

Leia mais

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza Algoritmos: Conceitos Fundamentais Slides de autoria de Rosely Sanches e Simone Senger de Souza DADOS E EXPRESSÕES Uso da Informação Computador manipula informações contidas em sua memória. Classificadas

Leia mais

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO HeidiSQL É um programa que permite acessar o SGDB Mysql. Pode ser adquirido gratuitamente na internet. Não é necessário instalar. Possui versão portável.

Leia mais

Modelagem Física e SQL

Modelagem Física e SQL Programação em Banco de Dados - Parte 1 Modelagem Física e SQL Prof. Pablo Passos prof.pablo.passos@gmail.com SQL - Um modelo físico é gerado a partir de um modelo lógico já construído. A geração dos objetos

Leia mais

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se

Leia mais

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

Introdução a Linguagem C. Prof. Me. Hélio Esperidião Introdução a Linguagem C Prof. Me. Hélio Esperidião Características de um programa De forma geral a maioria dos programas são compostos por dados de entrada, processamento e dados de saída. Entrada de

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada

Leia mais

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.

Leia mais

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados 3. Introdução Segundo alguns especialistas, qualquer programa de computador pode ser escrito utilizando apenas três estruturas básicas: Seqüência, Condição e Repetição. Isto significa que, na construção

Leia mais

Ambientação com a Sintaxe de Java: parte 1

Ambientação com a Sintaxe de Java: parte 1 Ambientação com a Sintaxe de Java: parte 1 Prof. Gustavo Wagner FATEC-PB Programas em Java Texto do programa: arquivo com extensão.java Arquivo contém ao menos uma classe Nome do arquivo deve ser IGUAL

Leia mais

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2018) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

Leia mais

ECT1203 Linguagem de Programação

ECT1203 Linguagem de Programação Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia ECT1203 Linguagem de Programação Prof. Aquiles Burlamaqui Profa. Caroline Rocha Prof. Luiz Eduardo Leite Prof. Luciano Ferreira

Leia mais

Tipos de Dados Simples (Continuação)

Tipos de Dados Simples (Continuação) SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Tipos de Dados Simples (Continuação) Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário

Leia mais

Modelagem de banco de dados com MySQL Workbench

Modelagem de banco de dados com MySQL Workbench Modelagem de banco de dados com MySQL Workbench Após o término desse curso, você estará apto à: Teoria: Reconhecer os principais tipos de dados suportados pelo MySQL 5.0 Otimizar espaço pela escolha certo

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Disciplina: Introdução à Engenharia da Computação

Disciplina: Introdução à Engenharia da Computação Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 06 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. rosalvo.oliveira@univasf.edu.br 2 Representação

Leia mais

PCS 3115 Sistemas Digitais I Códigos Prof. Dr. Marcos A. Simplicio Jr.

PCS 3115 Sistemas Digitais I Códigos Prof. Dr. Marcos A. Simplicio Jr. PCS 3115 Sistemas Digitais I Códigos Prof. Dr. Marcos A. Simplicio Jr. versão: 3.0 (Jan/2016) Adaptado por Glauber (2018) CÓDIGOS NUMÉRICOS 2 Códigos Numéricos Conjunto de cadeias com n bits: cadeias diferentes

Leia mais

Introdução à Computação (IC) Linguagem C: Variáveis e Constantes

Introdução à Computação (IC) Linguagem C: Variáveis e Constantes Introdução à Computação (IC) Linguagem C: Variáveis e Constantes Prof.ª Dr.ª Symone Gomes Soares Alcalá Universidade Federal de Goiás (UFG) Regional Goiânia (RG) Campus Aparecida de Goiânia (CAP) Faculdade

Leia mais

SEBENTA INTRODUÇÃO Á ALGORITMIA

SEBENTA INTRODUÇÃO Á ALGORITMIA SEBENTA INTRODUÇÃO Á ALGORITMIA O desenvolvimento de programas para computador está sempre baseado na tarefa de programar um computador para seja resolvido um problema ou executada uma função e assim dar

Leia mais

Cap. 2 Expressões na linguagem C

Cap. 2 Expressões na linguagem C Programação de Computadores II Cap. 2 Expressões na linguagem C Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (24) Slides adaptados dos originais

Leia mais

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 2

Estrutura de Dados. Ricardo José Cabeça de Souza   Parte 2 Estrutura de Dados Ricardo José Cabeça de Souza Parte 2 Em C, uma expressão é uma combinação de variáveis, constantes e operadores que pode ser avaliada computacionalmente, resultando em um valor O valor

Leia mais

Erros, Precisão Numérica e Ponto Flutuante

Erros, Precisão Numérica e Ponto Flutuante Capítulo 3 Erros, Precisão Numérica e Ponto Flutuante No capítulo anterior introduzimos o conceito de variável em programação. Uma variável é basicamente um nome usado para se referir a algum conteúdo

Leia mais

Disciplina: Introdução à Engenharia da Computação

Disciplina: Introdução à Engenharia da Computação Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 07 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. rosalvo.oliveira@univasf.edu.br 2 Representação

Leia mais

Page 1. Prof. Constantino Jacob

Page 1. Prof. Constantino Jacob Tópicos Introdução à SQL Definição Tipos de Operações Instrução SELECT Sintaxe básica Operações relacionais de restrição, projeção e junção Instruções DML Delete, Update e Insert Instruções DDL Create

Leia mais

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,

Leia mais

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1 Estruturas de Dados Módulo 2 Expressões 9/8/25 (c) Marco A. Casanova - PUC-Rio Avisos O ciclo básico alterou o horário da P2: a P2 de ED será em 2/5, das 9h às h, e não das h às 3h, como no programa original

Leia mais

Tópicos de hoje: Cap. 2 Expressões na linguagem C. Bits, Bytes e Palavras. Variáveis e Constantes. Números inteiros num Byte

Tópicos de hoje: Cap. 2 Expressões na linguagem C. Bits, Bytes e Palavras. Variáveis e Constantes. Números inteiros num Byte Tópicos de hoje: Programação de Computadores II Cap. Expressões na linguagem C Bits, s e Palavras Variáveis e constantes Operadores e expressões Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel.

Leia mais

Instrução Create Table

Instrução Create Table Tipos em SQL char(n): cadeia de caracteres de comprimento fixo n varchar(n): cadeia de caracteres de comprimento variável, com o máximo n especificado pelo utilizador int: inteiro (um subconjunto finito

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação SQL Básica DDL Prof. Marcos A. Schreiner Curso de Licenciatura em Computação 21 de outubro de 2015 Prof. Marcos A. Schreiner (UFPR) 21 de outubro de 2015 1 / 28 1 Introdução 2 SQL DDL CREATE Criar Banco

Leia mais

JSP Prof. Daniela Pires. VARIAVEIS... 2 Tipos de Dados... 2 String Float Integer Boolean... 3

JSP Prof. Daniela Pires. VARIAVEIS... 2 Tipos de Dados... 2 String Float Integer Boolean... 3 Conteúdo VARIAVEIS... 2 Tipos de Dados... 2 String... 2 Float... 3 Integer... 3 Boolean... 3 Variáveis... 4 O que são variáveis?... 4 Tipo de variáveis... 5 Concatenação:... 6 1 VARIAVEIS Antes de falarmos

Leia mais

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída BCC 201 - Introdução à Programação Variáveis, Comandos de Atribuição e Comando de Entrada e Saída Guillermo Cámara-Chávez UFOP 1/63 Estrutura Básica de um programa C I < d i r e t i v a s do pre p r o

Leia mais