Unidad 3
SQL
1
Contenido
[Link]
[Link] de definición de datos (DDL)
• Creación de tablas
• Eliminación de tablas
• Modificación de tablas
• Índices y vistas
•
Creación de BD
• Respaldo de BD
[Link] de manipulación de datos (LMD)
– Selección
• Claúsula Select
• Claúsula From
•
Claúsula Where
• Claúsula Group by
• Claúsula Having
• Operador Union
• Claúsula Order by
– Subconsultas anidadas
– Otras operaciones básicas
2
1. Antecedentes
3
Antecedentes
4
Antecedentes
● En 1986, ANSI e ISO publicaron una norma SQL,
denominada SQL-86
● En 1987, IBM publicó su propia norma denominada
Interfaz de bases de datos para arquitecturas de
aplicación a sistemas (SAA-SQL)
● En 1989 se publicó una norma extendida de SQL
denominada SQL-89
● La versión actual de la norma estándar es SQL-
2003.
5
Componentes
● Lenguaje de definción de datos (LDD):
– Proporciona órdenes para la definición de esquemas de relación, borrado de
relaciones, creación de índices y modificación de esquemas de relación.
– Definición de vistas
– Autorización: permite la especificación de los derechos de acceso a relaciones y
vistas.
– Integridad: permite especificar las ligaduras de integridad que deben satisfacer los
datos almacenados en al BD. Las actualizaciones que violen las ligaduras de
integridad se rechazan.
● Lenguaje intercativo de manipulación de datos (LMD):
– Incluye un lenguaje de consultas, basado en el álgebra relacional como en el
cálculo relacional de tuplas. Incluye también órdenes para insertar, borrar y
modificar tuplas en la base de datos.
– LMD incorporado: se diseñó para el uso sin lenguajes de programación de
propósito general, como Cobol, Pascal, Fortran y C.
● Control de transacciones: permite especificar el inicio y fin de
transacciones.
6
Correspondencia de SQL con álgebra
relacional
Algebra SQL Descripción
Relacional
ΠLista de Atributos Select lista de atributos Muestra (proyecta) los
atributos indicados en
la lista.
From Relación Indica de que relación
se van a mostrar los
(Relación) atributos.
From R1, R2 Producto cruz de dos
relaciones.
σ(Condición) Where Condición Selecciona aquellos
registros que cumplen
con la condición.
C Join A Select * Se hace la proyección de
([Link] = [Link])
From C Join A todos los atributos, el
producto cartesiano y la
on [Link] = [Link]; selección de los registros
válidos.
Correspondencia de SQL con álgebra
relacional
Algebra Relacional SQL Descripción
Select * Se hace la proyección de
From C, A todos los atributos, de los
registros válidos
Where [Link] = [Link]; (selección) del producto
cartesiano.
σ([Link] = [Link])(C x A) Select id En esta variante se hace
From C uso de IN que lo que hace
es permitir preguntar si id
Where id IN de C esta en los valores id
(Select id de A.
From A);
Select nombre Se va a mostrar el nombre
From C de los id que estén en el
conjunto dado.
Where id IN (1,2,3);
2. Lenguaje de definición de datos
(DDL)
Lenguaje de Definición de Datos (DDL)
●
El conjunto de relaciones en una BD se debe especificar
en términos de un lenguaje de definición de datos (LDD).
●
Éste permite no sólo la especificación de un conjunto de
relaciones, sino también de información relacionadas con
las relaciones, incluyendo
– El esquema de cada relación
– El dominio de valores asociado a cada atributo
– Las ligaduras de integridad
– El conjunto de índices que se deben mantener por
cada relación.
– La estructura de almacenamiento físico de cada
relación en disco.
Algunos tipos de dominio
●
char(n): es una cadena de caracteres de longitud fija
● varchar(n): es una cadena de caracteres de longitud variable
● int: es un entero
●
smallint: es un entero corto
●
numeric (p,d): es un número de coma flotante, cuya precisión la
especifica el usuario. El número está formado por p dígitos (más
el signo) y de esos dígitos, d pertenecen a la parte decimal.
● real, double precision: son números de coma flotante y de coma
flotante de doble precisión, respectivamente.
●
float(n): número de coma flotante con una precisión de n dígitos
●
date: es una fecha que contiene año (4 dígitos), mes y día
● time: es la hora, expresada en horas, minutos y segundos.
Sobre los dominios...
● SQL permite realizar operaciones aritméticas y de
compraración sobre los dominios numéricos.
● También se permiten realizar comparaciones entre
todos los demás dominios
● Al declarar un atributo se puede especificar como
not null, de manera que no permita insertar datos
si se intenta dar un valor nulo para ese dato
● AUTO_INCREMENT puede utilizarse para generar
un identificador único para cada nueva fila.
Creación de una tabla
● Se da nombre a la tabla
● Se especifica c/u de los atributos y su tipo
● Se puede especificar una restricción NOT NULL sobre
cualquier atributo.
● Se especifican la clave primaria y la clave foránea si la tiene.
Creación de tablas
CREATE TABLE r (A1 D1, A2 D2, …, An Dn,
<restricción-integridad1>,
…,
<restricción-integridadk>)
Donde:
r = relación o nombre de la tabla
Ai = atributo del esquema de la relación r
Di = tipo de dominio de los valores
restricción-integridad: restricciones de integridad
Restricciones de integridad
(llave foránea)
La sintaxis para definir una restricción de clave foránea en InnoDB es
así:
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
Significado de las restricciones
CASCADE: Borra o actualiza el registro en la tabla padre y automáticamente
borra o actualiza los registros coincidentes en la tabla hija.
• SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL
la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si
las columnas de clave foránea no han sido definidas como NOT NULL.
• NO ACTION: En el estándar ANSI SQL-92, NO ACTION significa ninguna
acción en el sentido de que un intento de borrar o actualizar un valor de clave
primaria no sera permitido si en la tabla referenciada hay una valor de clave
foránea relacionado. En MySQL 5.0, InnoDB rechaza la operación de
eliminación o actualización en la tabla padre.
• RESTRICT: Rechaza la operación de eliminación o actualización en la tabla
padre. NO ACTION y RESTRICT son similares en tanto omiten la cláusula ON
DELETE u ON UPDATE. En MySQL, las restricciones de claves foráneas se
verifican inmediatamente, por eso, NO ACTION y RESTRICT son
equivalentes.)
• SET DEFAULT: Esta acción es reconocida por el procesador de sentencias
(parser), pero InnoDB rechaza definiciones de tablas que contengan ON
DELETE SET DEFAULT u ON UPDATE SET DEFAULT.
Ejemplos
create table cliente create table cuenta
(nombre_cli char(20) not null, (num_cuenta char(10) not null,
calle_cli char(30), nombre_suc char(15),
ciudad_cli char(30), saldo int,
Primary key (nombre_cli));
primary key (num_cuenta));
create table sucursal
create table impositor
(nombre_suc char (15) not null,
(nombre_cli char(20) not null,
ciudad_suc char(30),
num_cuenta char(10) not null,
activo int,
primary key (nombre_suc), primary key (nombre_cli, num_cuenta));
check (activo >=0));
Ejemplo: CREATE TABLE
CREATE TABLE PARENT (
id INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE CHILD (
clave INT NOT NULL,
id INT NOT NULL,
PRIMARY KEY (clave, id),
FOREIGN KEY (id) REFERENCES PARENT (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
);
Eliminación de una tabla
DROP TABLE r;
● Elimina no sólo las tuplas de una relación, sino
también el esquema de la misma.
● Ejemplo:
– DROP TABLE alumnos;
Modificación de una tabla: ALTER TABLE
Permite cambiar la estructura de una tabla existente. Por ejemplo, puede añadir o borrar
columnas, crear o destruir índices, cambiar el tipo de columnas existentes, o renombrar columnas
a la m tipo.
●
Para añadir campos a una tabla existente:
ALTER TABLE nom_tabla ADD nombre_atributo tipo;
●
Para cambiar el tipo de una columna.
ALTER TABLE nom_tabla MODIFY nombre_atributo tipo;
●
Para cambiar el nombre de una columna:
ALTER TABLE nom_tabla CHANGE old_atributo new_atributo tipo;
●
Para borrar una columna:
ALTER TABLE nom_tabla DROP nom_atributo;
●
Para renombrar una tabla:
ALTER TABLE nom_tabla RENAME nuevonom_tabla;
Índices
Usada para crear índices, estos índices pueden ser
formados por uno o varios atributos y ayudan a hacer
algunas búsquedas más rápidas.
CREATE INDEX nombre_index ON EMP (EDate);
Vistas
● Una vista de base de datos es un resultado de una consulta SQL de cero, una o
varias tablas.
● Las vistas, además de reducir la complejidad permitiendo que cada usuario vea sólo
la parte de la base de datos que necesita, tienen otras ventajas:
– Las vistas proporcionan un nivel de seguridad, ya que permiten excluir datos
para que ciertos usuarios no los vean.
– Las vistas proporcionan un mecanismo para que los usuarios vean los datos en
el formato que deseen.
– Una vista representa una imagen consistente y permanente de la base de
datos, incluso si la base de datos cambia su estructura.
Características de las vistas
● Las vistas tienen la misma estructura que una tabla: filas y columnas.
● La única diferencia es que sólo se almacena de ellas la definición, no los datos.
● Los datos que se recuperan mediante una consulta a una vista se presentarán igual
que los de una tabla. De hecho, si no se sabe que se está trabajando con una vista,
nada hace suponer que es así.
● Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y
seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una
vista, en algunas condiciones existen restricciones para realizar el resto de las
operaciones sobre vistas.
● La mayoría de los DBMS soportan la creación y manipulación de vistas.
● Su forma es:
CREATE VIEW nom_vista AS SELECT * FROM tabla;
Creación de la BD
● Antes de crear las tablas de una BD es necesario
crear la BD en donde se alojarán las tablas.
● La instrucción para hacerlo es:
CREATE DATABASE IF NOT EXISTS nombre_BD;
● Una vez creada es necesario indicar que se va a abrir
para poder usarla, esto se hace con la instrucción:
USE nombre_BD;
Respaldo de la BD
Para copiar o respaldar una base de datos debe hacer lo siguiente:
● En la máquina donde se encuentra la base de datos ejecutar:
shell>mysqldump –u root –p nom_bd > ruta1\nom_archivo.sql
● En la máquina destino ejecutar las siguientes instrucciones.
mysql> create database nom_bd
shell>mysql –u root –p nom_bd < ruta2\nom_archivo.sql
Donde:
nom_bd: es el nombre de la base de datos que se quiere copiar.
nom_archivo.sql: es el nombre del archivo en el que se guarda la copia
de la base de datos.
ruta1: es la ruta en la máquina fuente donde queremos dejar el archivo
.sql
ruta2: es la ruta en la máquina destino de donde vamos a copiar el
archivo .sql
3. Lenguaje de manipulación de datos
(LMD)
Lenguaje de manipulación de datos
(LMD)
● Esta categoría del lenguaje SQL incluye comandos
para insertar, actualizar, eliminar y recuperar datos
dentro de las tablas de base de datos.
● En otras palabras, permite modificar información de
las tablas de la BD
Estructura básica de una consulta
Sentencia SELECT
●
Recupera datos de una base de datos y los devuelve en forma de
resultados de la consulta (result set)
●
Consta de seis cláusulas: las dos primeras (SELECT y FROM)
obligatorias y las otras cuatro opcionales.
●
La forma básica de la sentencia SELECT es:
SELECT [DISTINCT] {* | expresión_columna, ...}
FROM nombretabla [alias_tabla] ...
[WHERE expresión1 operador expresion2]
[GROUP BY {expresión_columna, ...} ]
[HAVING {condición} ]
[UNION [ALL] (SELECT ...)]
[ORDER BY {expresión_orden [DESC | ASC], ... ]
Claúsula Select
SELECT [DISTINCT] {* | expresión_columna, ...}
Donde:
●
Distinct: Indica que si en el resultado existen registros duplicados se
elimine en el resultado mostrado. Debe preceder al 1er campo
● *: Indica que se muestren todos los campos de la tabla
●
expresión_columna: puede ser:
– Nombre de un campo. Ejemplo: MATRICULA
– Varios campos separados por comas. Ejemplo APELLIDOS,
NOMBRE, RFC, DOMICILIO
– Expresiones más complejas pueden incluir operaciones matemáticas
o de manipulación de caracteres.
Ejemplos
SELECT nombre_sucursal Mostrará el valor de
FROM préstamo nombre_sucursal una vez por cada
registro de la tabla préstamo en la
que aparezca. Puede haber repetidas
SELECT distinct nombre_sucursal Muestra los nombres diferentes de todas
FROM préstamo las sucusales de la tabla. Elimina
duplicados
SELECT * Muestra todos los campos de la tabla que
FROM préstamo aparece en la cláusula from
SELECT sueldo *.10, edad + 3 Aplica las operaciones aritméticas a los
FROM préstamo campos que se muestran como resultado,
pero no se modifican los datos de la tabla
Adicionalmente...
● Los nombres de campos pueden ir precedidos por el nombre
de la tabla o su [Link] diferenciarlos.
● Ejemplo:
[Link]
[Link] donde a es el alias para la tabla alumnos.
Cláusula FROM
FROM nombretabla [alias_tabla] ...
●
Lista las tablas que contienen los datos a recuperar por la
consulta.
●
Define por sí misma un producto cartesiano de las relaciones
que aparecen en la claúsula.
Donde:
●
nombre_tabla puede ser uno o mas nombres de tabla.
●
alias_tabla es un nombre que se usa para referirse a la tabla
en el resto de la sentencia SELECT para abreviar el nombre
original y hacerlo más manejable, en el caso de existir más de
una tabla en la consulta.
Ejemplo
SELECT [Link], [Link]
FROM matricul m, alumnos a
WHERE [Link] = [Link]
Es más práctico que:
SELECT [Link], [Link]
FROM matricul, alumnos
WHERE [Link] = [Link]
● Las dos sentencias son idénticas y devuelven los nombres y apellidos de los alumos
matriculados.
● El nombre de tabla junto al nombre de campo es obligatorio cuando existen campos
con nombre idéntico en las tablas que forman parte de la sentencia. Así, en el ejemplo
anterior NOMBRE y APELLIDOS no lo necesitan (aunque este puesto) pero
MATRICULA si lo necesita porque en las dos tablas existe un campo con ese nombre.
Renombramiento
●
SQL proporciona un mecanismo para renombrar tanto tablas como
campos. Utiliza la cláusula as, que tiene la forma siguiente:
nombre_anterior AS nombre_nuevo
●
La cláusula as puede aparecer tanto en select como en from.
●
Por ejemplo, en la siguiente sentencia se está indicando que en el
result set, el nombre del campo BUDGET será renombrado y
aparecerá como PRESUPUESTO:
SELECT manager, budget AS presupuesto
FROM dept
●
Es importante mencionar que el nombre del campo en la tabla no
cambia, sólo es en el result set en donde se lleva a cabo el
renombramiento. Es un alias a nivel de campos, funciona como el
alias a nivel de tablas mencionado en la diapositiva de la cláusula
FROM
Cláusula WHERE
WHERE expresión1 operador expresion2
La cláusula WHERE dice a SQL que incluya sólo ciertas filas o registros de datos en los
resultados de la consulta, es decir, que tienen que cumplir los registros que se desean ver.
Donde:
●
expresión1 y expresion2 pueden ser nombres de campos, valores constantes o
expresiones.
●
operador es un operador relacional que une dos expresiones.
– Los operadores que se pueden utilizar son <, <=, >, >=, = y <>.
– Éstos se pueden usar con cadenas, número, fechas.
– Otro operador es between para comparar un atributo con un rango de valores
SELECT numero_prestamo
FROM prestamos
WHERE nombre_suc = “PLAZA DORADA“
Conectivas lógicas
● Son AND, OR y NOT.
● Los operandos de las conectivas lógicas pueden ser expresiones que contengan los
operandos de comparación.
● Ejemplos:
SELECT numero_prestamo
FROM prestamos
WHERE nombre_suc = “PLAZA DORADA“ AND importe > 240000
SELECT numero_prestamo
FROM prestamos
WHERE importe BETWEEN 30000 AND 60000
Operaciones sobre cadenas
●
La operación más usada sobre cadenas es el encaje de patrones, para el se usa el
operador LIKE.
●
Para la descripción de patrones se utilizan los caracteres especiales:
– % encaja en cualquier subcadena
– _ encaja en cualquier caracter.
●
Los patrones son case sensitive, es decir, hace diferencia entre mayúsculas y
minúsculas.
Ejemplos:
“Jos%” encaja con cualquier cadena que empiece con “Jos” (José, Josefina), pero no con
una cadena que empiece con “jos” (josé, josefina).
“%art%” encaja con cualquier cadena que contenga “art” como subcadena (partido,
artesano, carta).
“_ol” encaja en cualquier cadena de tres caracteres que termine en “ol” (gol, sol).
“_ol%” encaja en cualquier cadena, que tenga como segundo y tercer caracteres “o” y “l”
respectivamente (policia, golpe, gol).
Ejemplos
● Mostrar los nombres de todos los clientes cuya calle contenga la subcadena
“Oriente“
SELECT nombre_cliente
FROM cliente
WHERE calle_cliente LIKE “%Oriente%“
● Mostrar los nombres de los alumno cuya matricula inicie con 11
SELECT nombre_alu
FROM alumnos
WHERE matricula LIKE “11%“
● SQL permite buscar discordancias en lugar de concordancias utilizando el
operador de comparación NOT LIKE.
● SQL también permite la concatenación de cadenas usando ||.
Funciones de agregación
●
Toman una colección de valores como entrada y producen un único valor como salida.
●
SQL proporciona cinco funciones de agregación primitivas:
– AVG = Promedio
– MIN = Mínimo
– MAX = Máximo
– SUM = Total
– COUNT = Cuenta
●
Por ejemplo, para obtener un listado que muestre el promedio de impuestos que paga cada
departamento de la empresa, se utilizaría:
SELECT departamento, AVG(impuesto)
FROM departamento
GROUP BY departamento
●
Para saber cuál es el sueldo más alto que paga la empresa, se utilizaría:
SELECT MAX(sueldo)
FROM empleado
Más ejemplos
SELECT AVG (saldo) SELECT nombre_sucursal, avg (saldo)
FROM cuenta FROM cuenta
WHERE nombre_sucursal = “Navacerrada” GROUP BY nombre_sucursal
HAVING AVG (saldo)>1200
SELECT nombre_sucursal , avg (saldo)
FROM cuenta SELECT impositor.nombre_cliente, avg
GROUP BY nombre_sucursal (saldo)
FROM impositor, cuenta, cliente
SELECT avg (saldo) WHERE impositor.número_cuenta =
FROM cuenta cuenta.número_cuenta
AND ciudad_cliente = ‘Peguerinos’
SELECT count (*) GROUP BY impositor.nombre_cliente
FROM cliente HAVING COUNT (DISTINCT
impositor.número_cuenta) >= 3
SELECT nombre_sucursal, count (distinct
nombre_cliente)
FROM impositor, cuenta
WHERE impositor.número_cuenta =
cuenta.número_cuenta
GROUP BY nombre_sucursal
Valores nulos
●
SQL permite el uso de valores nulos para indicar la ausencia de
información sobre el valor de un campo. Se puede usar la palabra
clave especial null para comprobar si un valor es nulo, por el
contrario, is not null pregunta por la ausencia de un valor nulo.
●
Ejemplo:
SELECT número_préstamo
FROM préstamo
WHERE importe IS NULL
●
El uso de un valor nulo en las operaciones aritméticas o de
comparación puede llevar a resultados inesperados.
Operaciones booleanas
● SQL trata como unknown (desconocido) el resultado de
cualquier comparación que implique un valor nulo
(excepto con is null y is not null).
En general, las funciones de agregación tratan a los
valores nulos según la regla siguiente:
Todas las funciones de agregación excepto count(*)
ignoran los valores nulos de la colección de datos de
entrada.
Ejemplo de nulo
Para obtener una lista de los alumnos que aún no tienen nota en la materia
“matemáticas”, se utilizaría:
SELECT [Link], [Link]
FROM calificacion c, alumnos a
WHERE [Link] = [Link] AND
[Link]='MATEMATICAS' AND
[Link] IS NULL
Los alumnos cuya nota sea 0 para la materia de matemáticas no apareceran en el result
set de la sentencia anterior, ya que 0 no es lo mismo que null.
Cláusula GROUP BY
GROUP BY {expresión_columna, …}
●
Especifica una consulta sumaria. En vez de producir una fila de
resultados por cada fila de datos de la base de datos, una
consulta sumaria agrupa todas las filas similares y luego
produce una fila sumaria de resultados para cada grupo.
●
Seguido de la cláusula GROUP BY se especifican los nombres
de uno o más campos cuyos resultados se desean agrupados.
Donde:
●
expresión_columna debe coincidir con la expresión de columna
utilizada en la cláusula SELECT. Puede ser uno o más nombres
de campo de una tabla, separados por coma o una o más
expresiones separadas por comas.
Ejemplo
El siguiente ejemplo nos dice cuántos alumnos se matricularon en
cada grupo en el año 1995:
SELECT grupo, COUNT(*)
FROM matricul
WHERE anio = 1995
GROUP BY grupo
Esta sentencia nos devolverá una fila por cada grupo de alumnos.
Cada una de ellas contendrá el grupo y el número de alumnos en
él.
Cláusula HAVING
[HAVING {condición}
●
La cláusula HAVING dice a SQL que incluya solo ciertos grupos producidos por la
cláusula GROUP BY en los resultados de la consulta.
●
Al igual que la cláusula WHERE, utiliza una condición de búsqueda para especificar
los grupos deseados. En otras palabras, especifica la condición que deben de
cumplir los grupos. Sólo es válida si previamente se ha especificado la cláusula
GROUP BY.
La condición tiene la forma: expresión1 operador expresión2
Donde:
●
expresión1 y expresión2 pueden ser nombres de campos, valores constantes o
expresiones y éstas no deben coincidir con una expresión de columna en la cláusula
SELECT.
●
operador es un operador relacional que une las dos expresiones. Más tarde se
verán los distintos operadores que se puede utilizar.
Ejemplo
● La sentencia siguiente nos mostrará el número de alumnos en cada grupo
de 1995 cuyo numero de integrantes supera los 30:
SELECT grupo, COUNT(*)
FROM matricul
WHERE anio = 1995
GROUP BY grupo
HAVING COUNT(*) > 30
Operador UNION
SELECT sentencia UNION [ALL] SELECT sentencia
●
El operador UNION combina el resultado de dos sentencias SELECT en un único
resultado. Este resultado se compone de todos los registros devueltos en ambas
sentencias.
●
Por defecto, los registros repetidos se omiten. Para no quitarlos se emplea la palabra
ALL.
●
Cuando se utilice el operador UNION, la lista de selección para cada sentencia SELECT
debe tener el mismo número de columnas con el mismo tipo de datos y en el mismo
orden. Por ejemplo,
SELECT apellidos, nombre FROM alumnos
UNION
SELECT apellidos, nombre FROM profesor
UNION
SELECT apellidos, nombre FROM personal
Este ejemplo tiene el mismo número de columnas y cada columna en orden con el mismo
tipo de datos. Nos devolverá una lista única de alumnos, profesores y personal no docente.
Cláusula ORDER BY
ORDER BY {expresión_orden [DESC | ASC], ...
●
La cláusula ORDER BY ordena los resultados de la consulta en base a los datos de
una o más columnas. Si se omite, los resultados saldrán ordenados por el primer
campo que sea clave en el índice que se haya utilizado.
Donde:
●
expresión_orden puede ser el nombre de un campo, expresión o el número de
posición que ocupa la expresión de columna en la cláusula SELECT
●
DESC|ASC. Por defecto se ordenan ASCendentemente (de menor a mayor). Si se
deseará de mayor a menor se debe usar DESC (DESCendente).
●
Por ejemplo, para mostrar los alumnos ordenados de mayor edad a menor, se
utilizaría:
SELECT nombre, apellidos
FROM alumnos
ORDER BY fecha_nacimiento DESC
Ejemplos
● Para obtener un listado de empleados ordenado por departamento y
dentro de cada departamento ordenados por número de empleado,
se utilizaría:
SELECT CONCAT(nombre,' ',apellidos), num_empleado,
departamento
FROM empleados
ORDER BY departamento, num_empleado
o lo mismo de otra forma:
SELECT CONCAT(nombre,' ',apellidos), num_empleado,
departamento
FROM empleados
ORDER BY 3, 2
Otras operaciones básicas
Instrucción Función y sintaxis
INSERT Para insertar un registro en la tabla.
INSERT INTO nom_tabla VALUES (Atr1, Atr2, …,
Atrn);
LOAD DATA Para insertar varios registros a través de un archivo.
LOAD DATA LOCAL INFILE 'nom_arch.txt' INTO
TABLE nom_tabla;
UPDATE Para actualizar valores de atributos de una tabla.
UPDATE TABLE SET Atributo = valor WHERE
condición;
DELETE Para eliminar registros de una tabla.
DELETE FROM tabla WHERE condición;
Para eliminar todos los registros de una tabla.
DELETE FROM tabla;