Você está na página 1de 8

Aprenda a usar estruturas (struct) em C Matrizes (arrays) so muito importantes quando precisamos agrupar vrias variveis de um mesmo tipo

de dados. Porm, h casos em que precisamos agrupar variveis de diferentes tipos. Para estes casos a linguagem C nos fornece as estruturas (struct). Veja como declar-las: // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }; Veja que esta estrutura possui dois tipos de dados diferentes: um ponteiro para uma cadeia de caracteres e uma varivel do tipo int. Para declarar variveis do tipo Pessoa voc tem duas opes. A primeira consiste em declarar as variveis juntamente com a declarao da estrutura. Veja: // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }pessoa, cliente, chefe; A outra forma consiste em declarar a varivel no local no qual ela ser usada. Esta forma mais prtica. Veja um exemplo completo de como isso feito: #include <stdio.h> #include <stdlib.h> // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }; int main(int argc, char *argv[]) { // declara uma varivel do tipo struct struct Pessoa cliente; cliente.nome = "Osmar J. Silva"; cliente.idade = 36; // obtm os dados printf("O nome do cliente e: %s\n", cliente.nome); printf("A idade do cliente e: %d\n", cliente.idade); printf("\n\n"); system("PAUSE"); return 0;

Estudo de MySQL
Comandos DDL do MySQL

Listamos abaixo os comandos DDL (Data Definition Language) do MySQL (at a verso 5.0). O link de cada comando leva a uma dica exemplificando seu uso. Este um trabalho em progresso. Mais comandos e exemplos de uso podem ser adicionados ou corrigidos a qualquer momento. Comando ALTER DATABASE Descrio Este comando permite modificar (alterar) os atributos da base de dados ou atualizar a codificao de nome do diretrio da base de dados.

ALTER FUNCTION ALTER PROCEDURE ALTER TABLE ALTER VIEW CREATE DATABASE CREATE FUNCTION CREATE INDEX CREATE PROCEDURE CREATE TABLE CREATE TRIGGER

Altera as caractersticas de funes do usurio (stored functions). Permite alterar as caractersticas de procedimentos do usurio (stored procedures). Permite renomear tabelas ou modificar suas estruturas. Altera as definies de uma determinada view. Cria uma nova base de dados. Cria uma nova funo do usurio (stored function). Adiciona um novo ndice tabela Cria um novo procedimento do usurio (stored procedure). Cria uma nova tabela. Associa um trigger com uma determinada tabela, de modo que, quando um determinado evento ocorrer na tabela o trigger ativado e executar suas instrues. Cria uma view. Exclui uma base de dados e todo o seu contedo. Remove uma funo do usurio (stored functions). Remove um ndice da tabela. Remove um procedimento do usurio (stored procedure). Exclui uma determinada tabela. Remove um trigger. Exclui uma view.

CREATE VIEW DROP DATABASE DROP FUNCTION DROP INDEX DROP PROCEDURE DROP TABLE DROP TRIGGER DROP VIEW

RENAME TABLE

Permite renomear uma ou mais tabelas de uma s vez.

Tipos de Dados do MySQL

Listamos abaixo os tipos de dados do MySQL (at a verso 5.0). O link de cada tipo leva a uma dica exemplificando seu uso. Este um trabalho em progresso. Mais tipos e exemplos de uso podem ser adicionados ou corrigidos a qualquer momento. 1 - Tipos de dados numricos Os tipos numricos do MySQL podem ser declarados com (SIGNED) ou sem sinal (UNSIGNED). O padro SIGNED. Um tipo numrico inteiro sem sinal pode guardar uma faixa maior de valores positivos. Por exemplo, um INT com sinal variar de -2147483648 a 2147483647. Se este mesmo INT for declarado sem sinal, sua faixa ser de 0 a 4294967295. Para tipos de ponto-flutuante, a faixa superior de valores no afetada pelos atributos SIGNED e UNSIGNED. 1.1 - Tipos inteiros O tipo INTEGER um sinnimo para o tipo INT. Tipo TINYINT SMALLINT MEDIUMINT INT BIGINT Bytes 1 2 3 4 8 Mnimo -128 -32768 -8388608 -2147483648 -9223372036854775808 Mximo 127 32767 8388607 2147483647 9223372036854775807

