Introducción a SQL
## Objetivos de Aprendizaje
- Comprender qué es SQL y su propósito
- Aprender sobre bases de datos relacionales
- Configurar un entorno SQL
- Escribir tu primera consulta SQL
## ¿Qué es SQL?
SQL (Structured Query Language) es un lenguaje estándar para almacenar, manipular y recuperar datos en bases de datos relacionales.
```sql
SELECT first_name, last_name
FROM customers
WHERE city = 'New York';
```
## Bases de Datos Relacionales
### Tablas
Los datos se organizan en tablas:
```sql
-- Tabla: employees
+------------+------------+-----------+--------+
| employee_id| first_name | last_name | salary |
+------------+------------+-----------+--------+
| 1 | Alice | Johnson | 75000 |
| 2 | Bob | Smith | 65000 |
| 3 | Carol | Williams | 80000 |
+------------+------------+-----------+--------+
```
### Conceptos Clave
- **Filas (Registros)**: Entradas individuales
- **Columnas (Campos)**: Atributos de los datos
- **Clave Primaria**: Identificador único para cada fila
- **Clave Foránea**: Enlace a otra tabla
## Sistemas de Bases de Datos
- **MySQL**: Popular de código abierto
- **PostgreSQL**: Avanzado de código abierto
- **SQLite**: Ligero, basado en archivos
- **SQL Server**: Empresarial de Microsoft
- **Oracle**: Solución empresarial
## Configuración
### SQLite (Más Simple)
```bash
# Instalar
sudo apt install sqlite3
# Crear base de datos
sqlite3 mydatabase.db
# O usar Python
python3 -c "import sqlite3; print(sqlite3.version)"
```
### MySQL
```bash
# Instalar
sudo apt install mysql-server
# Conectar
mysql -u username -p
```
## Tu Primera Consulta
```sql
-- Seleccionar todo de una tabla
SELECT *
FROM employees;
```
```sql
-- Seleccionar columnas específicas
SELECT first_name, last_name
FROM employees;
```
## Configuración de la Base de Datos
### Crear Base de Datos
```sql
CREATE DATABASE company;
USE company;
```
### Crear Tabla
```sql
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT UNIQUE,
hire_date DATE,
salary DECIMAL(10, 2)
);
```
### Insertar Datos de Ejemplo
```sql
INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, salary)
VALUES
(1, 'Alice', 'Johnson', 'alice@company.com', '2020-01-15', 75000.00),
(2, 'Bob', 'Smith', 'bob@company.com', '2021-03-22', 65000.00),
(3, 'Carol', 'Williams', 'carol@company.com', '2019-07-10', 80000.00);
```
## Fundamentos de Sintaxis SQL
### Sensibilidad a Mayúsculas
- Las palabras clave SQL no distinguen mayúsculas
- Los nombres de tablas y columnas varían según la base de datos
- Mejores prácticas: palabras clave en mayúsculas, nombres en minúsculas
```sql
-- Todos son equivalentes
SELECT * FROM employees;
select * from employees;
SeLeCt * FrOm employees;
```
### Comentarios
```sql
-- Comentario de una línea
/*
Comentario
de varias líneas
*/
```
### Puntos y Comas
```sql
-- La mayoría de las bases de datos requieren puntos y comas
SELECT * FROM employees;
SELECT * FROM departments;
```
## Cláusulas SQL
| Cláusula | Propósito |
|----------|-----------|
| SELECT | Columnas a recuperar |
| FROM | Tabla a consultar |
| WHERE | Condiciones de filtrado |
| ORDER BY | Ordenar resultados |
| GROUP BY | Agrupar filas |
| HAVING | Filtrar grupos |
## Ejecutar SQL
### Línea de Comandos (SQLite)
```bash
sqlite3 company.db < schema.sql
sqlite3 company.db -header -column < query.sql
```
### Python
```python
import sqlite3
conn = sqlite3.connect('company.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM employees")
results = cursor.fetchall()
for row in results:
print(row)
conn.close()
```
### DBeaver (GUI)
Herramienta gratuita de base de datos multiplataforma.
## Resumen
- SQL es el lenguaje estándar para bases de datos relacionales
- Los datos se organizan en tablas con filas y columnas
- Las claves primarias identifican exclusivamente las filas
- Sintaxis SQL: SELECT columnas FROM tabla WHERE condiciones
- SQL no distingue mayúsculas en las palabras clave
- Los puntos y comas terminan las sentencias
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →