{"id":18369575,"url":"https://github.com/henriqueotogami/learning-sql-database","last_synced_at":"2026-04-30T14:35:48.932Z","repository":{"id":58688797,"uuid":"523162739","full_name":"henriqueotogami/learning-sql-database","owner":"henriqueotogami","description":"Estudos de SQL e MySQL8.","archived":false,"fork":false,"pushed_at":"2025-03-04T05:31:52.000Z","size":984,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-04T06:28:23.317Z","etag":null,"topics":["java","mysql-database","sql-database"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henriqueotogami.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-10T01:37:34.000Z","updated_at":"2025-03-04T05:31:56.000Z","dependencies_parsed_at":"2023-02-16T15:00:25.206Z","dependency_job_id":null,"html_url":"https://github.com/henriqueotogami/learning-sql-database","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Flearning-sql-database","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Flearning-sql-database/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Flearning-sql-database/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Flearning-sql-database/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henriqueotogami","download_url":"https://codeload.github.com/henriqueotogami/learning-sql-database/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281424,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mysql-database","sql-database"],"created_at":"2024-11-05T23:29:52.555Z","updated_at":"2026-04-30T14:35:48.914Z","avatar_url":"https://github.com/henriqueotogami.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Aprendendo SQL para Banco de Dados Relacionais\n\n\u003cimg width=\"auto\" src=\"https://github.com/henriqueotogami/learning-sql-database/blob/master/src/img/Learning-SQL-database.png?raw=true\"\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/henriqueotogami/learning-sql-database\"\u003e\n\u003cimg src=\"https://img.shields.io/github/forks/henriqueotogami/learning-sql-database\"\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/henriqueotogami/learning-sql-database\"\u003e\n\u003cimg src=\"https://img.shields.io/github/license/henriqueotogami/learning-sql-database\"\u003e\n\u003c/div\u003e\n\u003chr\u003e\n\n# Learning SQL for Relational Databases\n\n\u003e Repositório com scripts SQL e exemplos desenvolvidos durante o módulo de Banco de Dados Relacional do curso de Java, focado em criação de esquemas, tabelas, operações CRUD e consultas com Join e Aggregation.\n\n## 📋 Sobre o Projeto\n\nEste projeto contém uma coleção de scripts SQL desenvolvidos como parte do curso [Cod3r | Java 2022 Completo](https://www.udemy.com/course/fundamentos-de-programacao-com-java/). Os scripts incluem a criação de um banco de dados relacional de estados e cidades brasileiras, prefeituras, empresas e filiais, além de exemplos práticos de inserção, atualização, exclusão e consultas com JOIN e agregação.\n\n## 📁 Estrutura do Projeto\n\n### Criação de Esquema e Tabelas (`src/create/`)\n- **createSchema.sql** - Criação do esquema `wm`\n- **createTableState.sql** - Tabela de estados brasileiros\n- **createTableCities.sql** - Tabela de cidades e tabela de teste\n- **createTableMayor.sql** - Tabela de prefeitos (relação 1:1 com cidades)\n- **createTableCompany.sql** - Tabelas de empresas e filiais (relação N:N)\n\n### Inserção de Dados (`src/insert/`)\n- **inserNewStates.sql** - Inserção de novos estados\n- **insertStatesOne.sql** / **insertStatesTwo.sql** - Inserção de estados\n- **insertNewCities.sql** - Inserção de cidades com subconsulta\n- **insertNewMayors.sql** - Inserção de prefeitos\n- **insertCompanies.sql** - Inserção de empresas\n\n### Atualização de Dados (`src/update/`)\n- **updateStates.sql** - Atualização de registros, ALTER TABLE (renomear colunas) e RENAME TABLE\n\n### Exclusão de Dados (`src/delete/`)\n- **deleteStates.sql** - Exclusão de registros com WHERE\n\n### Remoção de Tabelas (`src/drop/`)\n- **dropTableTest.sql** - Remoção de tabelas com DROP TABLE\n\n### Consultas (`src/query/`)\n- **queryStates.sql** - Consultas básicas em estados\n- **queryStatesWithJoin.sql** - JOIN entre estados e cidades (sintaxe antiga e INNER JOIN)\n- **queryStatesWithAggregation.SQL** - Agregações (SUM, AVG) e GROUP BY\n- **queryMayorsWithJoin.sql** - Consultas com JOIN envolvendo prefeitos\n- **queryCompanies.sql** - Consultas em empresas e filiais\n\n## 📂 Estrutura do Repositório\n\n```\nLICENCE\nREADME.md\nsrc/\n  create/\n    createSchema.sql          # criação do esquema\n    createTableState.sql      # tabela de estados\n    createTableCities.sql     # tabela de cidades\n    createTableMayor.sql      # tabela de prefeitos\n    createTableCompany.sql    # tabelas empresas e filiais\n  insert/\n    inserNewStates.sql        # inserir estados\n    insertStatesOne.sql\n    insertStatesTwo.sql\n    insertNewCities.sql       # inserir cidades\n    insertNewMayors.sql       # inserir prefeitos\n    insertCompanies.sql       # inserir empresas\n  update/\n    updateStates.sql          # atualizar e renomear tabelas\n  delete/\n    deleteStates.sql          # excluir registros\n  drop/\n    dropTableTest.sql         # remover tabelas\n  query/\n    queryStates.sql           # consultas básicas\n    queryStatesWithJoin.sql   # consultas com JOIN\n    queryStatesWithAggregation.SQL  # agregações\n    queryMayorsWithJoin.sql\n    queryCompanies.sql\n```\n\n## 🛠️ Tecnologias Utilizadas\n\n- **MySQL 8.0.30** - Sistema de gerenciamento de banco de dados relacional\n- **Visual Studio Code 1.70.2** - Editor de código\n  - [Plugin vscode-database](https://marketplace.visualstudio.com/items?itemName=bajdzis.vscode-database) - Execução de scripts SQL\n  - [Plugin Xcode Theme](https://marketplace.visualstudio.com/items?itemName=MateoCERQUETELLA.xcode-12-theme)\n- **MacOS Monterey 12.5.1** - Sistema operacional de desenvolvimento\n\n## 📝 Funcionalidades Principais\n\n### Modelo de Dados\n- **Estados** (`brazilian_states`) - id, nome, sigla, região, população\n- **Cidades** (`brazilian_cities`) - relacionamento N:1 com estados (chave estrangeira)\n- **Prefeitos** (`mayors`) - relacionamento 1:1 com cidades\n- **Empresas e Filiais** (`companies`, `companies_branches`) - tabela de junção N:N\n\n### Operações CRUD\n- **CREATE** - Criação de esquemas, tabelas e inserção de dados\n- **READ** - Consultas com SELECT, WHERE, aliases\n- **UPDATE** - Alteração de registros e estrutura de tabelas (ALTER TABLE, RENAME)\n- **DELETE** - Exclusão de registros com condições\n- **DROP** - Remoção de tabelas\n\n### Consultas Avançadas\n- **JOIN** - INNER JOIN entre estados e cidades\n- **Aggregation** - SUM, AVG, GROUP BY, ORDER BY\n- **Subconsultas** - Uso de SELECT em INSERT (ex: inserir cidade referenciando estado por sigla)\n\n## 🚀 Como Executar os Scripts\n\n### Pré-requisitos\n- MySQL Server 8.0+ instalado e em execução\n- MySQL Workbench ou extensão vscode-database no VS Code\n\n### Execução no VS Code (vscode-database)\n1. Conecte ao servidor MySQL através do plugin\n2. Abra o arquivo `.sql` desejado\n3. Selecione o trecho que deseja executar ou use o script inteiro\n4. Pressione `Command + Shift + E` (Mac) ou `Ctrl + Shift + E` (Windows/Linux) para executar\n\n### Ordem Recomendada de Execução\n```bash\n# 1. Criar esquema e tabelas (ordem importa por causa das FKs)\ncreate/createSchema.sql\ncreate/createTableState.sql\ncreate/createTableCities.sql      # depende de brazilian_states\ncreate/createTableMayor.sql       # depende de brazilian_cities\ncreate/createTableCompany.sql\n\n# 2. Executar updateStates.sql para renomear states → brazilian_states\n# (necessário antes dos inserts que referenciam brazilian_states)\n\n# 3. Inserir dados\ninsert/*.sql\n\n# 4. Consultas\nquery/*.sql\n```\n\n### Execução no MySQL Workbench\n1. Abra o MySQL Workbench e conecte ao servidor\n2. Abra o arquivo SQL ou cole o conteúdo\n3. Execute com o ícone de raio (Execute) ou `Ctrl+Shift+Enter`\n\n## 📚 Conteúdos Abordados\n\n- ✅ Instalação do MySQL Server e Workbench no MacOS\n- ✅ Modelo Entidade/Relacionamento (ER)\n- ✅ Chave primária, chave estrangeira e relacionamentos (1:1, N:1, N:N)\n- ✅ Criação de esquemas e tabelas (CREATE SCHEMA, CREATE TABLE)\n- ✅ Tipos de dados: INT, VARCHAR, DECIMAL, ENUM\n- ✅ Constraints: PRIMARY KEY, UNIQUE, FOREIGN KEY, NOT NULL\n- ✅ Inserção de dados (INSERT INTO)\n- ✅ Atualização de dados (UPDATE, ALTER TABLE, RENAME TABLE)\n- ✅ Exclusão de dados (DELETE)\n- ✅ Remoção de tabelas (DROP TABLE)\n- ✅ Consultas com JOIN (sintaxe antiga e INNER JOIN)\n- ✅ Agregações (SUM, AVG, GROUP BY, ORDER BY)\n- ✅ Subconsultas em INSERT\n\n## ⚙️ Como Funciona\n\n### Fluxo de Criação do Banco\n1. O esquema `wm` é criado para organizar os objetos\n2. A tabela `states` é criada com colunas: id, nome, sigla, regiao, populacao\n3. Via `updateStates.sql`, as colunas são renomeadas e a tabela passa a ser `brazilian_states`\n4. `brazilian_cities` é criada com FK para `brazilian_states`\n5. `mayors` tem relação 1:1 com cidades (UNIQUE em city_id)\n6. `companies` e `companies_branches` formam relação N:N entre empresas e cidades\n\n### Exemplo de JOIN\nOs scripts em `queryStatesWithJoin.sql` demonstram consultas que unem estados e cidades:\n- Sintaxe antiga: `FROM tabela1, tabela2 WHERE tabela1.id = tabela2.state_id`\n- Sintaxe moderna: `INNER JOIN tabela2 ON tabela1.id = tabela2.state_id`\n\n### Exemplo de Agregação\nEm `queryStatesWithAggregation.SQL` são usados SUM e AVG para totalizar população por região e calcular média.\n\n## 📄 Licença\n\nEste projeto está licenciado sob a MIT License - veja o arquivo [LICENCE](LICENCE) para mais detalhes.\n\n## 🤝 Contribuições\n\n\u003e Caso você queira ajudar a melhorar este repositório, qualquer ajuda é bem-vinda.\n\n- [ ] Faça um **fork** deste repositório ([link para fork](https://github.com/henriqueotogami/learning-sql-database/fork))\n- [ ] Crie um **branch** com as suas modificações: `git checkout -b meu-novo-recurso`\n- [ ] Faça um **commit**: `git commit -am 'Adicionando um novo recurso...'`\n- [ ] Faça um **push**: `git push origin meu-novo-recurso`\n- [ ] Crie uma **Pull Request** neste repositório\n\n**Depois que sua solicitação (pull request) for aceita e adicionada (merged) ao ramo principal (branch master), você pode excluir sua branch tranquilamente.**\n\n## 📖 Referências\n\n- Curso: [Cod3r | Java 2022 Completo](https://www.udemy.com/course/fundamentos-de-programacao-com-java/) - Módulo de Banco de Dados Relacional\n- Documentação MySQL: [dev.mysql.com](https://dev.mysql.com/doc/)\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr\u003e\n\u003e ### **Muito obrigado, e que a força esteja com você.**\n\u003e\n\u003e ### Desenvolvido por **HMAP | Henrique Matheus Alves Pereira** 🦁\n\u003c/div\u003e\n\n---\n\n### Hashtags\n#SQL #MySQL #Database #RelationalDatabase #Java #LearningToCode #CRUD #JOIN #Aggregation #OpenSource #GitHub #DatabaseDesign #EntityRelationship #ForeignKeys #Cod3r\n\n### Meta Keywords\n```\nSQL, MySQL, banco de dados relacional, CRUD, JOIN, agregação, criação de tabelas,\nesquema, chave primária, chave estrangeira, modelo entidade relacionamento,\nestados e cidades, INSERT, UPDATE, DELETE, SELECT, GROUP BY, Cod3r, Java,\naprendizado SQL, scripts SQL, vscode-database\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueotogami%2Flearning-sql-database","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenriqueotogami%2Flearning-sql-database","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueotogami%2Flearning-sql-database/lists"}