Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Fundamentos de BD
Introducción al SQL
Primero que nada debemos de saber que significa SQL, por sus siglas en ingles
(Structured Query Language), Lenguaje de Consulta Estructurado, es un lenguaje
declarativo de acceso a bases de datos relacionales que permite especificar diversos
tipos de operaciones en éstas. Una de sus características es el manejo del álgebra y el
cálculo relacional permitiendo efectuar consultas con el fin de recuperar información de
interés de una base de datos, así como también hacer cambios sobre ella, agregando
información, modificándola o eliminándola.
SQL cuenta con dos lenguajes que nos permiten poder realizar nuestras actividades en
nuestra BD.
Comando Descripción
CREATE Utilizado para crear nuevas usuarios, tablas, campos, constraints, etc.
DROP Empleado para eliminar usuarios, tablas, campos, constraints, etc.
ALTER Utilizado para modificar usuarios, las tablas agregando campos o cambiando
la definición de los campos. Los constraints, etc.
TRUNCATE Elimina el contenido de la tabla
Comando Descripción
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio
determinado
Cláusula Descripción
FROM Utilizada para especificar la tabla de origen de datos de la cual se van a
seleccionar los registros
WHERE Utilizada para especificar las condiciones que deben reunir los registros que se
van a seleccionar
GROUP Utilizada para separar los registros seleccionados en grupos específicos
BY
HAVING Utilizada para expresar la condición que debe satisfacer cada grupo
ORDER Utilizada para ordenar los registros seleccionados de acuerdo con un orden
BY específico
Operador Uso
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si
AND
ambas son ciertas.
Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna
OR
de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
Operador Uso
< Menor que
También contamos con unas funciones llamadas funciones de agregado, éstas se usan
dentro de una cláusula SELECT en grupos de registros para devolver un único valor que
se aplica a un grupo de registros.
Función Descripción
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el número de registros de la selección
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
Como hemos dicho con anterioridad, nuestra herramienta de trabajo en esta materia es el
manejador de base de datos Oracle, debemos de saber cuales son los tipos de datos
permitidos y así poder definir de una manera más eficiente nuestra BD.
Los tipos de datos más comunes son: VARCHAR (cadenas de texto variables no muy
grandes), DATE (fechas, horas), NUMBER o NUMERIC (números), BLOB (ficheros de
tipo Word, Excel, Access, video, sonido, imágenes, etc.) y CLOB (cadenas de texto muy
grandes).
CREATE: Este comando crea una estructura de datos dentro de la base de datos. Puede
ser una tabla, vista, índice, función, procedimiento o cualquier otro objeto que el motor de
la base de datos soporte, éste comando lo utilizamos en la unidad 1 para crear a los
usuarios.
Como creamos una tabla en nuestra BD?. Para ello haremos uso del comando
CREATE y la palabra TABLE, veamos la siguiente sintaxis y tratemos de aprender como
se escribe y que significa cada parte.
Donde:
CREATE TABLE Comando para crear una tabla, debe de incluirse la palabra
TABLE
nombre_de_tabla Es el nombre de la tabla, se recomienda que sea relacionado a la
información que contendrá
( Requerido e indica el inicio de los campos que formarán la tabla.
campo1, campo2, Son los nombres de los campos que contiene la tabla, se
campoN recomienda que el nombre esté relacionado con lo que guardará
el campo.
tipo_de_dato Es el tipo de dato de cada uno de los campos de la tabla, si el
campo tiene longitud ésta se especifica entre paréntesis.
NOT NULL Si el campo requiere obligatoriamente de un valor, se le impone
las palabras NOT NULL, de ésta manera el DBMS restringe que
dicho campo se quede sin valor.
) Requerido e indica el fin de los campos que formarán la tabla o el
También podemos crear tablas a partir de tablas que ya existen en nuestra base de datos,
incluso si éstas tienen registros almacenados, el siguiente ejemplo ilustra como se hace.
Es importante que nuestras tablas cuenten con índices o llaves primarias. Pare evitar la
duplicidad de información en nuestra BD, para ello la sintaxis a emplear es la siguiente,
siempre y cuando se esté creando la tabla.
Si por alguna razón se tiene que modificar o alterar la estructura de una tabla, el DDL nos
provee del comando ALTER.
Sintaxis
ALTER TABLE alumnos ADD peso varchar(10); Si la tabla ya tiene datos no se puede
condicionar el nuevo campo con NOT NULL, es decir, no se le puede escribir NOT NULL.
ALTER TABLE prueba DROP COLUMN nombre_columna; Para eliminar una columna
de una tabla, siempre y cuando no sea parte del PK o FK. Si la columna cuenta con datos,
éstos se perderán.
Para renombrar una columna en una tabla, es decir cambiarle el nombre a una
columna de la tabla.
Si al modificar la longitud del campo es menor que el texto que contengan los datos, no se
puede hacer el cambio, se marca el siguiente error.
ORA-01441: cannot decrease column length because some value is too big
También le podemos agregar la llave primaria a una tabla que ya esté creada, aunque hay
que tener en cuenta las siguientes consideraciones:
Página: 9 Ing. José Gallegos Martínez. E-mail: jose.gm@saltillo.tecnm.mx
INSTITUTO TECNOLOGICO DE SALTILLO
Fundamentos de BD
Si la tabla tiene datos, asegurarse que el dato contenido en el campo que se pretende sea
llave que no esté repetido.
ALTER TABLE Grupos add constraint foreign key (id_materia) reference Materias
(id_materia);
DROP: Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista,
índice, función, campo, procedimiento o cualquier otro objeto que el motor de la base de
datos soporte.
TRUNCATE: Este comando trunca todo el contenido de una tabla. La ventaja sobre el
comando DELETE, es que si se quiere borrar todo el contenido de la tabla, es mucho más
rápido, especialmente si la tabla es muy grande, la desventaja es que TRUNCATE solo
sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la
cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de
Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando
truncate borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.
Una vez que nuestra base de datos ha sido implementada es requisito que le
alimentemos o almacenemos información, dado que ese es uno de los propósitos de la
misma. Para ello el SQL con el DML nos proporciona el comando INSERT.
Comando INSERT
Forma 1.
Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia
acortada, es decir a todos y cada uno de los campos se le asignará un valor, como se
puede observar, en esta forma los nombres de los campos no se escriben
Donde:
Ejemplo (asumiendo que número y nombre son las únicas columnas de la tabla llamada
sexos):
NOTAS:
Esta manera inserta valores a todas y cada una de las columnas de la tabla.
Cada valor en la lista de valores, le corresponde a una columna de la tabla.
No se requiere especificar los campos de la tabla.
Los valores numéricos, se escriben de esa manera en que se hayan definido el tipo de
dato. 123 , 457. Si tiene decimales 22.50
Los valores texto o fechas se ponen entre apostrofes.
El formato para le fecha es 'dd/mm/yyyy' para español y ‘mm/dd/yyyy’ en inglés
Forma 2.
Cuando se especifican ciertos valores para ciertos campos de una tabla, es decir no a
todos los campos de la tabla se le asignará valor, como requisito, los campos que no
aceptan nulos se les debe de asignar valor, es decir aquellos que son NOT NULL
requieren de valor.
Donde:
NOTAS:
Esta forma del INSERT, inserta valores solo a los campos indicados
Cada valor en la lista de valores, le corresponde a una columna de la lista de
columnas de la tabla.
Se requiere especificar los campos de las tablas a los que se les quiere insertar valor.
Los valores numéricos, se escriben de esa manera, 123 o 345, si tiene decimales
123.45
Los valores texto o fechas se ponen entre apostrofes.
El formato para le fecha es 'dd/mm/yyyy' en españo y en ingles ‘mm/dd/yyyy’
Los campos que son NOT NULL, obligatoriamente se tienen que indicar, así como su
valor correspondiente.
Ejemplo:
INSERT INTO clientes (id_cliente, nombre, paterno, edad, sexo, telefono, e_mail, id_pais,
id_estado, id_ciuad, id_colonia)
VALUES (1, ‘Juanito’, 'García', 20, 1, '222222', 'correo', 1,1,1,1);
Otras formas
Un INSERT también puede utilizarse para recuperar datos de otra tabla ya existente y con
registros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se
hace en una sola sentencia SQL que no implica ningún procesamiento intermedio en la
Comando UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.
Forma 1. Actualiza uno o más campos, pero de todos los registro. Esta forma actualiza el
valor del campo especificado y lo aplica a todos los registros de la tabla. Este caso es
poco usual.
Donde:
O bien si se requiere cambiar a dos o más campos el valor y asignarles el nuevo valor a
todos los registros se puede hacer de la siguiente forma.
UPDATE nombre_de_tabla
SET nombre_de_campo1 = valor1,
nombre_de_Campo2 = valor2;
UPDATE nombre_de_tabla
SET nombre_campo = Valor1
WHERE campo_llave = valor_campo_llave;
Donde:
En la cláusula WHERE se puede incluir más de una condición para ello se usan los
operadores lógicos AND y OR. Cuando usar uno o el otro? Pues hay que escuchar y
entender el requerimiento, si nos dicen aquellos alumnos de la carrera de sistemas y que
sean hombres, entonces usamos AND, si nos dicen, los alumnos que sean de sistemas o
que sean hombres, usamos el OR
Si se requiere actualizar más de dos campos pero bajo un criterio o condición específica,
es decir de un solo registro de la tabla.
UPDATE nombre_de_tabla
SET campo1 = nuevo_valor1, campo2 = nuevo_valor2
WHERE campo_llave = valor_campo_llave;
En estos casos se recomienda que en la cláusula WHERE se use el campo o campos que
forman la llave primaria o índice de la tabla, ya que esto asegura que la afectación sea
sobre un solo registro y en caso de haber cometido un error es más fácil hacer la
corrección.
Forma 3.
UPDATE nombre_de_tabla
SET nombre_campo = Valor1
WHERE campo_FK = (subconsulta);
Donde:
Comando DELETE
Eliminar, dar de baja, borrar, depurar, cuantas veces hemos escuchado estas palabras,
pues bien a la información o datos almacenados en nuestra base de datos seguramente
en algún momento hay de depurarla por alguna razón. Para poder realizar esta actividad
el SQL – DML con el comando DELETE nos permite cumplir con ello.
Forma 1.
Donde:
Ésta forma es muy delicada y peligrosa, borra todos los registros que se encuentren en la
tabla.
Donde:
Al igual que el UPDATE, en la cláusula WHERE se pueden poner más de una condición.
La subconsulta, al final de cuentas es una consulta en la tabla PAPÁ porque el campo_FK
es el campo que establece la relación y es la llave foránea, entonces se puede hacer la
consulta en la tabla papá y el valor encontrado lo usamos en el UPDATE o DELETE en su
cláusula WHERE.
Por ejemplo, si se pide dar de baja a los alumnos de la carrera de sistemas, primero no
sabemos cuál es el ID de la carrera, por lo tanto tenemos que hacer:
Hemos usado las palabras consultar, listar, obtener, recuperar, leer, seleccionar
información o datos almacenados en nuestra base de datos, y si guardamos información
en ella, es obvio que la tengamos que consultar.
Para poder realizar esta actividad el SQL – DML con el comando SELECT nos permite
cumplir con ello.
Sintaxis básica. Recuperando todos los registros y todas las columnas de una tabla. En
la vida real ésta consulta poco te sirve y lo más seguro es que nunca lo hagas.
Donde:
Si la consulta a realizar está condicionada por algún valor o criterio específico que la haga
recuperar uno o un conjunto de registros en necesario incluir la cláusula WHERE.
SELECT *
FROM Nombre_de_Tabla
WHERE campo_llave = valor_campo_llave;
Donde:
Cuando se incluyen dos o más tablas en la consulta, se deben de especificar los nombres
de dichas tablas en la cláusula FROM e incluir obligatoriamente la cláusula WHERE
donde establecemos la relación que hay entre las tablas involucradas y como ya sabemos
las relaciones las establecen los PK = FK.
Donde:
Importante, si no se pone en la cláusula WHERE las relaciones entre las distintas tablas
que se involucren en la consulta, se producirá el efecto del producto cartesiano,
multiplicando los N registros de una tabla por los N registros de la otra tabla. Cuando se
incluyen dos o más tablas en la consulta, los campos de las tablas que relaciona a éstas,
se deben de incluir en la cláusula WHERE, igualando dichas columnas en dicha cláusula.
Si los nombres de los campos entre las diferentes tablas se llaman de igual manera, es
necesario que se identifique a que tabla le corresponde cada campo y anteponerle el
nombre de la tabla.