No mundo atual de crescente digitalização, big data e computação em nuvem, o gerenciamento de dados está entre as habilidades mais importantes que um engenheiro de software pode ter. Para isso, uma das ferramentas de banco de dados mais poderosas é o SQL.
SQL (Structured Query Language) é a linguagem de programação padrão usada para manipular objetos de estrutura de dados. Eles operam sobre dados contidos em um sistema de gerenciamento de banco de dados relacional (RDBMS). Alguns RDBMS conhecidos são MySQL e PostgreSQL.
Neste guia, você aprenderá sobre os subconjuntos da linguagem SQL e como usar alguns comandos SQL fundamentais, como
SELECT
, INSERT
, UPDATE
e DELETE
. Subconjuntos de SQL
A lista abaixo inclui os diferentes subconjuntos de idiomas de vários comandos SQL. Cada subconjunto tem sua própria função e propósito.
- Linguagem de definição de dados (DDL):Isso permite que você crie, exclua e atualize as definições do esquema do banco de dados (ou seja, tabelas e índices), sem realmente manipular os dados nas tabelas do banco de dados.
- Linguagem de consulta de dados (DQL):DQL é usado para recuperar dados do banco de dados usando o
SELECT
declaração. - Linguagem de manipulação de dados (DML):Esta sublinguagem permite a manipulação de dados no banco de dados usando o
INSERT
,UPDATE
eDELETE
declarações.
Este guia usa um banco de dados de exemplo para uma escola para demonstrar ainda mais os comandos SQL para cada subconjunto listado acima. O banco de dados da escola tem várias tabelas, para alunos, cursos, notas e assim por diante. A definição do
Student
A tabela contém colunas para o SSNumber
do aluno , Firstname
e Lastname
, e a definição do CourseTaken
tabela contém colunas para SSNumber
, CourseId
, NumericGrade
, e YearTaken
. O exemplo pressupõe que há três alunos na escola, cada um dos quais completou dois cursos. Os dados de exemplo são mostrados na tabela abaixo:
SSNumber | Sobrenome | Nome | CourseId | NumericGrade | Ano do ano |
---|---|---|---|---|---|
111111111 | Smith | João | CSC101 | 98 | 2021 |
111111111 | Smith | João | ENG101 | 95 | 2022 |
222222222 | Jones | Maria | CSC101 | 100 | 2022 |
222222222 | Jones | Maria | EEE101 | 75 | 2022 |
333333333 | Hansen | Roberto | POL101 | 92 | 2021 |
333333333 | Hansen | Roberto | SOC103 | 84 | 2022 |
Criar, alterar e descartar tabelas usando comandos SQL
Na linha de comando, use o
CREATE TABLE
comando seguido pelo nome da tabela e os dados da tabela. O comando abaixo cria o Student
tabela. CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
O parêntese inclui os dados da tabela, começando com uma coluna que rotula os dados de cada linha. A próxima coluna indica o tipo de dados que esta linha contém.
CHAR
indica um tipo de dados string de comprimento fixo e VARCHAR
indica um tipo de dados de string de comprimento variável. Na coluna final, o NOT NULL
O atributo garante que um registro não possa ser adicionado à tabela se algum dos NOT NULL
colunas não têm dados associados a elas. Observação O CREATE TABLE
A instrução é delimitada com um ponto e vírgula à direita (;), embora seja possível que alguns sistemas de banco de dados relacionais comerciais possam não exigir esse delimitador.
Observação A menos que mencionado de outra forma, todos os comandos de banco de dados demonstrados neste guia funcionam bem tanto em MySQL e PostgreSQL .
Para criar o
CourseTaken
tabela, execute o seguinte comando:CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
O
YearTaken
coluna é intencionalmente não incluída no CourseTaken
table para demonstrar o uso do ALTER TABLE
comando. Para adicionar o YearTaken
coluna no CourseTaken
tabela, você não precisa descartar o CourseTaken
mesa inteiramente. Em vez disso, você pode usar o DDL ALTER TABLE
comando. O comando a seguir altera o CourseTaken
tabela adicionando a coluna ausente à tabela. ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
O comando acima segue uma sintaxe semelhante à anterior. Requer o nome da tabela, bem como três argumentos:nome da linha, tipo de dados da linha e
NOT NULL
atributo. Se você deseja excluir o CourseTaken
tabela inteiramente, emita o DDL DROP TABLE
comando seguido pelo nome da tabela. DROP TABLE CourseTaken;
Cuidado A eliminação de uma tabela exclui todos os dados da tabela.
Como inserir dados em uma tabela em SQL
Para inserir os dados na tabela, use o SQL
INSERT INTO
demonstração. Para chamar esse comando, forneça o nome da tabela e a lista de nomes de linha (entre parênteses) em que você deseja inserir os dados. Isto é seguido pelos VALUES
palavra-chave e os valores reais (entre parênteses) que você deseja inserir. Os valores são inseridos nas linhas na ordem em que são chamados. Observação
- Os comandos SQL podem ser divididos em linhas. O final do comando SQL é delimitado por um ponto e vírgula (
;
).- Os dados de caractere são delimitados por um apóstrofo de abertura e fechamento (
‘
), enquanto os dados numéricos não são.
O seguinte
INSERT
comandos inserem três linhas no Student
tabela. Esses comandos usam vários INSERT
declarações. INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
Da mesma forma, você também pode inserir várias linhas na tabela em uma única consulta SQL, conforme mostrado abaixo:
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
Observação
Você pode usar oINSERT INTO
comando de forma semelhante no PostgreSQL para adicionar linhas à tabela. Certifique-se de que os valores correspondam à ordem das colunas na definição da tabela.
INSERT INTO student VALUES ('111111111', 'Smith', 'John');
Excluir dados de uma tabela
Para excluir dados de uma tabela, use o SQL
DELETE FROM
demonstração. Use o WHERE
cláusula para especificar a condição e, se houver mais de uma condição, use o AND
cláusula junto com WHERE
. Por exemplo, o comando a seguir exclui um registro do
CourseTaken
tabela com SSNumber 333333333
e CourseId POL101
. Cuidado Se você omitir o WHERE
cláusula, todos os registros da tabela são excluídos.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
Comando SQL para atualizar dados em uma tabela
Para atualizar o registro existente em uma tabela, use o SQL
UPDATE
comando. O SET
A cláusula é usada para definir (atualizar) um novo valor para uma coluna específica e o WHERE
cláusula é usada para atualizar as linhas selecionadas. Por exemplo, o comando a seguir atualiza o
NumericGrade
coluna do CourseTaken
tabela para registros com SSNumber 222222222
e CourseId EEE101
. UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
Comando SQL para recuperar dados de uma tabela
O verdadeiro poder dos sistemas de banco de dados relacionais está em sua capacidade de recuperar informações em um esquema de várias tabelas, por meio do SQL
SELECT
comando e a capacidade de unir tabelas por meio de chaves comuns. Embora este guia introdutório não examine a criação de chaves e índices utilizando essas chaves, ele utiliza o SSNumber
coluna de cada tabela como um veículo (chave) para relacionar (ou unir) as tabelas para gerar informações. Os exemplos a seguir fornecem diferentes casos de uso do SQL SELECT
comando a partir da linha de comando. Exemplo 1: Para buscar a lista de todos os alunos da escola.
SELECT * from Student;
Saída:
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
Exemplo 2: Para buscar a lista de todos os alunos e cursos que eles fizeram.
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
Saída:
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
Observação No comando acima, as duas tabelas,Student
eCourseTaken
são unidos para recuperar as informações necessárias. Os nomes das colunas noSELECT
eWHERE
as cláusulas são prefixadas com seus nomes de tabela para maior clareza. No entanto, no caso doSSNumber
coluna, somos obrigados a especificar os prefixos de nome de tabela apropriados, pois ambas as tabelas compartilham o mesmo nome de coluna. OFROM
cláusula indica as tabelas que estão sendo usadas nesta consulta.
Exemplo 3: Recupere a lista de alunos com CourseId
CSC101
e o ano em que fizeram este curso. SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
Saída:
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
Exemplo 4: Recupere a lista de nomes de alunos, cursos realizados e notas recebidas, para aqueles que tiveram notas de curso acima de
90
. SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
Saída:
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
Observação O AND
cláusula no comando acima permite filtrar os resultados por um teste de pontuação de nota condicional.
Conclusão
Este guia sobre comandos SQL é uma cartilha introdutória sobre como criar esquemas de banco de dados e manipular dados nesses bancos de dados. Embora os conceitos apresentados aqui sejam meramente superficiais em relação ao uso de sistemas de banco de dados relacionais, é um bom ponto de partida para comandos e conceitos básicos e essenciais.