{"id":687,"date":"2011-07-19T10:18:56","date_gmt":"2011-07-19T08:18:56","guid":{"rendered":"http:\/\/guimi.net\/blogs\/hiparco\/?page_id=687"},"modified":"2015-02-22T22:54:42","modified_gmt":"2015-02-22T20:54:42","slug":"sql","status":"publish","type":"page","link":"http:\/\/guimi.net\/blogs\/hiparco\/tutoriales\/sql\/","title":{"rendered":"SQL"},"content":{"rendered":"<h1>Introducci\u00f3n a SQL (SQL-92)<\/h1>\n<h2>Introducci&oacute;n<\/h2>\n<p>SQL (<em>Structured Query Language<\/em> \/ Lenguaje de Consulta Estructurado) es un lenguaje declarativo de acceso a bases de datos relacionales que implementa un DML (<em>Data Manipulation Language<\/em> \/ Lenguaje de Manipulaci&oacute;n de Datos) y un DDL (<em>Data Definition Language<\/em> \/ Lenguaje de definici&oacute;n de datos).<\/p>\n<p>Algunas de sus caracter&iacute;sticas son el manejo del &aacute;lgebra y el c&aacute;lculo relacional. En la actualidad SQL es el est&aacute;ndar de facto de la inmensa mayor&iacute;a de los SGBD comerciales.<\/p>\n<p>ANSI lo estandariz&oacute; en 1986 (SQL-86 o SQL1) y lo adopt&oacute; ISO al a&ntilde;o siguiente. En 1992 se lanza un nuevo est&aacute;ndar ampliado y revisado del SQL llamado SQL-92 o SQL2. Ha habido modificaciones posteriores al est&aacute;ndar (la &uacute;ltima es del 2006) que recogen los disparadores (triggers), el uso conjunto con XML, las columnas autonum&eacute;ricas&#8230; Adem&aacute;s cada implementaci&oacute;n comercial incluye modificaciones particulares. Sin embargo el soporte al est&aacute;ndar SQL-92 es general y muy amplio.<\/p>\n<h2>DML (<em>Data Manipulation Language<\/em> \/ Lenguaje de Manipulaci&oacute;n de Datos)<\/h2>\n<h3>CONSULTAS B\u00c1SICAS<\/h3>\n<p><PRE><br \/>\n<span class=\"remarcado\">SELECT<\/span> [<span class=\"remarcado\">TOP<\/span> X [<span class=\"remarcado\">PERCENT<\/span>]] [<span class=\"remarcado\">DISTINCT<\/span> | <span class=\"remarcado\">DISTINCTROW<\/span> | <span class=\"remarcado\">ALL<\/span>] columna <span class=\"remarcado\">AS<\/span> renombrado<br \/>\n  <span class=\"remarcado\">FROM<\/span> tablas<br \/>\n  [<span class=\"remarcado\">WHERE<\/span> condiciones_sobre_registros]<br \/>\n  [<span class=\"remarcado\">ORDER BY<\/span> columnaN [<span class=\"remarcado\">DESC<\/span> | <span class=\"remarcado\">ASC<\/span>]]<\/p>\n<p><\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT DISTINCT<\/span> color <span class=\"remarcado\">AS<\/span> colores<br \/>\n  <span class=\"remarcado\">FROM<\/span> piezas<br \/>\n  <span class=\"remarcado\">WHERE<\/span> (codigo > 10000)<br \/>\n    <span class=\"remarcado\">AND<\/span> (color <span class=\"remarcado\">LIKE<\/span> &#8216;A%&#8217;)<br \/>\n  <span class=\"remarcado\">ORDER BY<\/span> color;<\/p>\n<p><font class=\"comentario\">&#8212; Muestra como &#8216;colores&#8217; los distintos colores<br \/>\n&#8212; de las piezas con c&oacute;digo >10000 que empiezan por A, ordenados<br \/>\n&#8212; alfab&eacute;ticamente.<\/font><br \/>\n<\/PRE><\/p>\n<h3>CONSULTAS DE DATOS AGREGADOS<\/h3>\n<p><PRE><br \/>\n<span class=\"remarcado\">SELECT<\/span> XXX(columna1) [, columna2&#8230;]<br \/>\n  <span class=\"remarcado\">FROM<\/span> tablas<br \/>\n  [<span class=\"remarcado\">WHERE<\/span> condiciones_sobre_registros]<br \/>\n  [<span class=\"remarcado\">GROUP BY<\/span> columna2]<br \/>\n  [<span class=\"remarcado\">HAVING<\/span> condiciones_sobre_agrupaciones]<br \/>\n  [<span class=\"remarcado\">ORDER BY<\/span> columnaN [<span class=\"remarcado\">DESC<\/span> | <span class=\"remarcado\">ASC<\/span>]]<\/p>\n<p>XXX: <span class=\"remarcado\">Count<\/span>, <span class=\"remarcado\">Avg<\/span>, <span class=\"remarcado\">Max<\/span>, <span class=\"remarcado\">Min<\/span>, <span class=\"remarcado\">Sum<\/span>&#8230;<\/p>\n<p><\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> tipo, <span class=\"remarcado\">Avg<\/span>(precio) <span class=\"remarcado\">AS<\/span> Precio_Medio<br \/>\n  <span class=\"remarcado\">FROM<\/span> piezas<br \/>\n  <span class=\"remarcado\">WHERE<\/span> precio <> 0<br \/>\n  <span class=\"remarcado\">GROUP BY<\/span> tipo<br \/>\n  <span class=\"remarcado\">HAVING<\/span> Precio_Medio > 10;<\/p>\n<p><span class=\"comentario\">&#8212; Muestra para cada tipo el precio medio, tomando para calcular<br \/>\n&#8212; la media los registros con precio y mostrando solo aquellos<br \/>\n&#8212; tipos cuyo precio medio es > 10<\/span><br \/>\n<\/PRE><\/p>\n<pre>| a | b |\r\n+---+---+\r\n| 2 | - |  <span class=\"remarcado\">Sum<\/span>(a + b)      = 8\r\n| 3 | 5 |  <span class=\"remarcado\">Sum<\/span>(a) + <span class=\"remarcado\">Sum<\/span>(b) = 10\r\n+---+---+\r\n<\/pre>\n<h3>CONDICIONES<\/h3>\n<pre>expresion1 (< | >= | = | <= | < | <>) expresion2\r\nespresion <span class=\"remarcado\">IS<\/span> [<span class=\"remarcado\">NOT<\/span>] <span class=\"remarcado\">NULL<\/span>\r\nexpresion <span class=\"remarcado\">BETWEEN<\/span> x <span class=\"remarcado\">AND<\/span> y\r\nexpresion <span class=\"remarcado\">LIKE<\/span> '%#_%' [<span class=\"remarcado\">ESCAPE<\/span> '#']\r\nexpresion <span class=\"remarcado\">IN<\/span> (x, y, z)\r\nsubconsulta\r\n\r\ncondicion1 (<span class=\"remarcado\">AND<\/span> | <span class=\"remarcado\">OR<\/span>) condicion2\r\n\r\n<\/PRE>\r\n\r\n<h3>TABLAS<\/h3>\r\n<pre>tabla1 [<span class=\"remarcado\">INNER<\/span> | <span class=\"remarcado\">LEFT<\/span> | <span class=\"remarcado\">RIGHT<\/span>] <span class=\"remarcado\">JOIN<\/span> tabla2\r\n  <span class=\"remarcado\">ON<\/span> tabla1.columnaN = tabla2.columnaM<\/pre>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> P.numero, P.fecha, C.nombre<br \/>\n  <span class=\"remarcado\">FROM<\/span> pedidos P <span class=\"remarcado\">INNER JOIN<\/span> clientes C<br \/>\n    <span class=\"remarcado\">ON<\/span> P.cliente = C.codigo;<\/p>\n<p><span class=\"comentario\">-- Muestra numero y fecha de pedido y nombre del cliente<br \/>\n-- que ha realizado el pedido<br \/>\n--<br \/>\n-- es equivalente a<\/span><\/p>\n<p><span class=\"remarcado\">SELECT<\/span> P.numero, P.fecha, C.nombre<br \/>\n  <span class=\"remarcado\">FROM<\/span> pedidos P, clientes C<br \/>\n    <span class=\"remarcado\">ON<\/span> P.cliente = C.codigo;<br \/>\n<\/PRE><\/p>\n<h3>OPERADORES CONJUNTISTAS<\/h3>\n<pre>consulta1 [<span class=\"remarcado\">UNION<\/span> [<span class=\"remarcado\">DISTINCT<\/span>] | <span class=\"remarcado\">EXCEPT<\/span> | <span class=\"remarcado\">INTERSEC<\/span>] consulta2\r\n(consulta1 y consulta2 son compatibles)<\/pre>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> pais<br \/>\n  <span class=\"remarcado\">FROM<\/span> clientes<br \/>\n<span class=\"remarcado\">UNION<\/span><br \/>\n<span class=\"remarcado\">SELECT<\/span> pais<br \/>\n  <span class=\"remarcado\">FROM<\/span> proveedores;<\/p>\n<p><span class=\"comentario\">-- Muestra una lista de paises de clientes y proveedores<\/span><\/p>\n<p><\/PRE><\/p>\n<h3>SUBCONSULTAS<\/h3>\n<p><PRE><br \/>\ncomparacion [<span class=\"remarcado\">ALL<\/span> | <span class=\"remarcado\">ANY<\/span> | <span class=\"remarcado\">SOME<\/span>] consulta<br \/>\nexpresion [<span class=\"remarcado\">NOT<\/span>] <span class=\"remarcado\">IN<\/span> consulta<br \/>\n[<span class=\"remarcado\">NOT<\/span>] <span class=\"remarcado\">EXISTS<\/span> consulta<br \/>\n[<span class=\"remarcado\">NOT<\/span>] <span class=\"remarcado\">UNIQUE<\/span> consulta<\/p>\n<p>(<span class=\"remarcado\">ANY<\/span> y <span class=\"remarcado\">SOME<\/span> son equivalentes)<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> dni, nombre<br \/>\n  <span class=\"remarcado\">FROM<\/span> empleados<br \/>\n  <span class=\"remarcado\">WHERE<\/span> salario >=<br \/>\n    (<span class=\"remarcado\">SELECT Avg<\/span>(salario)<br \/>\n       <span class=\"remarcado\">FROM<\/span> empleados);<\/p>\n<p><span class=\"comentario\">-- Muestra dni y nombre de los empleados que cobran<br \/>\n-- m&aacute;s que la media<\/span><\/p>\n<p><\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> dni, nombre<br \/>\n  <span class=\"remarcado\">FROM<\/span> empleados<br \/>\n  <span class=\"remarcado\">WHERE<\/span> salario > <span class=\"remarcado\">ALL<\/span><br \/>\n    (<span class=\"remarcado\">SELECT<\/span> salario<br \/>\n       <span class=\"remarcado\">FROM<\/span> empleados<br \/>\n       <span class=\"remarcado\">WHERE<\/span> nivel=1);<\/p>\n<p><span class=\"comentario\">-- Muestra dni y nombre de los empleados que cobran<br \/>\n-- m&aacute;s que todos los empleados de nivel 1 (individualmente)<\/span><br \/>\n<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> dni, nombre<br \/>\n  <span class=\"remarcado\">FROM<\/span> comerciales<br \/>\n  <span class=\"remarcado\">WHERE<\/span> ciudad <span class=\"remarcado\">IN<\/span><\/p>\n<p>    (<span class=\"remarcado\">SELECT DISTINCT<\/span> ciudad<br \/>\n       <span class=\"remarcado\">FROM<\/span> clientes);<\/p>\n<p><span class=\"comentario\">-- Muestra dni y nombre de los comerciales que residen en<br \/>\n-- la misma ciudad que alg&uacute;n cliente<\/span><br \/>\n<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> codigo, descripcion<br \/>\n  <span class=\"remarcado\">FROM<\/span> piezas P<br \/>\n  <span class=\"remarcado\">WHERE NOT EXISTS<\/span><\/p>\n<p>    (<span class=\"remarcado\">SELECT<\/span> precio<br \/>\n       <span class=\"remarcado\">FROM<\/span> ofertas O<br \/>\n       <span class=\"remarcado\">WHERE<\/span> P.codigo = O.pieza)<br \/>\n    <span class=\"remarcado\">AND<\/span> codigo > 100;<\/p>\n<p><span class=\"comentario\">-- Muestra codigo y descripcion de las piezas con codigo > 100<br \/>\n-- para las que no existe ninguna oferta<\/span><br \/>\n<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">SELECT<\/span> codigo, descripcion<br \/>\n  <span class=\"remarcado\">FROM<\/span> piezas P<br \/>\n  <span class=\"remarcado\">WHERE UNIQUE<\/span><br \/>\n    (<span class=\"remarcado\">SELECT<\/span> precio<br \/>\n       <span class=\"remarcado\">FROM<\/span> ofertas O<br \/>\n       <span class=\"remarcado\">WHERE<\/span> P.codigo = O.pieza);<\/p>\n<p><span class=\"comentario\">-- Muestra codigo y descripcion de las piezas<br \/>\n-- para las que existe una &uacute;nica oferta<\/span><br \/>\n<\/PRE><\/p>\n<h3>MODIFICACIONES<\/h3>\n<p><PRE><span class=\"remarcado\">INSERT INTO<\/span> tabla [columnas]<br \/>\n  <span class=\"remarcado\">VALUES<\/span> (valores)<\/p>\n<p><span class=\"remarcado\">INSERT INTO<\/span> tabla [columnas]<br \/>\n  consulta<\/p>\n<p><span class=\"remarcado\">TRUNCATE TABLE<\/span> tabla1 [, tabla2...]<\/p>\n<p><span class=\"remarcado\">DELETE FROM<\/span> tabla<br \/>\n  [<span class=\"remarcado\">WHERE<\/span> condiciones]<br \/>\n<span class=\"comentario\">-- Si se va a hacer un borrado incondicional<br \/>\n-- es m&aacute;s &oacute;ptimo usar<br \/>\n<span class=\"remarcado\">TRUNCATE<\/span><\/span><\/p>\n<p><span class=\"remarcado\">UPDATE<\/span> tabla1 [,tabla2...]<br \/>\n  <span class=\"remarcado\">SET<\/span> columnaN = valorN<br \/>\n      [, columnaM = valorM ]<br \/>\n  <span class=\"remarcado\">WHERE<\/span> condiciones_sobre_registros<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">UPDATE<\/span> articulos A, nuevos_precios N<br \/>\n  <span class=\"remarcado\">SET<\/span> A.precio = N.precio<br \/>\n  <span class=\"remarcado\">WHERE<\/span> A.codigo = N.codigo<\/p>\n<p><font class=\"comentario\">-- Actualiza la tabla de art\u00edculos con nuevos precios de otra tabla.<\/font><br \/>\n<\/PRE><\/p>\n<h3>TRANSACCIONES<\/h3>\n<p><PRE class=\"remarcado\">COMMIT<br \/>\nROLLBACK<\/PRE><\/p>\n<h2>DDL (<em>Data Definition Language<\/em> \/ Lenguaje de definici&oacute;n de datos)<\/h2>\n<p><PRE><span class=\"remarcado\">CREATE SCHEMA<\/span> [<span class=\"remarcado\">IF NOT EXISTS<\/span>] [catalogo.]esquema<br \/>\n  [<span class=\"remarcado\">AUTHORIZATION<\/span> usuario]<br \/>\n  elementos<\/p>\n<p><span class=\"remarcado\">SET SCHEMA<\/span> esquema<\/p>\n<p><span class=\"remarcado\">DROP SCHEMA<\/span> [<span class=\"remarcado\">IF EXISTS<\/span>] esquema<\/p>\n<p><span class=\"remarcado\">CREATE DOMAIN<\/span> [<span class=\"remarcado\">IF NOT EXISTS<\/span>] dominio [<span class=\"remarcado\">AS<\/span>] tipo_dato<br \/>\n  [<span class=\"remarcado\">DEFAULT<\/span> valor]<br \/>\n  [restricciones]<\/p>\n<p><\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">CREATE DOMAIN<\/span> d_alta <span class=\"remarcado\">AS<\/span> date<br \/>\n  <span class=\"remarcado\">DEFAULT<\/span> current_time;<br \/>\n<\/PRE><\/p>\n<p><PRE><br \/>\n<span class=\"remarcado\">ALTER DOMAIN<\/span> dominio<br \/>\n  { <span class=\"remarcado\">SET DEFAULT<\/span> valor |<br \/>\n    <span class=\"remarcado\">DROP DEFAULT<\/span> |<br \/>\n    <span class=\"remarcado\">ADD<\/span> restriccion |<br \/>\n    <span class=\"remarcado\">DROP CONSTRAINT<\/span> restriccion }<\/p>\n<p><span class=\"remarcado\">DROP DOMAIN<\/span> [<span class=\"remarcado\">IF EXISTS<\/span>] dominio [<span class=\"remarcado\">RESTRICT<\/span> | <span class=\"remarcado\">CASCADE<\/span>]<\/p>\n<p><span class=\"remarcado\">CREATE TABLE<\/span> [<span class=\"remarcado\">IF NOT EXISTS<\/span>] tabla<br \/>\n  columna1<br \/>\n    [<span class=\"remarcado\">DEFAULT<\/span> valor]<br \/>\n    [restriccion_de_columna]<br \/>\n...<br \/>\n[restriccion_de_tabla]<\/p>\n<p><span class=\"remarcado\">CREATE TABLE<\/span> tabla <span class=\"remarcado\">AS<\/span> consulta<br \/>\n<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">CREATE TABLE<\/span> Copia <span class=\"remarcado\">AS<\/span> (<br \/>\n  <span class=\"remarcado\">SELECT<\/span> *<br \/>\n    <span class=\"remarcado\">FROM<\/span> Tabla_a_Copiar<br \/>\n);<\/p>\n<p><span class=\"comentario\">-- Se puede crear una tabla con el resultado de una consulta<\/span><br \/>\n<\/PRE><\/p>\n<p><PRE><br \/>\n[<span class=\"remarcado\">CONSTRAINT<\/span> nombre_restriccion] <span class=\"comentario\">-- No es obligatorio pero s&iacute; recomendable poner nombre<\/span><br \/>\n  <span class=\"remarcado\">PRIMARY KEY<\/span> (columnas) |<br \/>\n  <span class=\"remarcado\">FOREIGN KEY<\/span> (columnas) <span class=\"remarcado\">REFERENCES<\/span> tabla_ref [columnas]<br \/>\n    [<span class=\"remarcado\">ON UPDATE<\/span> {<span class=\"remarcado\">NO ACTION<\/span> | <span class=\"remarcado\">SET NULL<\/span> | <span class=\"remarcado\">SET DEFAULT<\/span> | <span class=\"remarcado\">CASCADE<\/span>} ]<br \/>\n    [<span class=\"remarcado\">ON DELETE<\/span> {<span class=\"remarcado\">NO ACTION<\/span> | <span class=\"remarcado\">SET NULL<\/span> | <span class=\"remarcado\">SET DEFAULT<\/span> | <span class=\"remarcado\">CASCADE<\/span>} ]<br \/>\n  <span class=\"remarcado\">UNIQUE<\/span> (columnas) | <span class=\"comentario\">-- Lo valores NULL NO se consideran valores iguales<\/span><\/p>\n<p>  <span class=\"remarcado\">CHECK<\/span> (expresion)<br \/>\n  [<span class=\"remarcado\">INITIALLY DEFERRED<\/span> | <span class=\"remarcado\">INITIALLY IMMEDIATE<\/span>]<br \/>\n  [<span class=\"remarcado\">NOT DEFERRABLE<\/span> | <span class=\"remarcado\">DEFERRABLE<\/span>]<br \/>\n<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">CREATE TABLE<\/span> alumnos (<br \/>\n  codigo d_dni <span class=\"remarcado\">CONSTRAINT<\/span> alumno_cp <span class=\"remarcado\">PRIMARY KEY<\/span><br \/>\n  nombre VARCHAR(100) <span class=\"remarcado\">NOT NULL<\/span>,<br \/>\n  edad INTEGER<br \/>\n    <span class=\"remarcado\">CONSTRAINT CHECK<\/span> (<span class=\"remarcado\">VALUE<\/span>>0 AND <span class=\"remarcado\">VALUE<\/span> <120),\n  universidad VARCHAR(3) <span class=\"remarcado\">NOT NULL<\/span><\/p>\n<p>    <span class=\"remarcado\">CONSTRAINT<\/span> alumno_ca_univ <span class=\"remarcado\">REFERENCES<\/span> universidad<br \/>\n      <span class=\"remarcado\">ON UPDATE CASCADE<\/span>,<br \/>\n  sexo CHAR(1)<\/p>\n<p>  <span class=\"remarcado\">CONSTRAINT<\/span> sexo_ck <span class=\"remarcado\">CHECK<\/span> (sexo <span class=\"remarcado\">IN<\/span> ('O', 'A'))<br \/>\n);<\/p>\n<p><\/PRE><\/p>\n<p><PRE><span class=\"remarcado\">ALTER TABLE<\/span> tabla <span class=\"remarcado\">ADD<\/span> [<span class=\"remarcado\">COLUMN<\/span>] definicion_de_columna | definicion_de_restriccion<br \/>\n<span class=\"remarcado\">ALTER TABLE<\/span> tabla <span class=\"remarcado\">DROP<\/span> [<span class=\"remarcado\">COLUMN<\/span>] definicion_de_columna | definicion_de_restriccion<\/p>\n<p><span class=\"remarcado\">ALTER TABLE<\/span> tabla <span class=\"remarcado\">ALTER<\/span> [<span class=\"remarcado\">COLUMN<\/span>] columna <span class=\"remarcado\">SET<\/span> expresion<\/p>\n<p><span class=\"remarcado\">DROP TABLE<\/span> [<span class=\"remarcado\">IF EXISTS<\/span>] tabla1 [, tabla2...]<\/p>\n<p><span class=\"remarcado\">CREATE ASSERTION<\/span> restriccion<br \/>\n  <span class=\"remarcado\">CHECK<\/span> condicion<br \/>\n  [<span class=\"remarcado\">INITIALLY DEFERRED<\/span> | <span class=\"remarcado\">INITIALLY IMMEDIATE<\/span>]<br \/>\n  [<span class=\"remarcado\">NOT DEFERRABLE<\/span> | <span class=\"remarcado\">DEFERRABLE<\/span>]<\/p>\n<p><\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">CREATE ASSERTION<\/span> universidad_no_vacia<br \/>\n  <span class=\"remarcado\">CHECK<\/span> ((<span class=\"remarcado\">SELECT Count<\/span>(1) <span class=\"remarcado\">FROM<\/span> universidad)>0);<br \/>\n<\/PRE><\/p>\n<p><PRE><\/p>\n<p><span class=\"remarcado\">CREATE VIEW<\/span> vista [(columnas)]<br \/>\n  <span class=\"remarcado\">AS<\/span> consulta<br \/>\n<\/PRE><\/p>\n<p><PRE class=\"codigo\"><br \/>\n<span class=\"remarcado\">CREATE VIEW<\/span> piezas_rojas<br \/>\n  <span class=\"remarcado\">AS SELECT<\/span> *<br \/>\n       <span class=\"remarcado\">FROM<\/span> piezas<br \/>\n       <span class=\"remarcado\">WHERE<\/span> color = 'rojo';<\/p>\n<p><\/PRE><\/p>\n<p><PRE><span class=\"remarcado\">DROP VIEW<\/span> vista<\/PRE><br \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n a SQL (SQL-92) Introducci&oacute;n SQL (Structured Query Language \/ Lenguaje de Consulta Estructurado) es un lenguaje declarativo de acceso a bases de datos relacionales que implementa un DML (Data Manipulation Language \/ Lenguaje de Manipulaci&oacute;n de Datos) y un DDL (Data Definition Language \/ Lenguaje de definici&oacute;n de datos). Algunas de sus caracter&iacute;sticas son [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":965,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-687","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/comments?post=687"}],"version-history":[{"count":9,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/687\/revisions"}],"predecessor-version":[{"id":689,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/687\/revisions\/689"}],"up":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/965"}],"wp:attachment":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/media?parent=687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}