1.2 - Tipos de ponto-flutuante (com valores fracionrios) Os tipos DOUBLE PRECISION e REAL so sinnimos para o tipo DOUBLE. Tipo FLOAT DOUBLE Bytes 4 8 Mnimo -3.402823466E+38 Mximo 1.175494351E-38

2.2250738585072014E-308 1.7976931348623157E+308

1.3 - Tipos de ponto-fixo (com valores fracionrios) Os tipos DEC e NUMERIC so sinnimos para o tipo DECIMAL. Tipo DECIMAL Bytes Determinado pelo nmero de dgitos significativos Mnimo Determinado pelo nmero de dgitos significativos Mximo Determinado pelo nmero de dgitos significativos

2 - Tipos Data e Hora O MySQL fornece vrios tipos para a representao de informaes relacionadas a datas e horas. Os termos CC, YY, MM e DD nos formatos de datas representam o sculo, ano, ms e dia da data, respectivamente. Da mesma forma, hh, mm e ss representam as horas, minutos e segundos. Tipo DATE Descrio Representa uma data no formato CCYY-MM-DD. O valor mnimo 1000-01-01 e o valor mximo 9999-12-31. Este tipo exige 3 bytes para armazenar seus valores. Representa uma data e hora no formato CCYY-MM-DD hh:mm:ss. Os valores mnimo e mximo so 1000-01-01 00:00:00 e 9999-12-31 23:59:59. Este tipo exige 8 bytes para armazenar seus valores.

DATETIME

TIME

Representa uma hora no formato hh:mm:ss. Os valores mnimo e mximo so -838:59:59 e 838:59:59 respectivamente. Este tipo exige 3 bytes para armazenar seus valores. Representa um timestamp (data e hora) no formato CCYY-MM-DD hh:mm:ss. Este tipo possui alguns comportamentos especiais que o diferenciam do tipo DATETIME. Este tipo exige 4 bytes para armazenar seus valores. Representa um ano no formato CC ou CCYY. Os valores mnimo e mximo so 1901 e 2155 para YEAR(4) e 1970 e 2069 para YEAR(2). Este tipo exige 1 byte para armazenar seus valores.

TIMESTAMP

YEAR

Caracteres usados na formatao de datas e horas no MySQL

As funes DATE_FORMAT() e TIME_FORMAT() permitem formatar os valores obtidos de campos do tipo DATE, TIME, DATETIME ou TIMESTAMP. No entanto, estas funes pedem uma string que especifica a formatao. A tabela abaixo o auxiliar na montagem da string desejada. Caractere %a %b %c %D %d %e %f %H %h %I %i %j %k %l %M %m %p %r %S %s %T %U %u %V %v %W %w %X Descrio Nome do dia da semana abreviado (Sun...Sat) Nome do ms abreviado (Jan...Dec) Ms como um valor nmerico na faixa de 1 a 12 Dia do ms com um sufxo em Ingls (0th, 1st, 2nd, 3rd...) Dia do ms como um valor numrico na faixa 01 31 Dia do ms como um valor numrico na faixa 1 31 Microsegundos na faixa 000000 999999 Horas na faixa 00 23 Horas na faixa 01 12 Horas na faixa 01 12 Minutos na faixa 00 59 Dia da ano na faixa 001 366 Horas na faixa 0 23 Horas na faixa 1 12 Nome do ms (January, February, March...) Ms como um valor numrico na faixa 01 12 Retorna AM ou PM (AM antes do meio-dia, PM aps o meio-dia) Horas no formato 12 horas (hh:mm:ss seguido por AM ou PM) Segundos na faixa 00 59 Segundos na faixa 00 59 Horas no formato 24 horas (hh:mm:ss) Semana do ano na faixa 00 53 usando o domingo como o primeiro dia da semana Semana do ano na faixa 00 53 usando a segunda-feira como o primeiro dia da semana Semana do ano na faixa 01 53 usando o domingo como o primeiro dia da semana; usado com %X Semana do ano na faixa 01 53 usando a segunda-feira como o primeiro dia da semana; usado com %x Nome do dia da semana (Sunday, Monday, Tuesday...) Dia da semana (0 = domingo, 1 = segunda-feira, 6 = sbado) Ano para a semana na qual domingo o primeiro dia da semana. O retorno um valor numrico com 4 dgitos. Deve ser usado com %V

%v %Y %y %%

Ano para a semana na qual segunda-feira o primeiro dia da semana. O retorno um valor numrico com 4 dgitos. Deve ser usado com %v Ano com 4 dgitos Ano com 2 dgitos Um caractere "%" literal

