Etiqueta: visualeditor
Etiqueta: visualeditor
 
(14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 5: Linha 5:
* '''SQL''' é uma abreviatura de ''“Structured Query Language”'' (Linguagem de Consulta Estruturada) uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional.  
* '''SQL''' é uma abreviatura de ''“Structured Query Language”'' (Linguagem de Consulta Estruturada) uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional.  
* '''SQL''' é uma linguagem de consulta, onde se dá comandos para o ambiente de banco de dados e se têm o retorno de uma “Query” (solicitação/resposta).
* '''SQL''' é uma linguagem de consulta, onde se dá comandos para o ambiente de banco de dados e se têm o retorno de uma “Query” (solicitação/resposta).
'''SQL''' não é bem uma linguagem de programação, é uma linguagem feita exclusivamente para criar tabelas, manipular os dados das tabelas e principalmente consultar esses dados. É através da '''SQL''' que os programas interagem com bancos de dados relacionais, basicamente todas as linguagens de programação tem bibliotecas para acessar esses bancos de dados relacionais, portanto não importa se usa JAVA, PHP ou CSharp, sempre pode se usar a '''SQL''' para integrar um programa a um banco de dados.''“Structured Query Language”''.


'''SQL'''  é basicamente dividido em quatro linguagens:
* '''SQL''' não é bem uma linguagem de programação, é uma linguagem feita exclusivamente para criar tabelas, manipular os dados das tabelas e principalmente consultar esses dados. É através da '''SQL''' que os programas interagem com bancos de dados relacionais, basicamente todas as linguagens de programação tem bibliotecas para acessar esses bancos de dados relacionais, portanto não importa se usa JAVA, PHP ou CSharp, sempre pode se usar a '''SQL''' para integrar um programa a um banco de dados.''“Structured Query Language”''.
* '''DML''' - Linguagem de Manipulação de Dados: pega as informações das tabelas e as altera, insere ou exclui (são os três comandos padrões da '''SQL''' que são INSERT, DELETE e UPDATE.
* '''SQL'''  é basicamente dividido em quatro linguagens:
# '''DML''' - Linguagem de Manipulação de Dados: pega as informações das tabelas e as altera, insere ou exclui (são os três comandos padrões da '''SQL''' que são INSERT, DELETE e UPDATE.
# '''DDL''' - Linguagem de Definição de Dados: seria as funções CREATE, DROP ou ALTER, altera as estruturas das tabelas.
# '''DCL''' - Linguagem de Controle de Dados: define as regras de controles de acessos dentro do banco de dados,concede acessos a usuários para alterar uma tabela, selecionar dados entre outras coisas.
# '''DTL''' - Linguagem de Transação de Dados: controla as transações ou pontos de partidas. quando se quer alterar alguma uma tabela no SGBDR, é preciso confirmar a ação antes de alterar o banco de dados.


* '''DDL''' - Linguagem de Definição de Dados: seria as funções CREATE, DROP ou ALTER, altera as estruturas das tabelas.
= Softwares =
* '''DCL''' - Linguagem de Controle de Dados: define as regras de controles de acessos dentro do banco de dados,concede acessos a usuários para alterar uma tabela, selecionar dados entre outras coisas.
Para armazenar as informações de um banco de dados é necessário algum software para gerenciar o banco de dados (SGBDs), os principais softwares gerenciadores pagos que armazenam grandes quantidades de dados são:
* '''DTL''' - Linguagem de Transação de Dados: controla as transações ou pontos de partidas. quando se quer alterar alguma uma tabela no SGBDR é preciso confirmar a ação antes de alterar o banco de dados.
*ORACLE
*SQL server (microsoft)
*IBM


= Softwares =
Também há soluções de SGBDs gratuitas como:
Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks.
*MySQL
<br>
*MariaDB
*Firebird
*PostgreSQL


= Código =
= Código =
<syntaxhighlight lang="python3">
<syntaxhighlight lang="sql">
Arquivo = "lista_contatos.txt" # Nome do arquivo
CREATE TABLE `canteiro` (
`canteiroid` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(20) COLLATE DEFAULT NULL,
`luzdiaria` INTEGER(2) DEFAULT NULL,
`agua` INTEGER(3) DEFAULT NULL,
PRIMARY KEY (`canteiroid`),
UNIQUE KEY `canteiroid` (`canteiroid`)
)
CREATE TABLE `funcionario` (
`funcid` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(80) COLLATE NOT NULL DEFAULT '',
`idade` INTEGER(2) UNSIGNED DEFAULT NULL,
PRIMARY KEY (`funcid`),
UNIQUE KEY `funcid` (`funcid`)
)
CREATE TABLE `planta` (
`ID` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(20) COLLATE NOT NULL DEFAULT '',
`luzdiaria` INTEGER(2) DEFAULT NULL,
`agura` INTEGER(2) DEFAULT NULL,
`peso` INTEGER(2) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID` (`ID`)
)
CREATE TABLE `plantio` (
`plantioID` INTEGER(11) NOT NULL AUTO_INCREMENT,
`plantaID` INTEGER(11) NOT NULL,
`funcID` INTEGER(11) NOT NULL ,
`canteiroID` INTEGER(11) NOT NULL,
`Data` DATE DEFAULT NULL,
`sementes` INTEGER(4) DEFAULT 0 NOT NULL,
PRIMARY KEY (`plantioID`),
FOREIGN KEY(`plantaID`) REFERENCES planta(ID),
FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID),
FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID),
UNIQUE KEY `ID` (`plantioID`)
)
CREATE TABLE `colhido` (
`colhidoID` INTEGER(11) NOT NULL AUTO_INCREMENT,
`plantaID` INTEGER(11) NOT NULL,
`funcID` INTEGER(11) NOT NULL ,
`canteiroID` INTEGER(11) NOT NULL,
`Data` DATE DEFAULT NULL,
`quantidade` INTEGER(4) DEFAULT 0 NOT NULL,
`peso` DOUBLE(4,3) DEFAULT 0 NOT NULL,
PRIMARY KEY (`colhidoID`),
FOREIGN KEY(`plantaID`) REFERENCES planta(ID),
FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID),
FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID),
UNIQUE KEY `ID` (`colhidoID`)
)
</syntaxhighlight>
<br>


def ler_arquivo():              # Função que le o arquivo de texto
= Diagrama de Casos de Uso =
    try:                        # Tratamento de erro
[[Arquivo:Diagrama-bd.jpeg]]
        arq = open(Arquivo,"r+") # Abre o arquivo para leitura
        print( '\n'+arq.read() ) # Quebra linha e mostra o conteudo
        arq.close()              # Fecha o arquivo
    except IOError:              # Tratamento de erro
        print('\nArquivo não encontrado!')


def escrever_linhas(texto):        # Função que le e escreve no arquivo
Criando um diagrama para criar um banco de dados para uma plantação.
    try:                          # Tratamento de erro
        arq = open(Arquivo,"a+")  # Abre o arquivo para gravação no final do arquivo
        arq.writelines('\n'+texto) # Escreve no arquivo o parametro 'texto'
        arq.close()                # Fecha o arquivo
        print('\nLinha gravada com sucesso')
    except IOError:                # Tratamento de erro
        print('\nErro ao abrir o arquivo!') # Mostra na tela uma mensagem de erro


def pesquisar_contato(nome):
= Interações com as tecnologias =
    try:
* [[Tecnologia Banco de Dados]]
        arq = open(Arquivo, "r+")
        dicionario = {'nome':'', 'telefone':'', 'email':''}
        achei = False
        # lógica ler arquivo e comparar nome
        for cont, s in enumerate(arq.readlines()):
           
            dicionario['nome'], dicionario['telefone'],dicionario['email'] = s.split(' - ')
            if dicionario['nome'] == nome:
                print(cont)
                print('Nome: %s'% dicionario['nome'])
                print('Telefone: %s'% dicionario['telefone'])
                print('Email: %s'% dicionario['email'])
                achei = True
               
        if not achei:
            print('Não existe %s' % (nome))


       
* [[Projeto de SGBDs]]
        # se achou imprime, se não mostra uma mensagem de nao encontrado


        arq.close
* [[Projeto Banco de Dados]]
       
    except IOError:
        print('\nContato não encontrado')


= Informações adicionais =


def excluir_contatos():
    try:
        arq =open('lista_contatos.txt','r+')
        valores = arq.readlines()
        l = []
        splited =[]
        nome = input('Entre com um nome:')
        for x in valores:
            splited=x.split(' - ')
            if splited[0]==nome:
              pass
            else:
                l.append(splited)
       
        arq.close()
        novo_cadastro(l)
    except:
        print('erro')
def novo_cadastro(l):
    arq = open(Arquivo,'w')
    for x in l:
        #print("Nome:%s | Telefone:%s | Email:%s"%(x[0],x[1],x[2]))
        arq.write("%s - %s - %s" %(x[0],x[1],x[2]))
    arq.close()


while(True):
   
    print('\n        Opcões:')
    print(' ')
    print('1 - Cadastrar contato')
    print('2 - Listar dados')
    print('3 - Pesquisar contato')
    print('4 - Excluir contato')
    print('9 - Sair')
    print(' ')
    Op = int(input('Digite a opção desejada:')) # Entrada da opcao pelo teclado


    if Op == 1:                                    # Se a opcao for 1
Ranking de sistemas de bancos de dados mais usados em 2015/2016:
        nome = input('\nDigite o nome do contato:')      # Entrada do nome pelo teclado
        fone = input('Digite o número do telefone:')# Entrada do telefone pelo teclado
        email = input('Digite o email:')            # Entrada do telefone pelo teclado
        contato = (nome+' - '+fone+' - '+email)    # Recebe o nome + o telefone
        escrever_linhas(str(contato))              # Chama a função que grava em arquivo
    elif Op == 2:                                   # Se a opcao for 2
        ler_arquivo()                              # Chama a função que le o arquivo
    elif Op == 9:                                  # Se a opcao for 0
        break                                      # Quebra o laço infinito
    elif Op == 3:
        nome = input("Digite o nome: ")
        pesquisar_contato(nome)
    elif Op == 4:
        #nome = input ("Digite o nome: ")
        excluir_contatos()
</syntaxhighlight>
Dar um exemplo de um código-fonte que mostre alguma parte da aplicação final. O código deverá ser curto mas que o leitor consiga enxergar para que serve. Pode-se usar comentários no programa.
<br>


= Diagrama de Casos de Uso =
[[Arquivo:Tabela sgbd.jpg]]
Desenhar ou plotar  os requisitos funcionais de uma aplicação.
<br>


= Interações com as tecnologias =
Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.
<br>


= Informações adicionais =
Descrever detalhes a mais sobre esse tema.
<br>


= Referências bibliográficas =
= Referências bibliográficas =
Relacionar aqui as referências bibliográficas no padrão ABNT.  
http://download.dominiosistemas.com.br/manuais/Introdu%E7%E3o%20a%20SQL.pdf
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores
 
https://hal9k.ifsc.usp.br/~smaira/Gradua%C3%A7%C3%A3o/8%C2%BA%20Semestre/PVI/SlidesAulaBD-ComandosDDL.pdf
 
http://www.csiits.com/home/PDF/ApostilaSQL2.pdf
 
http://www.devmedia.com.br/principais-instrucoes-em-sql/37262
 
http://aprendaplsql.com/
 
<br>
<br>

Edição atual tal como às 12h05min de 18 de outubro de 2017

Conceito

Surge em 1974 e foi desenvolvida nos laboratórios da IBM como interface para o SGBDR (Sistema Gerenciador de Banco de Dados Relacional).

Antes de entender o conceito de SQL é necessário compreender o que é um banco de dados,que é um agrupado de registros que podem ser sobre: pessoas, lugares entre outras coisas. Registros que são organizados para gerar algum tipo de informação.

  • SQL é uma abreviatura de “Structured Query Language” (Linguagem de Consulta Estruturada) uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional.
  • SQL é uma linguagem de consulta, onde se dá comandos para o ambiente de banco de dados e se têm o retorno de uma “Query” (solicitação/resposta).
  • SQL não é bem uma linguagem de programação, é uma linguagem feita exclusivamente para criar tabelas, manipular os dados das tabelas e principalmente consultar esses dados. É através da SQL que os programas interagem com bancos de dados relacionais, basicamente todas as linguagens de programação tem bibliotecas para acessar esses bancos de dados relacionais, portanto não importa se usa JAVA, PHP ou CSharp, sempre pode se usar a SQL para integrar um programa a um banco de dados.“Structured Query Language”.
  • SQL é basicamente dividido em quatro linguagens:
  1. DML - Linguagem de Manipulação de Dados: pega as informações das tabelas e as altera, insere ou exclui (são os três comandos padrões da SQL que são INSERT, DELETE e UPDATE.
  2. DDL - Linguagem de Definição de Dados: seria as funções CREATE, DROP ou ALTER, altera as estruturas das tabelas.
  3. DCL - Linguagem de Controle de Dados: define as regras de controles de acessos dentro do banco de dados,concede acessos a usuários para alterar uma tabela, selecionar dados entre outras coisas.
  4. DTL - Linguagem de Transação de Dados: controla as transações ou pontos de partidas. quando se quer alterar alguma uma tabela no SGBDR, é preciso confirmar a ação antes de alterar o banco de dados.

Softwares

Para armazenar as informações de um banco de dados é necessário algum software para gerenciar o banco de dados (SGBDs), os principais softwares gerenciadores pagos que armazenam grandes quantidades de dados são:

  • ORACLE
  • SQL server (microsoft)
  • IBM

Também há soluções de SGBDs gratuitas como:

  • MySQL
  • MariaDB
  • Firebird
  • PostgreSQL

Código

<syntaxhighlight lang="sql"> CREATE TABLE `canteiro` ( `canteiroid` INTEGER(11) NOT NULL AUTO_INCREMENT, `nome` CHAR(20) COLLATE DEFAULT NULL, `luzdiaria` INTEGER(2) DEFAULT NULL, `agua` INTEGER(3) DEFAULT NULL, PRIMARY KEY (`canteiroid`), UNIQUE KEY `canteiroid` (`canteiroid`) )

CREATE TABLE `funcionario` ( `funcid` INTEGER(11) NOT NULL AUTO_INCREMENT, `nome` CHAR(80) COLLATE NOT NULL DEFAULT , `idade` INTEGER(2) UNSIGNED DEFAULT NULL, PRIMARY KEY (`funcid`), UNIQUE KEY `funcid` (`funcid`) )

CREATE TABLE `planta` ( `ID` INTEGER(11) NOT NULL AUTO_INCREMENT, `nome` CHAR(20) COLLATE NOT NULL DEFAULT , `luzdiaria` INTEGER(2) DEFAULT NULL, `agura` INTEGER(2) DEFAULT NULL, `peso` INTEGER(2) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `ID` (`ID`) )

CREATE TABLE `plantio` ( `plantioID` INTEGER(11) NOT NULL AUTO_INCREMENT, `plantaID` INTEGER(11) NOT NULL, `funcID` INTEGER(11) NOT NULL , `canteiroID` INTEGER(11) NOT NULL, `Data` DATE DEFAULT NULL, `sementes` INTEGER(4) DEFAULT 0 NOT NULL, PRIMARY KEY (`plantioID`), FOREIGN KEY(`plantaID`) REFERENCES planta(ID), FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID), FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID), UNIQUE KEY `ID` (`plantioID`) )

CREATE TABLE `colhido` ( `colhidoID` INTEGER(11) NOT NULL AUTO_INCREMENT, `plantaID` INTEGER(11) NOT NULL, `funcID` INTEGER(11) NOT NULL , `canteiroID` INTEGER(11) NOT NULL, `Data` DATE DEFAULT NULL, `quantidade` INTEGER(4) DEFAULT 0 NOT NULL, `peso` DOUBLE(4,3) DEFAULT 0 NOT NULL, PRIMARY KEY (`colhidoID`), FOREIGN KEY(`plantaID`) REFERENCES planta(ID), FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID), FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID), UNIQUE KEY `ID` (`colhidoID`) ) </syntaxhighlight>

Diagrama de Casos de Uso

Criando um diagrama para criar um banco de dados para uma plantação.

Interações com as tecnologias

Informações adicionais

Ranking de sistemas de bancos de dados mais usados em 2015/2016:


Referências bibliográficas

http://download.dominiosistemas.com.br/manuais/Introdu%E7%E3o%20a%20SQL.pdf

https://hal9k.ifsc.usp.br/~smaira/Gradua%C3%A7%C3%A3o/8%C2%BA%20Semestre/PVI/SlidesAulaBD-ComandosDDL.pdf

http://www.csiits.com/home/PDF/ApostilaSQL2.pdf

http://www.devmedia.com.br/principais-instrucoes-em-sql/37262

http://aprendaplsql.com/