dark0 Postado Setembro 27, 2004 Denunciar Share Postado Setembro 27, 2004 Olá pessoal.Resolvi abrir este tópico, para falarmos sobre Criação de Tabelas, com comandos SQL.Agora, estou meio na correria. Então, vou apenas iniciar o tópico.Depois, quando eu tiver mais tempo, eu dou mais detalhes sobre cada campo, e tudo mais.Um simples Exemplo:SQL = "CREATE TABLE nome_tabela (campo1 AutoIncrement, campo2 char(50), campo3 integer, Primary Key(campo1) )" conexao.execute(SQL)Ate mais Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Setembro 28, 2004 Autor Denunciar Share Postado Setembro 28, 2004 E ae pessoal.Bom, ontem não tive muito tempo para explicar este comando.Bem, a princípio, creio que todos saibam o que seja Criar Tabelas, certo?Então, pode ser que em alguns casos, seja necessário que isto seja feito durante o codigo asp, com nomes dinâmicos, campos dinâmicos, e tudo mais.Imaginem um exemplo:Um sistema parecido com WEBMAIL.Sempre que um novo usuário é cadastrado, é criado uma nova tabela com o nome dele, e com as pastas 'padrões', como Caixa de Entrada, Saída.Então, pensem só.. Se não existisse tal comando, para criar dinâmicamente, toda vez que alguém se cadastrasse, o administrador teria que abrir o banco, criar a tabela, adicionar os campos padrões. Imaginem isto para 100 usuários. Mão de obra.. né?Eu digo isto, porque já montei um sistema similar ao que citei anteriormente.E foi por isso que corri atrás, para descobrir como criar tabelas direto, pelo SQL.Bom. Chega de blah blah blah, e vamos ao que interessa.Estes códigos, e sintaxes, eu testei apenas no Banco de dados ACCESS.Portanto, não me responsabilizo, caso não funcione com outros tipos de banco de dados.Vamos partir do Princípio:Passo 1: Conectar ao Banco de dadosurl_conexao = Server.MapPath("banco.mdb") set conexao = Server.CreateObject("ADODB.Connection") conexao.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&url_conexao Não vou entrar em detalhes de como é feita a conexão.. esta é uma forma, porém existem mais tipos. Com a conexão feita, podemos criar o SQL, que criará a tabela. Passo 2: Montando o SQL SQL = "CREATE TABLE nome_tabela (campo1 AutoIncrement, campo2 char(50), campo3 integer, Primary Key(campo1) )" Vamos entender o SQL acima: - CREATE TABLE, são comandos do SQL, que fazem a criação da tabela. Estes nunca mudam! - nome_tabela, é o nome da tabela que será criada. Pode ser uma variável, vinda de um formulario. Vale aqui ressaltar, que se a tabela já existir, via gerar um erro! Podemos driblar isto, fazendo um simples IF, e testando se a tabela já existe! - (, isto é um parentese mesmo. Ele inicia a definição de campos. E deve ser fechado, antes do término do SQL. - campo1, é o nome do campo que será criado. - AutoIncrement, é o tipo de campo que será criado. Este, é AutoNumeração. Mas pode ser Texto, Numero, Data, Memo, Etc .. - Primary Key (campo1), aqui estamos dizendo qual é a chave primária da tabela. Entre Parênteses, vai o nome do campo que será chave primaria. - ), aqui fechamos o parêntese, de definição dos campos da tabela. Bem, após o Passo2, a tabela foi criada com sucesso, ou não. Pois, pode ser que ela já exista, e tenha dado erro. Para isto, podemos usar o Passo 3! Passo3: Testando se a tabela já existe! adSchemaTables = 20 Set rsTabs = conexao.OpenSchema(adSchemaTables) tabela = false Do while not rsTabs.EOF if rsTabs("TABLE_TYPE") = "TABLE" then if rsTabs("TABLE_NAME") = "nome_tabela" then tabela = true end if end if rsTabs.MoveNext Loop if tabela = false then Response.Write "A tabela não existe" else Response.Write "A tabela existe!" end ifEntão, vamos tentar entender.A variavel tabela é inicializada com FALSE. Ela somente será TRUE, caso a tabela já exista!Pois, dentro do LOOP, estamos passando por todas as tabelas existentes, testando se alguma delas é igual à que vamos criar!Bem, por hora, acho que é isso!Em breve quero postar mais sobre cada tipo de campo, que pode ser criado!Abraços, e boa Programação! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Maio 17, 2005 Denunciar Share Postado Maio 17, 2005 so uma duvidazinha....tipo como crio uma tabela... com:campos do tipo numeromemorandoaceitam valores nulossim nãomoeda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JCMPJ Postado Maio 18, 2005 Denunciar Share Postado Maio 18, 2005 Vou tentar ajudar.Alguns tipos de dadosPara números temos os tipos:REAL , ocupa 4 bytes - Ponto Flutuante de precisão simplesFLOAT , ocupa 8 bytes - Ponto Flutuante de precisão duplaSMALLINT , ocupa 2 bytes - Inteiro entre -32.768 e 32.767INTERGER , ocupa 4 bytes - Inteiro entre -2.147.483.648 e 2.147.483.647O campo SIM/não é um tipo BITO campo Monetário é um tipo MONEY , ocupa 8 bytesO Campo Memorando é um tipo TEXT , ocupa 2 bytes por caracterUm comentário alguém poderia perguntar qual a diferença entre um tipo CHAR(n) e um tipo Text(n). Eu diria que para valores de n entre 0 e 255(que é o comprimento máximo de um tipo CHAR) menhuma. Os dois ocupam um espaço de armazenamento de 2 bytes por caracter.Agora fica a pergunta: Como criar campos que aceitem uma seguência vazia?Aproveitando a oportunidade, mais uma pergunta: Onde podemos encontrar os valores das constantes para OpenSchema?[]'s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Deividy Postado Maio 18, 2005 Denunciar Share Postado Maio 18, 2005 legal dark0 poderia colocar isso no tópico suspenso!o que acha? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Maio 18, 2005 Autor Denunciar Share Postado Maio 18, 2005 olaeu deixei esse tópico suspenso por semanas.. mas foi na época que eu criei ele..querem que pendure de novo?se sim.. postem aí.. q algum mod pendura..abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fercosmig Postado Maio 18, 2005 Denunciar Share Postado Maio 18, 2005 se ajudar ae, envio 3 links que falam bastante sobre SQL/Accesshttp://msdn.microsoft.com/office/understan...cfundsql_sqldefhttp://msdn.microsoft.com/office/understan...ml/acintsql.asphttp://msdn.microsoft.com/office/understan...ml/acadvsql.aspabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Maio 18, 2005 Denunciar Share Postado Maio 18, 2005 http://dev.mysql.com/doc/mysql/pt/index.htmlesse é bem completo.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 armagedon Postado Maio 18, 2005 Denunciar Share Postado Maio 18, 2005 eu não consegui, deu erro.o erro mostrou q o banco da dados é somente pra leitura, como eu modifiko?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Maio 18, 2005 Denunciar Share Postado Maio 18, 2005 convertendo um bd access para mysql:http://www.imasters.com.br/forum/index.php?showtopic=103494libere permissão de escrita aonde esta o bd Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Maio 18, 2005 Autor Denunciar Share Postado Maio 18, 2005 dê uma buscada aí por permissoes..eu fiz uma explicação sobre isso um tempo atras Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ViniciusJau Postado Maio 20, 2005 Denunciar Share Postado Maio 20, 2005 bom tenho uma duvida sobre SQL, não sei se esse tópico pode-se discutir duvidas, mais vamos lá:tenho um bd mysql que está + ou - assim: ID NOME 12 Vinicius 13 Digo 14 Digo 15 Vinicius 16 Digo 17 Vinicius . . eu queria mudar todos os registros que tem o nome Digo para Rodrigo então eu pensei em rodar essa SQL no meu php myadmin:UPDATE tabela SET Nome='Rodrigo' WHERE nome='Digo'porém ele me deu erro de sintaxe.. dai eu tentei:UPDATE `tabela` SET `nome`='Rodrigo' WHERE `Nome`=Digo;e ele me deu o mesmo erro....então eu alterei um manualmente e reparei que ele usou esse codigo:UPDATE `tabela` SET `nome`='Rodrigo' WHERE `ID`=26;será que não vou conseguir mudar usando o where no nome ??? apenas na auto numeração tem algum jeito de eu mudar esses registros tenho quase 200 huauha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Maio 20, 2005 Denunciar Share Postado Maio 20, 2005 usa um codigo no asp: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cyberalexxx Postado Maio 20, 2005 Denunciar Share Postado Maio 20, 2005 bom tenho uma duvida sobre SQL, não sei se esse tópico pode-se discutir duvidas, mais vamos lá:tenho um bd mysql que está + ou - assim: ID NOME 12 Vinicius 13 Digo 14 Digo 15 Vinicius 16 Digo 17 Vinicius . . eu queria mudar todos os registros que tem o nome Digo para Rodrigo então eu pensei em rodar essa SQL no meu php myadmin: UPDATE tabela SET Nome='Rodrigo' WHERE nome='Digo' porém ele me deu erro de sintaxe.. dai eu tentei:UPDATE `tabela` SET `nome`='Rodrigo' WHERE `Nome`=Digo; e ele me deu o mesmo erro.... então eu alterei um manualmente e reparei que ele usou esse codigo:UPDATE `tabela` SET `nome`='Rodrigo' WHERE `ID`=26; será que não vou conseguir mudar usando o where no nome ??? apenas na auto numeração tem algum jeito de eu mudar esses registros tenho quase 200 huauha Deve ser algum bug na ferramente front-end q voce utiliza, pois já fiz isso no MySQL Query Browser e funciona. [/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ViniciusJau Postado Junho 8, 2005 Denunciar Share Postado Junho 8, 2005 valeu moçada, mais uma então, vamos láeu tenho na minha tabela varias veses o nome Maria e Ariane dai eu tentei:SELECT * FROM tabela WHERE nome='maria' and nome='isabela'ele dá erro pois a comsulta é na mesma coluna..também tentei :SELECT * FROM tabela WHERE nome='maria,isabela'tente colocar paretenses, um monte de coisa, alguém tem alguma idéia de como fazer isso ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Junho 8, 2005 Autor Denunciar Share Postado Junho 8, 2005 mano.. não faria sentido esse seu sql..é impossível acontecer sua condição..não seria apropriado usar o OR?E outra coisa.. qual o nome de sua tabela?você disse que o nome da tabela é NOME.. (mas no sql, você colocou o nome da tabela de TABELA)..Bem.. tente com o OR:sql = "SELECT * FROM tabela WHERE nome='maria' or nome='isabela' " Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ViniciusJau Postado Junho 8, 2005 Denunciar Share Postado Junho 8, 2005 mano.. não faria sentido esse seu sql..é impossível acontecer sua condição..Bem.. tente com o OR:sql = "SELECT * FROM tabela WHERE nome='maria' or nome='isabela' " eu corrigi lá , tinha escrito errado....ahn eu postei isso porque já conteceu isso comigo já tive que usar...o OR só exibe o segundo resutlado se ele não encontrar o primeiro.... e numa lista de 120 alunos de uma escola, eu precisava pegar três alunos de uma tabela que controlava as faltas deles... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Junho 8, 2005 Autor Denunciar Share Postado Junho 8, 2005 mas, então..você tem 1 campo nome, certo?como, que o campo nome teria mais de 1 nome por registro?seria incoerente cara..pois.. veja só como não teria logica:nome = 'maria'nome = 'isabela'select * from tabela where nome= 'maria' and nome='isabela'Veja, que o campo nome tem somente MARIA, e somente ISABELAComo você quer pegar maria E isabela?não sei se você conseguiu entender.. mas não teria logica.. o proprio sql estaria sem logica..pois, como um campo vai ser X e Y ao mesmo tempo?bem.. pelo menos foi isso aí que eu entendi..se o esquema tem alguma logica.. mostra ela aí..abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cyberalexxx Postado Junho 9, 2005 Denunciar Share Postado Junho 9, 2005 faz assim:[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ViniciusJau Postado Junho 13, 2005 Denunciar Share Postado Junho 13, 2005 você tem 1 campo nome, certo?como, que o campo nome teria mais de 1 nome por registro?seria incoerente cara..pois.. veja só como não teria logica:nome = 'maria'nome = 'isabela'select * from tabela where nome= 'maria' and nome='isabela'Veja, que o campo nome tem somente MARIA, e somente ISABELAComo você quer pegar maria E isabela?não sei se você conseguiu entender.. mas não teria logica.. o proprio sql estaria sem logica..pois, como um campo vai ser X e Y ao mesmo tempo?bem.. pelo menos foi isso aí que eu entendi..se o esquema tem alguma logica.. mostra ela aí..abraço rs... você tá certo sim.. não tem sentido um SQL desses, mais é a forma qeu eu encontrei de explicar o meu Problema....mais montei do jeito qeu o cyberalex falou e funcionou..... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Junho 14, 2005 Autor Denunciar Share Postado Junho 14, 2005 hehehe..beleza..ficou meio esquisito.. mas o que vale é que funcionou abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Junho 14, 2005 Denunciar Share Postado Junho 14, 2005 tente Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ViniciusJau Postado Junho 15, 2005 Denunciar Share Postado Junho 15, 2005 tente ASP nome="maria"nome1="nazare"sql="SELECT * FROM tabela WHERE nome='"&nome&"' or nome='"&nome1&"'" masi dai vai ocorrer aquele problema que eu tinha citado, ele só vai exibir o segundo nome que está na variavel nome1 se ele não encontrar nenhum registro que está em nome entende ?? quando na verdade ele teria que exibir todos os registros que tenham esses coisa nomes !! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cyberalexxx Postado Junho 15, 2005 Denunciar Share Postado Junho 15, 2005 tente ASP nome="maria"nome1="nazare"sql="SELECT * FROM tabela WHERE nome='"&nome&"' or nome='"&nome1&"'" masi dai vai ocorrer aquele problema que eu tinha citado, ele só vai exibir o segundo nome que está na variavel nome1 se ele não encontrar nenhum registro que está em nome entende ?? quando na verdade ele teria que exibir todos os registros que tenham esses coisa nomes !! Quando lhe indiquei o UNION nem testei o uso do OR, mais agora resolvi testar e funcionou normalmente.Ps: Não testei via script apenas digitei o select no MySQL Query Browser Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Doido Mello Postado Junho 16, 2005 Denunciar Share Postado Junho 16, 2005 Tente usar o like, talvez funcione.sSQL="Select * from PESSOAS where NOME_PESSOA like ('%"&nome1&"%') and NOME_PESSOA like ('%"&nome2&"%') Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 hicarocastro Postado Julho 15, 2006 Denunciar Share Postado Julho 15, 2006 Muito bom pessoal mas vou levantar uma questão que acredito ser de interesse de muitos:Digamos que criei uma tabela com o código acima, mas eu gostaria de adiconar um campo a esta tabela, como poderia fazer isso?Grato... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
dark0
Olá pessoal.
Resolvi abrir este tópico, para falarmos sobre Criação de Tabelas, com comandos SQL.
Agora, estou meio na correria. Então, vou apenas iniciar o tópico.
Depois, quando eu tiver mais tempo, eu dou mais detalhes sobre cada campo, e tudo mais.
Um simples Exemplo:
Ate mais
Link para o comentário
Compartilhar em outros sites
29 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.