Skip to content

Latest commit

 

History

History
112 lines (91 loc) · 6.71 KB

topico-15.md

File metadata and controls

112 lines (91 loc) · 6.71 KB

[Tópico T15] - SQL - Introdução, DDL (Data Definition Language)

by Prof. Plinio Sa Leitao-Junior (INF/UFG)

SQL (Structured Query Language) é a linguagem padrão para Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDR):

  • Originalmente, chamava-se SEQUEL (Structured English QUEry Language) e foi projetada e implementada na IBM Research como a interface para um sistema de banco de dados relacional experimental chamado SYSTEM R.
  • A padronização da SQL é uma iniciativa mútua do American National Standards Institute (ANSI) e da International Standards Organization (ISO):
    • o primeiro padrão SQL é chamado de SQL-86 ou SQL1;
    • a segunda versão do padrão é chamada SQL-92 ou SQL2;
    • a proxima revisão do padrão é chamada SQL:1999 ou SQL3;
    • revisões posteriores foram apresentadas em 2006, 2008 e 2011.

Apesar do nome Linguagem Estruturada de Consulta, os comandos da SQL não são restritos a consultas a bancos de dados. A SQL é uma linguagem de banco de dados abrangente, pois inclui comandos de:

  • DDL (Data Definition Languague), tais como comandos para a criação de relações (tabelas) e restrições de integridade;
  • DML (Data Manipulation Language), tais como comandos para consultas e atualizações de dados;
  • DCL (Data Control Language), tais como comandos para a atribuição e a revogação de permissão de acesso a dados.

Para aderir à ementa da disciplina, essencialmente exploraremos os comandos SQL de DML. Outrossim, para a 'implementação' de bancos de dados durante o nosso curso, alguns dos comandos SQL de DDL serão introduzidos abaixo.

Comandos DDL

Alguns dos comandos SQL de DDL (Data Definition Languague) são apresentados abaixo por meio de exemplos. Não há a intenção de ser exaustivo, nem genérico.

Comandos DDL Exemplo 1

CREATE TABLE FUNCIONARIO (
     Pnome VARCHAR(20) NOT NULL,
     Minicial CHAR(1) NOT NULL,
     Unome VARCHAR(20) NOT NULL,
     Cpf CHAR(9) NOT NULL,
     Datanasc DATE NOT NULL,
     Endereco VARCHAR(40) NOT NULL,
     Sexo CHAR(1) NOT NULL,
     Salario NUMERIC(20,2) NOT NULL,
     Cpf_supervisor CHAR(9) NULL,
     Dnr INT NOT NULL,
     PRIMARY KEY (Cpf),
     FOREIGN KEY (Cpf_supervisor) REFERENCES FUNCIONARIO(Cpf),
     FOREIGN KEY (Dnr) REFERENCES DEPARTAMENTO(Dnumero)
);

Comandos DDL Exemplo 2

CREATE TABLE FUNCIONARIO (
     Pnome VARCHAR(20) NOT NULL,
     Minicial CHAR(1) NOT NULL,
     Unome VARCHAR(20) NOT NULL,
     Cpf CHAR(9) NOT NULL,
     Datanasc DATE NOT NULL,
     Endereco VARCHAR(40) NOT NULL,
     Sexo CHAR(1) NOT NULL,
     Salario NUMERIC(20,2) NOT NULL,
     Cpf_supervisor CHAR(9) NULL,
     Dnr INT NOT NULL,
);
ALTER TABLE FUNCIONARIO
     ADD CONSTRAINT FUNCIONARIO_PK
         PRIMARY KEY (Cpf);
ALTER TABLE FUNCIONARIO
     ADD CONSTRAINT FUNCIONARIO_FK_SUPERVISAO
         FOREIGN KEY (Cpf_supervisor) REFERENCES FUNCIONARIO(Cpf);

Comandos DDL Exemplo 3

ALTER TABLE FUNCIONARIO
     ADD CONSTRAINT FUNCIONARIO_PK
         PRIMARY KEY (Cpf);
ALTER TABLE FUNCIONARIO
     DROP CONSTRAINT FUNCIONARIO_PK;
ALTER TABLE FUNCIONARIO
     ADD Email VARCHAR(255) NOT NULL;
ALTER TABLE FUNCIONARIO
     ALTER COLUMN Email VARCHAR(255) NULL;
ALTER TABLE FUNCIONARIO
     DROP COLUMN Email;
ALTER TABLE FUNCIONARIO
     ADD CONSTRAINT FUNCIONARIO_CK_SEXO
         CHECK (Sexo IN ('M','F'));

Atividade (data limite: 12/09/2021 23h59min59s)

Veja o conteúdo do arquivo empresa.sql:

  • O conteúdo do arquivo possui comandos para a definição (criação das estruturas de dados) e construção (carga inicial) do BD Empresa.
  • Há comandos DDL da SQL: CREATE TABLE e ALTER TABLE.
  • Há comandos DML da SQL: INSERT.

Vamos executar o conteúdo do arquivo empresa.sql, tal que possamos ter um banco de dados em nosso estudo sobre a SQL. Os passos abaixo se referem à ferramenta SQLiteOnline, entretanto você pode usar outra ferramenta de sua preferência.

  1. Iniciar a interface em https://sqliteonline.com/.
  2. Selecionar um SGBD: MariaDB ou PostgreSQL.
  3. Conectar-se ao SGBD selecionado (clique em click to connect).
  4. Copiar o conteúdo do arquivo empresa.sql e colar na área de comandos SQL (parte central da interface).
  5. Clicar em ➤Run (no menu superior), para executar o conteúdo do arquivo.
  6. Checar no menu à esquerda (no SGBD selecionado) se as relações (tabelas) do BD Empresa foram criadas.
  7. Limpar a área de comandos SQL (parte central da interface).

Pronto, o BD Empresa foi criado e está pronto para ser manipulado (usado).
Qual o conteúdo de cada relação (tabela)?

  • Para cada relação do BD Empresa, execute o comando SQL
        SELECT * FROM <nome_relação>;
    • substitua <nome_relação> por:
      • FUNCIONARIO, DEPARTAMENTO, LOCALIZACAO_DEP, PROJETO, TRABALHA_EM, DEPENDENTE.

Criar uma issue no projeto https://github.com/plinioleitao/bd-2021-1-bia, com o título "Tópico 15", para responder:

  1. Você consegue criar o BD Empresa e consultar o conteúdo das relações, usando a ferramenta SQLiteOnline, ou outra ferramenta?
    Favor selecionar uma das respostas a seguir:
    • "Sim, eu consigo criar o BD Empresa e consultar o conteúdo das relações", ou
    • "Não, pois eu tenho as seguintes dificuldades: blá, blá, ...". Nesta resposta, você deve descrever as suas dificuldades, em vez de apenas listá-las.

P.S.: O [conteúdo do] banco de dados criado - BD Empresa - é o mesmo conteúdo da ilustração do BD Empresa?

Artefatos

  1. Issue criada no projeto https://github.com/plinioleitao/bd-2021-1-bia, cujo título é "Tópico 15", para ter o primeiro contato com comandos da SQL.