Menu

Comandos SQL: lista de sentencias SQL básicas con ejemplos

Los comandos SQL que usas a diario, agrupados según lo que hacen (DDL, DML, DQL y TCL), cada uno con un ejemplo que puedes ejecutar en SQLite.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Los comandos SQL de un vistazo

Los comandos SQL se dividen en unos pocos grupos según lo que hacen. La tabla recoge los que más vas a usar, y cada sección de abajo ejecuta uno de ellos.

ComandoGrupoQué hace
CREATE TABLEDDLDefine una tabla nueva y sus columnas
ALTER TABLEDDLAñade o renombra una columna, o renombra una tabla
DROP TABLEDDLBorra una tabla y todas sus filas
INSERTDMLAñade filas nuevas
UPDATEDMLCambia valores en filas existentes
DELETEDMLElimina filas
SELECTDQLLee filas, filtradas con WHERE y ordenadas con ORDER BY
BEGIN, COMMIT, ROLLBACKTCLAgrupa cambios para que se apliquen o fallen juntos

DDL es el lenguaje de definición de datos, DML el de manipulación de datos, DQL el de consulta de datos y TCL el de control de transacciones. Los nombres importan menos que la división: DDL cambia la forma de la base de datos y DML cambia lo que hay dentro.

CREATE TABLE: definir una tabla

CREATE TABLE da nombre a la tabla y enumera sus columnas con sus tipos y reglas. Todos los demás comandos de esta página necesitan una tabla con la que trabajar.

La página de CREATE TABLE explica reglas como NOT NULL, UNIQUE y DEFAULT.

INSERT: añadir filas

INSERT INTO añade una fila o varias. Enumera las columnas y luego los valores en el mismo orden.

La columna id se rellenó sola: un INTEGER PRIMARY KEY recibe el siguiente número cuando lo omites. Más sobre esto en INSERT.

SELECT: leer filas

SELECT es el comando que más vas a escribir. Elige las columnas, filtra las filas con WHERE y ordénalas con ORDER BY.

Solo vuelven las filas que pasan la prueba del WHERE, con la nota más alta primero. Consulta fundamentos de SELECT y WHERE para los detalles.

UPDATE: cambiar filas

UPDATE pone valores nuevos en filas que ya existen. La cláusula WHERE decide qué filas; si la omites, cambian todas.

Si no tienes claro qué filas coinciden con un WHERE, ejecútalo antes como un SELECT. La página de UPDATE muestra más patrones.

DELETE: eliminar filas

DELETE FROM elimina las filas que coinciden con su cláusula WHERE. Igual que UPDATE, afecta a todas las filas si falta la cláusula.

La fila de Chen ha desaparecido y las demás siguen intactas. Consulta DELETE.

ALTER TABLE y DROP TABLE: cambiar o eliminar una tabla

ALTER TABLE cambia una tabla existente sin perder sus filas. DROP TABLE elimina la tabla por completo.

Una columna nueva empieza como NULL en las filas existentes hasta que la rellenas. ALTER y DROP TABLE enumera lo que SQLite permite.

JOIN: combinar tablas

Un JOIN lee filas de dos tablas a la vez, emparejadas por una columna que comparten.

Boris no tiene inscripciones, así que un INNER JOIN lo deja fuera. Un LEFT JOIN lo mantendría, con el curso vacío.

GROUP BY: resumir filas

GROUP BY junta en una sola fila las filas que comparten un valor, y una función de agregación como COUNT o AVG resume cada grupo.

Funciones de agregación y GROUP BY y HAVING van más allá.

BEGIN, COMMIT y ROLLBACK: agrupar cambios

Una transacción hace que varios cambios cuenten como uno solo. COMMIT los conserva todos; ROLLBACK los deshace todos.

La transferencia se confirmó y el segundo cambio se deshizo, así que Ada termina con 70 y Boris con 80. Transacciones explica cuándo usarlas.

En qué se diferencia SQLite

Los comandos de esta página son SQL estándar, y lo que aprendes aquí te sirve en MySQL y PostgreSQL. Los ejemplos ejecutables están escritos para SQLite, eso sí, y en las bases de datos más grandes cambian tres detalles:

  • Listar tablas. Los ejemplos leen sqlite_master, la tabla de esquema propia de SQLite. MySQL usa SHOW TABLES y PostgreSQL usa la vista information_schema.tables (o \dt en psql).
  • Ids automáticos. En SQLite, una columna declarada INTEGER PRIMARY KEY numera sola las filas nuevas; por eso los ejemplos de INSERT omiten id. MySQL necesita AUTO_INCREMENT en la columna, y PostgreSQL una columna de identidad (GENERATED BY DEFAULT AS IDENTITY) o SERIAL.
  • Permisos y cambios de esquema. SQLite no tiene GRANT ni REVOKE, porque una base de datos SQLite es un único archivo sin cuentas de usuario, y su ALTER TABLE no puede cambiar el tipo de una columna.

Preguntas frecuentes

¿Cuáles son los comandos SQL básicos?

Cinco cubren casi todo el trabajo diario: CREATE TABLE para definir una tabla, INSERT para añadir filas, SELECT para leerlas, UPDATE para cambiarlas y DELETE para borrarlas. Después vienen ALTER TABLE, DROP TABLE, JOIN, GROUP BY y los comandos de transacción BEGIN, COMMIT y ROLLBACK.

¿Cuál es la diferencia entre DDL y DML?

DDL (lenguaje de definición de datos) cambia la estructura de la base de datos: CREATE, ALTER y DROP. DML (lenguaje de manipulación de datos) cambia las filas que hay dentro de las tablas: INSERT, UPDATE y DELETE. SELECT solo lee, así que a menudo se lista aparte como DQL.

¿Los comandos SQL distinguen entre mayúsculas y minúsculas?

No. SELECT, select y Select funcionan igual. Escribir las palabras clave en mayúsculas es una convención que las separa de los nombres de tablas y columnas. El texto entre comillas sí se compara tal cual, así que 'Ada' y 'ada' son cadenas distintas en SQLite, salvo que pidas una comparación sin distinguir mayúsculas.

¿Estos comandos funcionan igual en MySQL y PostgreSQL?

Las sentencias son SQL estándar y significan lo mismo en los tres, así que lo que aprendes aquí te sirve en todos. Los ejemplos ejecutables están escritos para SQLite, eso sí: para listar tablas se lee sqlite_master, los ids automáticos necesitan AUTO_INCREMENT en MySQL o una columna de identidad en PostgreSQL, y SQLite no tiene GRANT ni REVOKE.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR