4- Uso de sentencias para el envió y extracción de datos Objetivos: Identificar la sintaxis de las consultas de datos Elaborar sentencias de manejo de datos. Recursos: SQL SERVER 2012 Guías de práctica. Introducción: Las sentencias mas usadas para darle mantenimiento a las tablas son las sentencias SELECT, INSERT, DELETE y UPDATE, con las cuales podemos obtener datos, agregar, borrarlos y actualizarlos, además de aplicar condiciones y operadores para cada sentencia. SELECT Recupera cero o más filas de una o más tablas de una base de datos. En la mayoría de las aplicaciones, SELECT es de las sentencias más usadas para la manipulación de datos. La sentencia SELECT tiene muchas cláusulas opcionales: WHERE: Especifica una condición para la recuperación de datos. ORDER BY: especifica el orden en el que devolver las filas ya sea este ascendente o descendente. AS proporciona un alias que se puede utilizar para cambiar el nombre temporalmente tablas o columnas. Otras clausulas las veremos en las próximas guías. Sintaxis: SELECT [NombreColumna,NombreColuman,…] FROM [NombreTabla] SELECT [*] FROM [NombreTabla] SELECT [*] FROM [NombreTabla] WHERE | ORDER BY [Condición] INSERT INTO Agrega un registro nuevo al final de la tabla, es posible escribir la instrucción INSERT INTO en dos formas. La primera forma no especifica los nombres de las columnas en las que se insertan los datos, sólo sus valores: Sintaxis: INSERT INTO [NombreTabla] VALUES ([ValorColumna,ValorColumna,…]) La segunda forma específica tanto los nombres de columna y los valores que se van a insertar: INSERT INTO [NombreTabla] ([NombreColumna,NombreColumna,…]) VALUES ([ValorColumna,ValorColumna,…]) También es posible sólo para insertar datos en columnas específicas. Las instrucciones INSERT no especifican valores para los siguientes tipos de columnas porque SQL Server Database Engine (Motor de base de datos de SQL Server) genera los valores de las siguientes columnas: Columnas con una propiedad IDENTITY que genera los valores para la columna. Columnas que tengan un valor predeterminado que utilice la función NEWID para generar un valor GUID exclusivo. Columnas calculadas. UPDATE La instrucción UPDATE se utiliza para actualizar los registros existentes en una tabla. Sintaxis: UPDATE [NombreTabla] SET [NombreColumna=ValorColumna,NombreColumna=ValorColuman,...] WHERE [NombreColumna=ValorVariable] Advertencia La cláusula WHERE especifica qué registro o registros se deben actualizar. Si se omite la cláusula WHERE, todos los registros se actualizarán DELETE La sentencia DELETE se utiliza para eliminar registros de una tabla. Sintaxis: DELETE [NombreTabla] WHERE [NombreColumna=ValorVariable] Advertencia La cláusula WHERE especifica qué registros o registros que se deben eliminar. Si se omite la cláusula WHERE, se borrarán todos los registros INICIO DE LA PRÁCTICA Una forma de poder utilizar bien las sentencias es ayudándome de forma grafica, para lo tengo que expandir la base de datos, y sobre la tabla, click derecho y selecciono “Script Table as”, con lo cual me dará la opción de realizar varias sentencias. Ahora seleccionamos la opción “SELECT To” y tomo la opción “New Query Editor Window”. Esta opción genera la siguiente ayuda: De igual manera puedo usarlo para las demás sentencias. MODO CONSOLA. Lo primero que haremos es cargar el script que esta en el anexo 1, con esta base haremos los ejercicios. Primero realizaremos algunas sentencias INSERT para ver su uso y limitaciones: SELECT * FROM personas SELECT pais FROM pais SELECT nombre,apellido,sueldo FROM personas SELECT nombre,apellido FROM personas WHERE sexo = 'F' SELECT nombre,apellido,id_pais,sexo FROM personas WHERE sexo = 'F' AND id_pais = 1 SELECT nombre,apellido,id_pais,sexo FROM personas WHERE sexo = 'F' OR id_pais = 1 SELECT pais FROM pais SELECT nombre,apellido,id_pais,sexo FROM personas WHERE sexo = 'F' OR id_pais = 1 SELECT apellido,sueldo FROM personas WHERE sueldo > 500 SELECT nombre,apellido,sueldo FROM personas WHERE sueldo > 500 AND sueldo < 700 AND sexo='M' SELECT nombre AS NOMBRE, apellido AS APELLIDO, nacimiento AS CUMPLEAÑOS FROM personas SELECT apellido,nacimiento FROM personas ORDER BY nacimiento Ahora probaremos las sentencias INSERT: INSERT INTO personas (apellido,nombre,sueldo,direccion,celular,sexo,nacimiento,id_rol,id_pais) VALUES ('Molina Vasquez','Alejandro',897,'10 Avenida Sur y 12 Calle Poniente','45633423', 'M','1970/4/21',2,3) INSERT INTO personas VALUES ('Rivas Alba','Yesenia A',234,'4 Calle Oriten y parque Los Arboles','54534243','F' ,'1979/11/1',2,4) INSERT INTO personas (apellido,nombre,sueldo,id_rol,id_pais) VALUES ('Marquez','Roxana Elizabeth',434,4,1) Sigamos realizando pruebas con las sentencia UPDATE UPDATE personas SET nacimiento = '1985/11/2' WHERE id_persona = 14 UPDATE personas SET sexo = 'f' WHERE sexo = 'F' UPDATE personas SET celular = '' Por ultimo probaremos la sentencia DELETE DELETE personas WHERE sueldo < 500 DELETE personas WHERE id_persona = 5 DELETE personas WHERE sexo = 'M' Ejercicios: Investigue como ordenar una columna ascendente y descendente una consulta SELECT. Investigue el uso del comodín LIKE en las consultas SELECT. Realice un INSERT dejando vacía una columna No Null, y verifique que pasa. Elimine el primer registro de la tabla país y verifique el resultado. Realice pruebas con la base de datos NORTWIND Anexo 1. CREATE DATABASE SCRUM GO USE SCRUM GO CREATE TABLE roles ( id_rol int IDENTITY(1,1), rol varchar(20) not null, CONSTRAINT PK_roles PRIMARY KEY (id_rol) ) INSERT INSERT INSERT INSERT INTO INTO INTO INTO roles roles roles roles VALUES VALUES VALUES VALUES ('ScrumMaster') ('ProductOwner') ('Team') ('Steakholders') CREATE TABLE pais ( id_pais int IDENTITY(1,1), pais varchar(25), CONSTRAINT PK_pais PRIMARY KEY (id_pais) ) INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO pais pais pais pais pais pais pais VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('El Salvador') ('Guatemala') ('Costa Rica') ('Japon') ('Estados Unidos') ('Argentina') ('Mexico') CREATE TABLE personas ( id_persona int IDENTITY(1,1), apellido varchar(40) not null, nombre varchar(40) not null, sueldo smallmoney, direccion varchar(100), celular varchar(8), sexo varchar(1), nacimiento date, id_rol int not null, id_pais int not null, CONSTRAINT PK_persona PRIMARY KEY (id_persona), CONSTRAINT FK_rol FOREIGN KEY (id_rol) REFERENCES roles(id_rol), CONSTRAINT FK2_pais FOREIGN KEY (id_pais) REFERENCES pais(id_pais) ) INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas personas VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('Romero Peña','Sandra Y',1200,'','34567564','F','1972/3/3',3,1) ('Arevalo','Maria Johana',950,'','32356787','F','1976/2/16',3,3) ('Hernandez Mancia','Marielos',958,'','67567555','F','1986/7/4',3,4) ('Perez Juarez','Joaquin',850,'','34567564','M','1969/9/2',3,1) ('Solis Castro','Eduardo',600,'','12327523','M','1972/3/11',3,1) ('Ramos Nieto','Jorge',550,'','34567174','M','1972/10/4',4,1) ('Hernandez Carias','Johanna',1800,'','34234809','F','1952/3/4',1,1) ('Romero Peña','Manuel Alberto',0,'','34567342','M','1969/12/4',2,1) ('Garcia Alvarado','Roxana',1600,'','34345564','F','1970/4/4',1,1) ('Torres Castro','Alfredo',450,'','34565674','M','1980/2/9',3,5) ('Romero Peña','Verenice',400,'','34567589','F','1978/3/17',3,1) ('Martinez','Evelyn Roxana',340,'','34556764','F','1972/8/14',3,5) ('Siguenza','Eduardo',1120,'','21467564','M','1975/10/9',3,1) ('Alas Duran','Martin',1200,'','34562364','M','1972/3/4',3,1) ('Jerez M.','Jose Carlos',589,'','34563352','M','1972/3/6',4,1) ('Bolaños Cea','Sandra',244,'','67557564','F','1968/3/4',3,1) ('Cuestas D.','Jenny Maria',1089,'','34567564','F','1972/9/14',3,4) ('Romero Peña','Alexandra',1000,'','34565455','F','1972/7/24',3,1) ('Molina Nuñez','Mario',578,'','34567564','M','1962/3/7',3,3) ('Romero Peña','Jennifer',989,'','35657564','F','1977/10/21',3,3) ('Melendez A','Karla Maria',875,'','45656463','F','1956/12/1',4,1) ('Romero Peña','Andrea Lissette',0,'','34545343','F','1990/3/4',3,2) ('Melendez Torres','Wenceslado',270,'','34564563','M','1977/8/4',4,1) ('Vivas Rosales','Tere Maria',786,'','56345674','F','1964/2/7',3,1)