0 calificaciones0% encontró este documento útil (0 votos)
121 vistas
SQL LMD
Este documento presenta varias sintaxis y ejemplos de sentencias SQL para realizar operaciones de inserción, actualización, eliminación y selección de datos en tablas relacionales de una base de datos. Algunas de las instrucciones cubiertas incluyen INSERT para agregar filas, UPDATE para modificar datos, DELETE para eliminar registros y SELECT para recuperar información.
Descarga como PDF, TXT o lee en línea desde Scribd
0 calificaciones0% encontró este documento útil (0 votos)
121 vistas
SQL LMD
Este documento presenta varias sintaxis y ejemplos de sentencias SQL para realizar operaciones de inserción, actualización, eliminación y selección de datos en tablas relacionales de una base de datos. Algunas de las instrucciones cubiertas incluyen INSERT para agregar filas, UPDATE para modificar datos, DELETE para eliminar registros y SELECT para recuperar información.
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 55
Agregar una fila e insertar slo algunas de sus
columnas (tener cuidado con las que no aceptan
NULL). Sintaxis INSERT INTO NombreTabla (Col1, Col2, Col3...) VALUES (ValorCol1, ValorCol2, ValorCol3...); Ejemplo INSERT INTO Categories (CategoryID, CategoryName) VALUES (9, 'Dulcera'); Agregar varias filas en la misma sentencia INSERT. Ejemplo INSERT INTO Categories (CategoryID, CategoryName) VALUES (10, 'Juguetera'), (11, 'Panadera'); Puede omitirse el nombre de las columnas de la tabla si se ingresar valores para todas sus columnas. Sintaxis INSERT INTO NombreTabla VALUES (ValorCol1, ValorCol2, ValorCol3...); Ejemplo INSERT INTO Shippers VALUES (20 Estafeta', 4457891236'); Pueden ingresarse valores en una tabla a partir de la informacin que se devuelva de una consulta. Sintaxis INSERT INTO NombreTabla (Col1, Col2, Col3) SELECT Campo1, Campo2, Campo3 FROM NombreTablaFuente; Ejemplo INSERT INTO customers (customerid, companyname, contactname, contacttitle, address, city, region, postalcode, country, phone, fax) SELECT 'PAVLO', companyname, contactname, contacttitle, address, city, region, postalcode, country, phone, fax FROM suppliers WHERE SupplierID=7; Actualizacin en una tabla a partir de la informacin y columnas de la misma tabla. Sintaxis UPDATE NombreTablaAActualizar SET Col1=Valor1, Col2=Valor2... WHERE CondicinDeActualizacin; Ejemplo UPDATE Products SET unitprice=20 WHERE ProductID=1; PREREQUISITOS PARA EL SIGUIENTE EJEMPLO: Insertar 3 productos pertenecientes en la categora Dulcera. INSERT INTO products(productname, supplierid, categoryid, quantityperunit, unitprice, unitsinstock, unitsonorder, reorderlevel, discontinued) VALUES ('Kisses', 17, 10, '48 pieces', 50, 20, 0, 20, 0), ('Kinder', 17, 10, '1 pkg', 7, 100, 0, 50, 0), ('Sneakers', 17, 10, '1 pkg', 8, 120, 0, 600, 0); Actualizacin en una tabla a partir de la informacin y columnas de otra tabla. Sintaxis UPDATE NombreTablaAActualizar, TablaAdicional1, TablaAdicional2 SET Col1=Valor1, Col2=Valor2... WHERE CondicionDeUninTabla1 AND CondicionDeUninTabla2 AND CondicinDeActualizacin; Ejemplo UPDATE Products p, Categories c SET p.supplierID=22 WHERE p.categoryid=c.categoryid AND CategoryName = 'dulcera'; Eliminacin en una tabla a partir de la informacin y columnas de la misma tabla. Sintaxis DELETE FROM NombreTablaABorrar WHERE CondicinDeBorrado; Ejemplo DELETE FROM Products WHERE ProductID=80; Eliminacin en una tabla a partir de la informacin y columnas de otra tabla. Sintaxis DELETE NombreTablaABorrar FROM NombreTablaABorrar, NombreTablaAdicional WHERE CondicinDeUnion AND CondicinDeBorrado; Ejemplo DELETE p FROM Products p, Categories c WHERE c.CategoryID=p.CategoryID AND c.CategoryName = 'dulcera'; SELECT Especifica las columnas a mostrar en el resultado FROM Especifica la(s) tabla(s) a utilizar. WHERE Filtra renglones de acuerdo a la condicin especificada. ORDER BY Especifica como ordenar el resultado. LIMIT Especifica la cantidad de filas que se desean regresar. Obtener slo algunos atributos y todos los registros de una tabla, si se requieren todos los atributos se puede colocar un * SELECT A 1 , A 2 , , A n FROM r 1 Solicitud: Mostrar en qu ciudades hay clientes. Se repiten las ciudades Al usar DISTINCT No se repiten Obtener nombre de compaa y del contacto de los clientes que viven en London Solicitud: Obtener nombre de compaa y del contacto de los clientes cuya ciudad comienza con B Patrones con operador LIKE % Ignora los valores de cero o ms caracteres Obtener nombre de compaa y del contacto de los clientes cuya ciudad tenga como penultima letra una e %ignora ero o ms caracteres _ Ignora el valor de un carcter (sin importar que Tipo de carcter sea). (Obtener los alumnos de la generacin 2007 2008 sin Importar de que carrera son) NoControl LIKE _07% OR NoControl LIKE _08% Solicitud: Obtener los clientes cuya clave cumpla con lo siguiente: los dos primeros caracteres son letras, el tercero es un 1 o un 4 y los dos ltimos caracteres son nmeros. [ ] Permiten indicar rangos o valores vlidos. Por ejemplo del 0 al 9 o los valores 1 y 4, de la a a la z. ^ Permite indicar que inicia con. $ Permite indicar que termina con. {} Permite indicar cuantas coincidencias del patrn estn permitidas. . Representa un carcter cualquiera (tal como el _ en el LIKE). SELECT * FROM Customers WHERE customerid REGEXP ^[a- z]{2}[14]{1}[0-9]{2}$ Si no colocamos los smbolos ^ y $, va a buscar coincidencias dentro de la cadena, es decir no coincide exactamente con la cadena. Alumnos cuyo nm. de control inicia con un identificador de carrera vlido: SELECT * FROM Alumnos WHERE NoControl REGEXP ^[sidega] Alumnos de la generacin 2007 2008 sin importar la carrera: SELECT * FROM Alumnos WHERE NoControl REGEXP ^.0[78] Obtener todos los alumnos que tienen un nmero de control vlido: SELECT * FROM Alumnos WHERE NoControl REGEXP '^[sidega]{1}[0-9]{2}12[0-9]{4}$' Solicitud: Obtener nombre de compaa y del contacto de los clientes cuya ciudad sea London o Buenos Aires Solicitud: Obtener nombre de compaa y del contacto de los clientes cuya ciudad sea London y que la persona contacto sea un Agente de ventas (Sales Agent) Solicitud: Obtener nombre de compaa, nombre y titulo del contacto de los clientes cuya persona contacto sea un agente de ventas (Sales Agent) o un representante de ventas (Sales Representative) o un asociado de ventas (Sales Associate) Solicitud: Obtener nombre de compaa, nombre y titulo del contacto de los clientes cuya persona contacto NO sea un agente de ventas (Sales Agent) o un representante de ventas (Sales Representative) o un asociado de ventas (Sales Associate) Solicitud: Obtener Id del cliente, nombre de la compaa y la Region para aquellos clientes cuya Region sea NULL Null Indica que al atributo no se le asign un valor o se le asign NULL Solicitud: Obtener Id del cliente, nombre de la compaa y la Region para aquellos clientes cuya Region tenga un valor asignado Solicitud: Obtener el nombre del producto y su precio unitario ordenando del producto ms barato al ms caro. El default es ordenar de menor a mayor, aunque puede colocarse la clusula ASC. Obtener el nombre del producto y su precio unitario ordenando del producto ms caro al ms barato. Usar la clusula DESC Obtener el primer empleado que aparezca en la lista ordenado alfabticamente. El tener un nmero de categora no indica nada, es mejor poner el nombre de la categora como en el resultado siguiente: Pero, como se escribe el query? Con un JOIN o INNER JOIN entre la llave fornea FK CategoryID y la llave Primaria CategoryID de la tabla Categories. NoControl Nombre ApePaterno ApeMaterno Alumnos. IdCarrera Carreras. IdCarrera Carrera I08120105 JESUS AVILA REYNOSO 1 1 Lic. En Informtica I07120110 RAFAEL BAEZA ESPINOZA 1 1 Lic. En Informtica D06120032 SAHRA CHAVEZ LOPEZ 3 3 Ing. Industrial S03120010 MARIA VIEYRA BAEZA 2 2 Ing. En Sistemas D06120018 GLORIA DAVALOS MARTINEZ 3 3 Ing. Industrial
NoControl Nombre ApePaterno ApeMaterno IdCarrera I08120105 JESUS AVILA REYNOSO 1 I07120110 RAFAEL BAEZA ESPINOZA 1 D06120032 SAHRA CHAVEZ LOPEZ 3 S03120010 MARIA VIEYRA BAEZA 2 D06120018 GLORIA DAVALOS MARTINEZ 3
IdCarrera Carrera 1 Lic. En Informtica 2 Ing. En Sistemas 3 Ing. Industrial
Combinar o juntar las tablas para poder acceder al nombre de la carrera Se estn uniendo las tablas a travs de la coincidencia de las llaves primaria y fornea respectivamente. NoControl Nombre ApePaterno ApeMaterno IdCarrera I08120105 JESUS AVILA REYNOSO 1 I07120110 RAFAEL BAEZA ESPINOZA 1 D06120032 SAHRA CHAVEZ LOPEZ 3 S03120010 MARIA VIEYRA BAEZA 2 D06120018 GLORIA DAVALOS MARTINEZ 3
IdCarrera Carrera 1 Lic. En Informtica 2 Ing. En Sistemas 3 Ing. Industrial
Combinar o juntar las tablas para poder acceder al nombre de la carrera No se estn uniendo las tablas a travs de la coincidencia de las llaves primaria y fornea respectivamente, por lo que nos resulta informacin no veraz. Un alumno slo debe estar en una carrera. NoControl Nombre ApePaterno ApeMaterno Alumnos. IdCarrera Carreras. IdCarrera Carrera I08120105 JESUS AVILA REYNOSO 1 1 Lic. En Informtica I08120105 JESUS AVILA REYNOSO 1 2 Ing. En Sistemas I08120105 JESUS AVILA REYNOSO 1 3 Ing. Industrial I07120110 RAFAEL BAEZA ESPINOZA 1 1 Lic. En Informtica I07120110 RAFAEL BAEZA ESPINOZA 1 2 Ing. En Sistemas I07120110 RAFAEL BAEZA ESPINOZA 1 3 Ing. Industrial D06120032 SAHRA CHAVEZ LOPEZ 3 1 Lic. En Informtica D06120032 SAHRA CHAVEZ LOPEZ 3 2 Ing. En Sistemas D06120032 SAHRA CHAVEZ LOPEZ 3 3 Ing. Industrial S03120010 MARIA VIEYRA BAEZA 2 1 Lic. En Informtica S03120010 MARIA VIEYRA BAEZA 2 2 Ing. En Sistemas S03120010 MARIA VIEYRA BAEZA 2 3 Ing. Industrial D06120018 GLORIA DAVALOS MARTINEZ 3 1 Lic. En Informtica D06120018 GLORIA DAVALOS MARTINEZ 3 2 Ing. En Sistemas D06120018 GLORIA DAVALOS MARTINEZ 3 3 Ing. Industrial Solamente las filas marcadas son correctas El nombre de la categora est en la tabla Categories y nuestra consulta utiliza la tabla de Products Poner en el query las 2 tablas y especificar una condicin donde la FK=PK SELECT Campo1, Campo2, Campo3, Campo 4 FROM Tabla1, Tabla2, Tabla2 WHERE CondicinDeUnin1 AND CondicinDeUnin2 La desventaja de esta opcin es que en la clusula WHERE se comienzan a mezclar condiciones de unin con condiciones de filtrado de filas Nombre del producto, Id de categora y Nombre de la categora FK PK SELECT Campo1, Campo2, Campo3, Campo4 FROM Tabla1 JOIN Tabla2 ON CondicinDeUninConLaTablaAnterior JOIN Tabla3 ON CondicinDeUninConAlgunaTablaAnterior En esta opcin la consulta est mejor estructurada, ya que en el WHERE solo se colocaran condiciones de filtrado de filas como por ejemplo mostrar solo los productos de las categoras Beverages y Seafood. Nombre del producto, Id de categora y Nombre de la categora FK PK Obtener todos los pases donde hay un cliente o un proveedor NOTAS: Ambas consultas deben tener el mismo nmero de columnas (con el mismo tipo de datos). La operacin unin elimina duplicados. SELECT Especifica las columnas a mostrar en el resultado FROM Especifica la(s) tabla(s) a utilizar. WHERE Filtra renglones de acuerdo a la condicin especificada. GROUP BY Forma grupos de renglones con el mismo valor en la columna o columnas especificadas aqu. HAVING Filtra grupos de acuerdo a la condicin especificada (como el WHERE pero para los grupos). ORDER BY Especifica como ordenar el resultado. LIMIT Especifica la cantidad de filas que se desean regresar. Las siguientes funciones aplican a valores numricos y no numricos: COUNT (columna) Regresa cuantos valores (diferentes de NULL) existen en la columna especificada. COUNT(*) Regresa el nmero de registros en la tabla especificada MIN (columna) Regresa el mnimo de los contenidos de la columna especificada. Primero elimina NULLs MAX (columna) Regresa el mximo de los contenidos de la columna especificada. Primero elimina NULLs Las siguientes funciones aplican SOLO a valores numricos : SUM (columna) Regresa la suma de los contenidos de la columna especificada. Primero elimina NULLs AVG (columna) Regresa el promedio de los contenidos de la columna especificada. Primero elimina NULLs NOTA: En algunos DBMSs, si existe un NULL puede marcar un error de ejecucin La tabla de Clientes tiene 91 registros, de los cuales 60 de ellos en su columna Region deberan tener NULL en lugar de una cadena vaca(), por lo que antes de colocar el ejemplo debemos reemplazar la cadena vaca por el valor NULL. Ejecutando la siguiente instruccin: UPDATE customers SET region = NULL WHERE region =''; La tabla de Clientes tiene 91 registros Los primeros 2 ejemplos cuentan el nmero de registros que tienen un valor diferente de NULL en el atributo region. El Ejemplo 3, cuenta los registros que tienen valores NULL en region count(atributo) elimina atributos NULL, count(*) no elimina region con NULL Usar DISTINCT para eliminar regiones que se repiten. Comparar los resultados obtenidos con cada query Obtener el costo del producto mas barato Obtener el costo del producto ms caro Obtener el precio promedio de todos los productos Obtener el nmero total de unidades en inventario de todos los productos Varias funciones en el estatuto Select IMPORTANTE Las funciones COUNT, MIN, MAX, SUM, AVG slo pueden usarse en SELECT HAVING (La cual es como un WHERE para las funciones de agregado) En el resultado puede verse que tengo varios productos de la misma categora. Si quisiera saber cuantos productos tengo de cada categora como podra hacerle? Podra agrupar y contar todos los registros que tienen el mismo valor en CategoryID Por ejemplo, tengo 12 productos de categora 1 GROUP BY CategoryID Agrupa todos los registros que tienen el mismo valor en el atributo especificado (CategoryID) Se utiliza con otra funcin, por ejemplo COUNT para saber cuantos registros fueron agrupados SELECT CategoryID, count(CategoryID) FROM Products GROUP BY CategoryID ID 1 12 prod. IMPORTANTE La clusula GROUP BY debe incluir todas aquellas columnas que se hayan indicado en el SELECT, para las cuales no se haya aplicado una de las funciones COUNT, MIN, MAX, SUM o AVG . Ejemplo: Obtener todas las rdenes realizadas en enero de 1998 con el Id de la orden, Fecha, Monto de la Orden y Num de productos incluidos. Se obtiene el nmero de productos que existen de cada categora Nmero de productos existentes de cada categora nmero de productos existentes de cada categora para los que el nmero de productos sea menor a 10 Se utilizan alias para las tablas