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.
| Comando | Grupo | Qué hace |
|---|---|---|
CREATE TABLE | DDL | Define una tabla nueva y sus columnas |
ALTER TABLE | DDL | Añade o renombra una columna, o renombra una tabla |
DROP TABLE | DDL | Borra una tabla y todas sus filas |
INSERT | DML | Añade filas nuevas |
UPDATE | DML | Cambia valores en filas existentes |
DELETE | DML | Elimina filas |
SELECT | DQL | Lee filas, filtradas con WHERE y ordenadas con ORDER BY |
BEGIN, COMMIT, ROLLBACK | TCL | Agrupa 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 usaSHOW TABLESy PostgreSQL usa la vistainformation_schema.tables(o\dtenpsql). - Ids automáticos. En SQLite, una columna declarada
INTEGER PRIMARY KEYnumera sola las filas nuevas; por eso los ejemplos deINSERTomitenid. MySQL necesitaAUTO_INCREMENTen la columna, y PostgreSQL una columna de identidad (GENERATED BY DEFAULT AS IDENTITY) oSERIAL. - Permisos y cambios de esquema. SQLite no tiene
GRANTniREVOKE, porque una base de datos SQLite es un único archivo sin cuentas de usuario, y suALTER TABLEno 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.