Escolar Documentos
Profissional Documentos
Cultura Documentos
Para construir un sitio web que muestre datos de una base de datos necesitaras lo
siguiente:
*
*
*
*
Para realizar estos ejemplos descarga e instala SQL SERVER EXPRESS haciendo
clic AQUI
Sintaxis de SQL
Tablas
Una base de datos contienen uno o mas tablas. Cada tabla esta identificada por un
nombre (ejemplo Clientes o Ordenes). Las tablas contienen registros (filas) con datos
Sentencias SQL
El punto y como es un estandar que se para cada sentencia SQL en sistemas de bases
de datos que habilitan mas de una sentencia SQL ejecutada en la misma llamada al
servidor
SQL DML Y DLL
SQL puede ser dividido en dos partes: El Lenguaje de Manipulacion de Datos (DML) y el
Lenguaje de Definicion de Datos (DDL)
DLL del SQL que permite a bases de datos y tablas ser creadas o borradas.
Tambien define indices(llaves). especifica enlaces entre tablas, y impone relaciones
entre tablas.
La parte DLL del SQL, las sentencias mas importante DDL en SQL son:
CREATE DATABASE - crea una nueva base de datos
ALTER DATABASE - modifica una base de datos
CREATE TABLE - crea una nueva tabla
ALTER TABLE - modifica una tabla
DROP TABLE - borra una tabla
CREATE INDEX - crea un indice (llave de busqueda)
DROP INDEX - borra un indice
La sentencia SELECT
La sentencia SELECT es usada para seleccionar datos de una base de datos.
Ejemplo 1
SELECT nombre_columna(s)
FROM nombre_tabla
SELECT Nombre,Apellidos,Ciudad
FROM Personas
Ejemplo 2
Dentro de una tabla, algunas columnas pueden contener valores duplicados. Esto no es
un problema, algunas veces tu querras listar solo los valores diferentes (distintos) en la
tabla
La palabra DISTINCT puede ser usada como llave para regresar solo los valores
distintos(diferentes).
Sintaxis SQL SELECT DISTINCT
SELECT DISTINCT nombre_columna(s)
FROM nombre_table
Ejemplo:
SELECT DISTINCT Apellidos
FROM Personas
Abajo esta el resultado de la sentencia DISTINCT a la tabla "Personas":
SQL WHERE
La sentencia where es usada para extraer solo los registros que cumplen con el criterio
especificad
La Sintaxis SQL WHERE
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna operador valor
Ejemplo de la sentecia WHERE
SELECT *
FROM Personas
WHERE Apellidos ='Trejo Lemus'
Para seleccionar solo las personas con el Nombre igual a Marcel Abisag y el apellido
igual a Sobrevilla Trejo,
Usaremos la siguiente sentencia SELECT:
SELECT * FROM Personas
WHERE Nombre='Marcel Abisag'
AND Apellidos='Sobrevilla Trejo'
El resultado seria:
Operador OR
Ahora seleccionaremos las personas con el campo Nombre igual a "Martha" o el campo
Nombre igual a "Elvira"
Usaremos la siguiente sentencia SELECT
SELECT * FROM Personas
WHERE Nombre='Martha Beatriz'
OR Nombre='Juana Elvira'
El resultado sera el siguiente:
SQL ORDER BY
The ORDER BY keyword is used to sort the result-set.
La sentencia ORDER BY es usada para ordenar un resultado ordenado por una columna
especifica
La sentencia ORDER BY es usada para ordenar los registros en orden ascendente por
default
Si quieres ordenar los registros en orden descendente utiliza la palabra DESC
Sintaxis SQL ORDER BY
SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_column(s) ASCDESC
Ahora vamos a seleccionar todas las personas de la tabla, pero mostrando en orden por
el campo Nombre
Usaremos la siguiente sentencia SELECT:
ORDER BY DESC
Ahora vamos a seleccionar a todas las personas de la tabla pero mostrandolas en un
orden descendente por el campo Nombre con la palabra DESC
We use the following SELECT statement:
SELECT * FROM Personas
ORDER BY Nombre DESC
El resultado sera el siguiente:
La segunda forma especifica los nombres de las columnas y los valores insertados
INSERT INTO nombre_tabla (columna1, columna2, columna3,...)
VALUES (valor1, valor2, valor3,...)
Ejemplo INSERT INTO
Dado que tenemos la siguiente tabla Personas:
Ahora vamos a borrar la persona "Marco Antonio Trejo Lemus" en la tabla Personas con
la siguiente sentencia:
DELETE FROM Personas
WHERE Nombre='Marco Antonio' AND Apellidos='Trejo Lemus'
SELECT * FROM Personas
El resultado sera el siguiente:
APENDICE 1
El siguiente codigo creara la base de datos en el servidor SQL EXPRESS
1.- Hacer clic en Inicio --> Todos los Programas --> Microsoft SQL SERVER 2008 --> SQL
Server Management Studio
2.- Hacer clic en el boton CONECTAR
3.- Hacer clic Nueva Consulta (se encuentra en el margen superior izquierdo)
USE master
if exists (select * from sysdatabases where name='empresa')
begin
raiserror('La base de datos existe; eliminndola....',0,1)
DROP database empresa
end
GO
raiserror('Creando base de datos empresa....',0,1)
go
CREATE DATABASE empresa
GO
USE empresa
GO
CREATE TABLE Personas(
P_id int PRIMARY KEY IDENTITY,
Nombre nchar(20) NOT NULL,
Apellidos nchar(30) NOT NULL,
Direccion nchar(40) NOT NULL,
Ciudad nchar(10) NOT NULL)
GO
GO
INSERT INTO Personas VALUES ('Marco Antonio','Trejo Lemus','Calle E
822','Tampico')INSERT INTO Personas VALUES ('Martha Beatriz','Trejo Lemus','Calle E
822','Tampico')INSERT INTO Personas VALUES ('Juana Elvira','Trejo Lemus','Calle E
822','Tampico')
INSERT INTO Personas VALUES ('Nora Zulma','Trejo Lemus','Calle E 822','Tampico')
INSERT INTO Personas VALUES ('Laura Lucero','Sobrevilla Trejo','Calle E
822','Tampico')INSERT INTO Personas VALUES ('Maria de la luz','Trejo Campos','Calle E
822','Tampico')INSERT INTO Personas VALUES ('Trinidad','Trejo Bautista','Calle E
822','Tampico')
INSERT INTO Personas VALUES ('Marcel Abisag','Sobrevilla Trejo','Calle E
822','Tampico')INSERT INTO Personas VALUES ('Jose Abraham','Sobrevilla Trejo','Calle E
822','Tampico')INSERT INTO Personas VALUES ('Samuel Salomon','Olmeda Trejo','Calle E
822','Tampico')
GO
select * from Personas
quit
______________________________________________________
5.- Ejecutar el codigo SQL haciendo clic sobre la opcion !Ejecutar que se muestra a
continuacion:
Ahora seleccionaremos solo los dos primeros registros de la tabla que se muestra
abajo:
columna
Sintaxis LIKE
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna LIKE patron
Ahora vamos a seleccionar las personas que viven en la ciudad que comienza con una
"T" de la tabla personas
Usaremos la siguiente sentencia SELECT:
SELECT * FROM Personas
WHERE Ciudad LIKE '%T'
El resultado seria el siguiente:
Ahora vamos a seleccionar las personas que viven en la ciudad que contiene el patron
"tam" de la tabla personas
Usaremos la siguiente sentencia SELECT:
SELECT * FROM Personas
WHERE Ciudad LIKE '%tam%'
El resultado seria el siguiente:
Tambien es posible seleccionar las personas que viven en la ciudad que no contienen el
patron "tamp" de la tabla personas, usando la palabra clave NOT
Usaremos la siguiente sentencia SELECT:
SELECT * FROM Personas
WHERE Ciudad NOT LIKE '%tamp%'
El resultado seria el siguiente:
Comodines SQL
Los comodines SQL pueden ser usados en la busqueda de datos en una base de datos
pueden sustituir a uno o mas caracteres cuando se busquen los datos
Los comodines deben usarse con el operador LIKE
Se pueden usar con SQL los siguientes comodines:
Usando el comodn %
Ahora seleccionaremos las personas que viven en la ciudad de Tampico que empiecen
con "Ta" de la tabla Personas
Ahora selectionaremos las personas que el primer nombre comience con algun caracter
seguido de "Ma" de la tabla Personas
Usaremos la siguiente sentencia SELECT:
SELECT * FROM Personas
WHERE Nombre LIKE '_ar'
Publicado por Marco Antonio Trejo Lemus en 22:07 23 comentarios:
Etiquetas: SQL Basico, SQL paso a paso, Tutorial SQL
Pgina principal
Prctica 1: SQL
Fecha: 6 Oct 2009
Conceptos: SQL (DDL y DML)
OBJETIVOS
El objetivo de esta prctica es aprender a utilizar el lenguaje para bases de datos SQL. Este
lenguaje es el ms ampliamente extendido entre los principales productos comerciales de
bases de datos. Proporciona la funcionalidades de los tipos de lenguajes vistos en teora:
SQL Plus
Oracle 10 incorpora una herramienta en modo texto para manejar la base de datos usando el
lenguaje SQL llamada SQL Plus. Para arrancar la consola de la herramienta desde los
ordenadores de Windows se debe ejecutar:
Start > Programs > Oracle 9 >
SQL * Plus
Para arrancar, la herramienta nos solicitar nuestros datos de conexin a la base de datos.
Para poder conectar necesitaremos conocer lo siguiente:
La base de datos de empresas que vimos en teora constaba de las siguientes tablas:
EMPLEADO, DEPARTAMENTO, LOCALIZACIONES_DEPT, PROYECTO, TRABAJA_EN y
DEPENDIENTE. Comenzaremos con un ejemplo de creacin de tabla. Escribid en la consola
de SQL Plus la siguiente definicin de tabla:
CREATE TABLE EMPLEADO (
NOMBRE VARCHAR(15) NOT NULL,
INC CHAR,
APELLIDO VARCHAR(15) NOT NULL,
NSS CHAR(9) NOT NULL,
FECHA_NCTO DATE,
DIRECCION VARCHAR(30),
SALARIO DECIMAL(10,2),
NSS_SUPERV CHAR(9),
ND INT);
Si todo ha ido bin, aparecer el mensaje:
Tabla creada.
SQL>
La tabla Empleado ha sido creada en el sistema y ya podramos introducir datos en ella.
Podemos consultar la descripcin de la tabla con el comando DESC. Comprueba que todo
cumple con lo descrito en la sentencia de CREATE TABLE anterior.
SQL> DESC EMPLEADO;
Ejercicios:
1. Borra la tabla Empleado (puedes hacerlo con el comando DROP TABLE ) y crea una
nueva tabla Empleado a la que adems de los campos de la tabla original se le haya
CARGA DE SCRIPTS
Tener que teclear las sentencias de manipulacin de la base de datos de forma interactiva
tiene como inconveniente que cualquier error invalida toda la sentencia, y tendramos que
volver a escribirla. Para evitar esto, a partir de ahora escribiremos en un fichero de texto las
sentencias SQL a utilizar para poder crear la base de datos.
NO ESTNDAR
SQL> START "creatablas.sql"
Verifica que se han creado todas las tablas. Para consultar las tablas que hay
actualmente definidas en el esquema escribe:
NO ESTNDAR
SQL> SELECT TABLE_NAME FROM USER_TABLES;
La relacin user_tables es una vista que mantiene informacin sobre todas las
tablas creadas por el usuario.
Ejercicio:
1. El comando anterior realiza una consulta que lista todos los campos table_name de
la tabla user_tables. Modifica la consulta para que devuelva un nico valor con el
nmero de tablas creado actualmente utilizando la funcin count().
Antes de definir las claves de las tablas vamos a insertar la informacin para no tener
problemas con las restricciones que imponen las claves sobre las tablas. La razn de esto es
que la definicin de las claves definen adems Restricciones de Integridad Referencial que
impondran problemas del estilo de "la pescadilla que se muerde la cola" ya que todas las
relaciones tienen claves externas, con lo que para poder insertar una tupla, se exige
previamente tener antes tuplas a las cuales se hace referencia (por esta razn, nunca
podramos aadir ninguna tupla a nuestras tablas). Tambin introduciremos el concepto de
Transaccin en SQL.
SQL> COMMIT;
Commit complete.
Una transaccin es un conjunto de sentencias en SQL que se ejecutan de
forma atmica; esto quiere decir, que se considera que la actualizacin que producen
todas las sentencias de una transaccin se realiza a la vez y sin ningn proceso
externo que interrumpa dicha actualizacin. En Oracle por defecto se considera una
misma transaccin todas las sentencias ejecutadas entre dos COMMIT. Puedes
volver al estado que posea la base de datos al finalizar la ltima transaccin
con ROLLBACK. Para comprobarlo:
o
Ejecuta:
SQL> ROLLBACK;
Por todo esto, cada vez que quieras dejar guardados los datos de forma definitiva,
debes ejecutar la sentencia COMMIT para finalizar la transaccin actual.
FORMATOS DE FECHA
Antes de insertar los datos del resto de tablas, vamos a definir las claves primarias y ajenas
para las tablas creadas anteriormente. Un recordatorio informal de lo visto en teora para
comprender las sentencias que aparecen a continuacin:
Ejecuta las siguientes sentencias para definir las claves en las tablas anteriormente
creadas:
Carga los siguientes datos. Ten en cuenta que algunas lneas poseen informacin
inconsistente con las restricciones impuestas por las claves anteriormente definidas.
Cul es el problema que se produce? A qu crees que es debido? Por el momento
inserta todos los datos menos la tupla que te haya dado problemas.
INTO
INTO
INTO
INTO
INTO
LOCALIZACIONES_DEPT
LOCALIZACIONES_DEPT
LOCALIZACIONES_DEPT
LOCALIZACIONES_DEPT
LOCALIZACIONES_DEPT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
PROYECTO
PROYECTO
PROYECTO
PROYECTO
PROYECTO
PROYECTO
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
VALUES(1,'Houston');
VALUES(4,'Stafford');
VALUES(5,'Bellaire');
VALUES(5,'Sugarland');
VALUES(5,'Houston');
VALUES('ProductoX',1,'Bellaire',5);
VALUES('ProductoY',2,'Sugarland',5);
VALUES('ProductoZ',3,'Houston',5);
VALUES('Automatizacin',10,'Stafford',4);
VALUES ('Reorganizacin',20,'Houston',1);
VALUES('Nuevos valores',30,'Stafford',4);
VALUES('123456789',1,32.5);
VALUES('123456789',2,7.5);
VALUES('666884444',3,40.0);
VALUES('453453453',1,20.0);
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
TRABAJA_EN
VALUES('453453453',2,20.0);
VALUES('333445555',2,10.0);
VALUES('333445555',3,10.0);
VALUES('333445555',10,10.0);
VALUES('333445555',20,10.0);
VALUES('999887777',30,30.0);
VALUES('999887777',10,10.0);
VALUES('987987987',10,35.0);
VALUES('987987987',30,5.0);
VALUES('987654321',30,20.0);
VALUES('987654321',20,15.0);
VALUES('888775555',20,null);
VALUES('333445555','Alice','M','05-APRVALUES('333445555','Theodore','H','25VALUES('333445555','Joy','M','03-MAYVALUES('987654321','Abner','H','28-FEBVALUES('123456789','Michael','H','04VALUES('123456789','Alice','M','30-DECVALUES('123456789','Elizabeth','M','05-
COMMIT
NO ESTNDAR
SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM
USER_CONSTRAINTS WHERE TABLE_NAME='EMPLEADO';
CONSTRAINT_NAME
-----------------------------SYS_C003685682
SYS_C003685683
SYS_C003685684
SYS_C003685699
C
C
C
C
P
Como podemos ver, ya hay unas restricciones definidas en la tabla Empleado. Estas
restricciones vigilan las imposiciones de NOT NULL en algunos atributos de la tabla
(tipo C) y la definicin de clave primaria (tipo P). Veremos que si definimos las claves
ajenas de la tabla, las restricciones definidas aumentan con las dos nuevas para
claves ajenas (tipo R). En Oracle, los tipos de restricciones vienen dados por un
carcter contenido en el atributo CONSTRAINT_TYPE; puedes ver los tipos
diferentes de restricciones que pueden estar definidos en CONSTRAINT_TYPE aqu.
SQL> ALTER TABLE EMPLEADO ADD FOREIGN KEY (NSS_SUPERV)
REFERENCES EMPLEADO(NSS);
Table altered.
SQL> ALTER TABLE EMPLEADO ADD FOREIGN KEY(ND) REFERENCES
DEPARTAMENTO(NUMEROD);
Table altered.
SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM
USER_CONSTRAINTS WHERE TABLE_NAME='EMPLEADO';
CONSTRAINT_NAME
-----------------------------SYS_C003685682
SYS_C003685683
SYS_C003685684
SYS_C003685703
SYS_C003685699
SYS_C003685718
C
C
C
C
R
P
R
EJERCICIOS DE CONSULTAS
NOMBRED
COUNT(*)
--------------- --------Administracin
3
Investigacin
4
Direccin
3
43. De cada departamento que tenga ms de DOS empleados (ya que no hay ninguno
de ms de 5 empleados), recupere el nmero de departamento y el nmero de
empleados que ganan ms de 40.000 dlares Resultado de la consulta:
44. NUMEROD COUNT(*)
45. -------- --------46.
4
1