Funes de data e hora disponveis no MySQL

Listamos abaixo as funes de data e hora (Date and Time Functions) do MySQL (at a verso 5.0). O link de cada funo leva a uma dica exemplificando seu uso. Este um trabalho em progresso. Mais funes e exemplos de uso podem ser adicionados ou corrigidos a qualquer momento. ADDDATE() ADDTIME() CONVERT_TZ() CURDATE() CURRENT_DATE(), CURRENT_DATE CURRENT_TIME(), CURRENT_TIME Permite adicionar dias a uma data Permite adicionar horas a uma data ou hora Permite transformar um fuso horrio em outro Obtm a data atual So sinnimos para CURDATE() So sinnimos para CURTIME()

CURRENT_TIMESTAMP(), So sinnimos para NOW() CURRENT_TIMESTAMP CURTIME() DATE_ADD() DATE_FORMAT() DATE_SUB() DATE() DATEDIFF() DAY() DAYNAME() DAYOFMONTH() DAYOFWEEK() DAYOFYEAR() EXTRACT() FROM_DAYS() FROM_UNIXTIME() GET_FORMAT() Retorna a hora atual Permite adicionar horas, dias, meses, semanas, anos, etc a uma data Permite formatar uma data Permite subtrair uma data de outra Permite obter a parte data de uma expresso date ou datetime Obtm a diferena entre duas datas Sinnimo para DAYOFMONTH() Retorna o nome do dia da semana Permite obter o dia do ms (1-31) Retorna o ndice do dia da semana Retorna o dia do ano (1-366) Permite extrair parte de uma data Permite converter um determinado nmero de dias em uma data Permite formatar uma data a partir de um timestamp UNIX Retorna uma string de formatao de data

HOUR() LAST_DAY() LOCALTIME(), LOCALTIME LOCALTIMESTAMP, LOCALTIMESTAMP() MAKEDATE() MAKETIME() MICROSECOND() MINUTE() MONTH() MONTHNAME() NOW() PERIOD_ADD() PERIOD_DIFF() QUARTER() SEC_TO_TIME() SECOND() STR_TO_DATE() SUBDATE() SUBTIME() SYSDATE() TIME_FORMAT() TIME_TO_SEC() TIME() TIMEDIFF() TIMESTAMP()

Obtm a hora a partir de um datetime ou time Retorna o ltima dia do date ou datetime fornecido como argumento Sinnimo para NOW() Sinnimo para NOW() Permite construir uma data a partir do ano e dia do ano Retorna um time construdo a partir de argumentos de hora, minuto e segundo Retorna os microsegundos a partir de um time ou datetime Retorna o minuto a partir de um datetime ou time Retorna o ms de um date ou datetime Permite obter o nome do ms Retorna a data e hora atual Acrescenta meses a um determinado perodo Retorna a diferena em meses entre dois perodos Retorna o quarto do ano a partir de um date ou datetime Transforma segundos no formato "HH:MM:SS" Obtm o segundo em um time ou datetime (0-59) Converte uma string em um date Permite subtrair dias de um date ou datetime Permite subtrair um time de um time ou datetime Retorna um datetime da hora em que uma funo terminou sua execuo Permite formatar um time Retorna o argumento convertido para segundos Extrai a parte time do argumento fornecido Obtm um time que a diferena entre dois datetime ou time fornecidos Com um nico argumento, esta funo retorna a expresso date ou datetime. Com dois argumentos, a soma dos argumentos retornada. Permite adicionar um intervalo a uma expresso datetime Obtm a diferena entre dois datetime Retorna o nmero de dias no argumento desde o ano 0 Retorna um timestamp UNIX Retorna a data atual no UTC (Coordinated Universal Time)

TIMESTAMPADD() TIMESTAMPDIFF() TO_DAYS() UNIX_TIMESTAMP() UTC_DATE()

UTC_TIME() UTC_TIMESTAMP() WEEK() WEEKDAY() WEEKOFYEAR() YEAR() YEARWEEK()

Retorna a hora atual no UTC (Coordinated Universal Time) Retorna a data e hora atual no UTC (Coordinated Universal Time) Retorna o nmero de semana no ano Retorna o ndice do dia da semana Retorna a semana do calendrio para um date (1-53) Retorna o ano Retorna o ano e semana