<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alonso Pablo</title>
    <description>The latest articles on DEV Community by Alonso Pablo (@alonsopablo).</description>
    <link>https://dev.to/alonsopablo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F681648%2Fb7287a82-4258-4456-a5b1-bb43dd409f0c.png</url>
      <title>DEV Community: Alonso Pablo</title>
      <link>https://dev.to/alonsopablo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alonsopablo"/>
    <language>en</language>
    <item>
      <title>PostgreSQL y no hacer DELETE sin WHERE.</title>
      <dc:creator>Alonso Pablo</dc:creator>
      <pubDate>Tue, 02 Nov 2021 16:55:18 +0000</pubDate>
      <link>https://dev.to/alonsopablo/postgresql-y-no-hacer-delete-sin-where-47b5</link>
      <guid>https://dev.to/alonsopablo/postgresql-y-no-hacer-delete-sin-where-47b5</guid>
      <description>&lt;p&gt;&lt;strong&gt;Fuente:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=jxIEDKzGrOs&amp;amp;list=PL8gxzfBmzgex2nuVanqvxoTXTPovVSwi2"&gt;https://www.youtube.com/watch?v=jxIEDKzGrOs&amp;amp;list=PL8gxzfBmzgex2nuVanqvxoTXTPovVSwi2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programas utilizados:&lt;/strong&gt; Pgadmin4 y Postgres.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CREATE DATABASE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;nombre_database&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Creamos una base de datos&lt;/code&gt; llamada: &lt;code&gt;nombre_database&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Este es el script que se genera si lo hacemos a traves de la interfaz grafica de pgadmin4:&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;nombre_database&lt;/span&gt;
    &lt;span class="k"&gt;WITH&lt;/span&gt;
    &lt;span class="k"&gt;OWNER&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ownername&lt;/span&gt;
    &lt;span class="k"&gt;ENCODING&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'UTF8'&lt;/span&gt;
    &lt;span class="k"&gt;CONNECTION&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Creamos una base de datos&lt;/code&gt; llamada: &lt;code&gt;nombre_database&lt;/code&gt;, damos el nombre del dueño de la base de datos: &lt;code&gt;ownername&lt;/code&gt; (para este ejemplo). La codificación, en este caso es &lt;code&gt;UTF8&lt;/code&gt; y el límite de conexiones en -1.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;DROP DATABASE IF EXISTS&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="nv"&gt;"nombre_database"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- Tenemos que estar desconectados de la base de datos a borrar.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Borramos la base de datos si existe&lt;/code&gt; llamada: &lt;code&gt;nombre_database&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CREATE TABLE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;id_persona&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Creamos una tabla&lt;/code&gt; llamada &lt;code&gt;persona&lt;/code&gt; que tiene 3 columnas: &lt;code&gt;id_persona&lt;/code&gt;, &lt;code&gt;nombre&lt;/code&gt; y &lt;code&gt;dni&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;INSERT&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;VALUES&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Maria'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'12345'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Insertamos dentro&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; los valores en todas las columnas que tiene la tabla (&lt;code&gt;id_persona&lt;/code&gt;, &lt;code&gt;nombre&lt;/code&gt; y &lt;code&gt;dni&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;VALUES&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Maria'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'12345'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Insertamos dentro&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; únicamente los valores en las columnas previamente dichas: &lt;code&gt;nombre&lt;/code&gt; y &lt;code&gt;dni&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SELECT&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros con todas las columnas (ya que &lt;code&gt;seleccionamos&lt;/code&gt; con el carácter &lt;code&gt;*&lt;/code&gt; que refiere a &lt;code&gt;todo&lt;/code&gt;) de la tabla &lt;code&gt;persona&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;WHERE AND&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros &lt;code&gt;donde&lt;/code&gt; el &lt;code&gt;id&lt;/code&gt; de la entidad sea mayor a 2.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;--... igual al anterior&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Jose'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros &lt;code&gt;donde&lt;/code&gt; el &lt;code&gt;id&lt;/code&gt; de la entidad sea mayor a 2 &lt;code&gt;y&lt;/code&gt; la columna &lt;code&gt;nombre&lt;/code&gt; sea igual a &lt;code&gt;Jose&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;UPDATE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Jose'&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Actualiza&lt;/code&gt; la tabla &lt;code&gt;persona&lt;/code&gt; &lt;code&gt;actualizando&lt;/code&gt;, valga la redundancia, la columna &lt;code&gt;nombre&lt;/code&gt; al valor &lt;code&gt;Jose&lt;/code&gt;  &lt;code&gt;donde&lt;/code&gt; el &lt;code&gt;id&lt;/code&gt; sea igual a 2.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ALTER&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;ALTER TABLE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;apellido&lt;/span&gt; &lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- No se puede poner NOT NULL si ya la tabla persona contiene registros/datos agregados.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alteramos la tabla &lt;code&gt;persona&lt;/code&gt; y añadimos una columna &lt;code&gt;apellido&lt;/code&gt; con límite de 20 caracteres.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;RENAME&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;apellido&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alteramos la tabla &lt;code&gt;persona&lt;/code&gt; y renombramos una columna de &lt;code&gt;apellido&lt;/code&gt; a &lt;code&gt;nombre&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alteramos la tabla &lt;code&gt;persona&lt;/code&gt; y eliminamos la columna &lt;code&gt;nombre&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;ALTER COLUMN&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alteramos la columna &lt;code&gt;nombre&lt;/code&gt; para decir que no puede tener &lt;code&gt;NULL&lt;/code&gt; como valor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alteramos la columna &lt;code&gt;nombre&lt;/code&gt; para borrar la restricción de la columna de no poder tener &lt;code&gt;NULL&lt;/code&gt; como valor. Ahora acepta &lt;code&gt;NULL&lt;/code&gt; como valor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;TYPE&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- No se puede poner tipos de datos que no acepten el tipo de dato al que pertenece el dato ya existente en la columna (en el caso de que dicho dato exista)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alteramos la columna &lt;code&gt;nombre&lt;/code&gt; para cambiar el tipo de dato aceptado a &lt;code&gt;character varying&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SERIAL&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;serial&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Otras columnas...&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una tabla donde la columna id es de tipo &lt;code&gt;serial&lt;/code&gt;, esto quiere decir que va a generar automáticamente e incrementándose cuando insertemos datos.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;DELETE DROP TRUNCATE&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DELETE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vacía la tabla &lt;code&gt;persona&lt;/code&gt; (borra todos los registros). Cuando se agregan nuevos registros los id generados automáticamente no empiezan desde 1, sino que siguen desde el último id de la entidad borrada. &lt;del&gt;1, 2, 3&lt;/del&gt;; new=&amp;gt; 4, 5, 6.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DROP&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Borra la tabla &lt;code&gt;persona&lt;/code&gt; con sus registros. Se tiene que volver a crear la tabla y los id generados automáticamente empiezan desde 1.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;TRUNCATE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vacia la tabla &lt;code&gt;persona&lt;/code&gt; como &lt;code&gt;DELETE&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt; &lt;span class="k"&gt;RESTART&lt;/span&gt; &lt;span class="k"&gt;IDENTITY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vacía la tabla &lt;code&gt;persona&lt;/code&gt;. Cuando se agregan nuevos registros los id generados automáticamente empiezan desde 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;VALORES POR DEFAULT&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;--... otras columnas&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;telefono&lt;/span&gt; &lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="s1"&gt;'Unknown'&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una tabla con una columna llamada &lt;code&gt;telefono&lt;/code&gt; con un valor por &lt;code&gt;default&lt;/code&gt; de &lt;code&gt;'Unknown'&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;COLUMNAS CALCULADAS&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;bono&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;plantilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista los registros con 3 columnas, la última es una creada a partir del &lt;code&gt;salario&lt;/code&gt; + 1500 y es nombrada como &lt;code&gt;bono&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ORDER BY&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros ordenadas por &lt;code&gt;nombre&lt;/code&gt; de forma &lt;code&gt;descendente&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;--... igual que el anterior.&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt;
    &lt;span class="n"&gt;salario&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros ordenadas por &lt;code&gt;salario&lt;/code&gt; de forma &lt;code&gt;ascendente.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;LIKE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%e%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra los nombres de personas que tengan una letra &lt;code&gt;e&lt;/code&gt; minúscula en el campo &lt;code&gt;nombre&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;--... igual que el anterior&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'e%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra los nombres de las personas que tengan una letra &lt;code&gt;e&lt;/code&gt; minúscula como primera letra en el campo &lt;code&gt;nombre&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;--... igual que el anterior&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%E'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra los nombres de las personas que tengan una letra &lt;code&gt;e&lt;/code&gt; mayúscula como última letra en el campo &lt;code&gt;nombre&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;--... igual que el anterior&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%e_'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra los nombres de las personas que tengan una letra &lt;code&gt;e&lt;/code&gt; minúscula como anteúltima letra en el campo &lt;code&gt;nombre&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;COUNT&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;plantilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra una columna de la suma de los registros dentro de &lt;code&gt;plantilla&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SUM&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra en una columna la suma total de todos los valores de &lt;code&gt;salario&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;MIN MAX&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Usando MIN&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;plantilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra en una columna el &lt;code&gt;salario&lt;/code&gt; con el valor más bajo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Usando MAX&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;plantilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra en una columna el &lt;code&gt;salario&lt;/code&gt; con el valor más alto.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;AVG&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saca el promedio entre todos los números de la columna.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;plantilla&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saca el promedio dentro de cada grupo por nombre.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;HAVING&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Para usarlo necesitamos la cláusula &lt;code&gt;GROUP BY&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;WHERE&lt;/code&gt; trabaja con &lt;code&gt;SELECT&lt;/code&gt; y &lt;code&gt;HAVING&lt;/code&gt; trabaja con &lt;code&gt;GROUP BY&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salario&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;plantilla&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Jose'&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salario&lt;/span&gt;
&lt;span class="k"&gt;HAVING&lt;/span&gt;
    &lt;span class="n"&gt;salario&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra los registros de &lt;code&gt;nombre&lt;/code&gt; 'Jose' que en &lt;code&gt;salario&lt;/code&gt; tengan más de 3000.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;DISTINCT&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista los nombres de las diferentes registros. Si uno o muchos registros tienen el mismo nombre solo se muestra 1 vez. No muestra &lt;code&gt;nombres&lt;/code&gt; repetidos.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;BETWEEEN&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;salario&lt;/span&gt;
&lt;span class="k"&gt;BETWEEN&lt;/span&gt;
    &lt;span class="mi"&gt;2000&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros &lt;code&gt;donde&lt;/code&gt; el valor de la columna salario sea &lt;code&gt;entre&lt;/code&gt; 2000 y 5000.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- ... igual que el anterior&lt;/span&gt;
&lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt;
    &lt;span class="mi"&gt;2000&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros &lt;code&gt;donde&lt;/code&gt; el valor de la columna salario &lt;code&gt;no sea entre&lt;/code&gt; 2000 y 5000.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;UNIQUE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;uq_salario&lt;/span&gt;
&lt;span class="k"&gt;UNIQUE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restringe que la columna &lt;code&gt;salario&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; no pueda tener valores repetidos, tienen que ser ú&lt;code&gt;nico&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;DROP CONSTRAINT&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;uq_salario&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Elimina la restricción &lt;code&gt;uq_salario&lt;/code&gt;. En este ejemplo quitamos la restricción de valor &lt;code&gt;único&lt;/code&gt; en la columna de &lt;code&gt;salario&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;FOREIGN KEY&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Añadimos una columna llamada codigo_empresa en la tabla 'planilla'.&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="n"&gt;codigo_empresa&lt;/span&gt; &lt;span class="nb"&gt;integer&lt;/span&gt;

&lt;span class="c1"&gt;-- Añadimos una llave foranea tomando el id de la tabla 'empresa' para podes añadirla en la columna 'codigo_empresa'.&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;test_fk&lt;/span&gt;
&lt;span class="k"&gt;FOREIGN&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;codigo_empresa&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;empresa&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt; &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;codigo_empresa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'2'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una llave foránea para la tabla &lt;code&gt;planilla&lt;/code&gt; en la columna &lt;code&gt;codigo_empresa&lt;/code&gt;, a partir de la columna &lt;code&gt;id&lt;/code&gt; de la tabla &lt;code&gt;empresa&lt;/code&gt;. Ahora en la columna &lt;code&gt;codigo_empresa&lt;/code&gt; de la tabla &lt;code&gt;planilla&lt;/code&gt; solo se pueden poner valores que tenga la columna &lt;code&gt;id&lt;/code&gt; de la tabla &lt;code&gt;empresa&lt;/code&gt;, de otra forma nos daría error.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;FUNCTION (stored procedure)&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Funcion con parametros con nombre:&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Creamos la funcion o la reemplazamos en el caso de que exista, y la guardamos.&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;REPLACE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt;
    &lt;span class="n"&gt;Suma&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt; &lt;span class="nb"&gt;integer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;RETURNS&lt;/span&gt;
    &lt;span class="nb"&gt;integer&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="k"&gt;SQL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Ejecutamos la funcion guardada y retornaria una columna 'suma' con valor 200.&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;Suma&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'50'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'150'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una &lt;code&gt;funcion&lt;/code&gt; llamada &lt;code&gt;suma&lt;/code&gt; con dos parametros de tipo &lt;code&gt;int&lt;/code&gt; e &lt;code&gt;integer&lt;/code&gt; llamados &lt;code&gt;num1&lt;/code&gt; y &lt;code&gt;num2&lt;/code&gt; respectivamente.&lt;/p&gt;

&lt;p&gt;Declaramos que &lt;code&gt;retorna&lt;/code&gt; un &lt;code&gt;integer&lt;/code&gt; y entre pares de símbolo &lt;code&gt;$&lt;/code&gt; indicamos la lógica de la función.&lt;/p&gt;

&lt;p&gt;Luego indicamos el lenguaje utilizado.&lt;/p&gt;

&lt;p&gt;Finalmente llamamos la funcion &lt;code&gt;suma&lt;/code&gt; y le pasamos los dos argumentos que necesita.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Funcion con parametro sin nombre:&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt;
    &lt;span class="n"&gt;SearchSalary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;RETURNS&lt;/span&gt;
    &lt;span class="nb"&gt;integer&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;company&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="k"&gt;SQL&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SearchSalary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Eduard'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una &lt;code&gt;funcion&lt;/code&gt; llamada &lt;code&gt;SearchSalary&lt;/code&gt;, decimos que va a tener un parámetro de tipo &lt;code&gt;varchar&lt;/code&gt; y que retornara un &lt;code&gt;integer&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Hacemos referencia al primer parámetro con &lt;code&gt;$1&lt;/code&gt; (si queremos hacer referencia al segundo parámetro, si hubiera, lo haríamos con $2 y así).&lt;/p&gt;

&lt;p&gt;Finalmente llamamos a la función y le pasamos el nombre para que nos retorne su salario.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Funcion sin parametros y sin retornar resultado:&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt;
    &lt;span class="n"&gt;InsertPersons&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;RETURNS&lt;/span&gt;
    &lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Armando'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'65000'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Esteban'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'46000'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Quito'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'5'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'92000'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="k"&gt;SQL&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;InsertPersons&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una &lt;code&gt;función&lt;/code&gt; sin parámetros y no retorna ningún valor. Solo inserta los datos en la tabla &lt;code&gt;planilla&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt;
    &lt;span class="n"&gt;SearchInfo&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;RETURNS&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;planilla&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="k"&gt;SQL&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SearchInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una &lt;code&gt;función&lt;/code&gt; que retorna una columna que solo tiene una fila y esta contiene todas las columnas de la tabla &lt;code&gt;planilla&lt;/code&gt; con los datos encontrados según el &lt;code&gt;id&lt;/code&gt; que hayamos pasado a la función &lt;code&gt;SearchInfo&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;LIMIT (Top) OFFSET&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;LIMIT&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt;
    &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista los primeros 5 o el número que pongamos después de &lt;code&gt;LIMIT&lt;/code&gt;. Sirve para limitar el número de resultados/registros.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OFFSET&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt;
    &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="k"&gt;OFFSET&lt;/span&gt;
    &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A partir de la 4 fila/registro lista las 3 filas/registros siguientes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- 1 Pepe      &amp;lt; OFFSET (Ignora)&lt;/span&gt;
&lt;span class="c1"&gt;-- 2 Juan      &amp;lt; OFFSET (Ignora)&lt;/span&gt;
&lt;span class="c1"&gt;-- 3 Roberto   &amp;lt; OFFSET (Ignora)&lt;/span&gt;
&lt;span class="c1"&gt;-- 4 Julio     &amp;lt; OFFSET (Ignora)&lt;/span&gt;
&lt;span class="c1"&gt;-- 5 German    &amp;lt; LIMIT (Lista)&lt;/span&gt;
&lt;span class="c1"&gt;-- 6 Ana       &amp;lt; LIMIT (Lista)&lt;/span&gt;
&lt;span class="c1"&gt;-- 7 Sandra    &amp;lt; LIMIT (Lista)&lt;/span&gt;
&lt;span class="c1"&gt;-- 8 Eduardo&lt;/span&gt;
&lt;span class="c1"&gt;-- 9 Maria&lt;/span&gt;

&lt;span class="c1"&gt;-- OUTPUT:&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 5 German&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 6 Ana&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- 7 Sandra&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;TRIGGER&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Esta funcion se va a guardar dentro de 'Trigger Functions'&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt;
    &lt;span class="n"&gt;SP_Test&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;RETURNS&lt;/span&gt;
    &lt;span class="k"&gt;TRIGGER&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;BEGIN&lt;/span&gt;

    &lt;span class="c1"&gt;-- A la hora de hacer el UPDATE&lt;/span&gt;
    &lt;span class="c1"&gt;-- 'old': Si quiero guardar la informacion que ya estan en la planilla.&lt;/span&gt;
    &lt;span class="c1"&gt;-- 'new': Si quiero guardar la informacion nueva que se ingresa a la tabla.&lt;/span&gt;
    &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="nv"&gt;"Log_Triggers"&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;old&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;old&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;old&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;-- Para que el Trigger haga algo es necesario un RETURN&lt;/span&gt;
    &lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="k"&gt;NEW&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;END&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Indicamos que vamos a usar codigo mas de postrgreSQL&lt;/span&gt;
    &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;PLPGSQL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Creamos el trigger, asignamos cuando se acciona y que ejecuta.&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TRIGGER&lt;/span&gt;
    &lt;span class="n"&gt;TR_Update&lt;/span&gt;
&lt;span class="k"&gt;BEFORE&lt;/span&gt; &lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;EACH&lt;/span&gt; &lt;span class="k"&gt;ROW&lt;/span&gt;
    &lt;span class="k"&gt;EXECUTE&lt;/span&gt; &lt;span class="k"&gt;PROCEDURE&lt;/span&gt; &lt;span class="n"&gt;SP_Test&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;-- Para probar el trigger:&lt;/span&gt;
&lt;span class="k"&gt;UPDATE&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Eduardo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'123456'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;salario&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'20000'&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Eduard'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una función la cual va a ser ejecutada por el &lt;code&gt;Trigger&lt;/code&gt;. Esta función en el caso de usar &lt;code&gt;old&lt;/code&gt; toma los datos que estaban en la tabla &lt;code&gt;planilla&lt;/code&gt; antes de ser actualizados y los guarda dentro de la tabla &lt;code&gt;Log_Triggers&lt;/code&gt;. O en el caso de usar &lt;code&gt;new&lt;/code&gt; guarda los datos nuevos que se ingresan a la tabla.&lt;/p&gt;

&lt;p&gt;Creamos el &lt;code&gt;Trigger&lt;/code&gt;, le decimos que se ejecute &lt;code&gt;antes&lt;/code&gt; de &lt;code&gt;actualizar&lt;/code&gt; la tabla &lt;code&gt;planilla&lt;/code&gt; y que &lt;code&gt;por cada&lt;/code&gt; &lt;code&gt;fila&lt;/code&gt; &lt;code&gt;ejecute&lt;/code&gt; el &lt;code&gt;procedimiento&lt;/code&gt; &lt;code&gt;SP_Test()&lt;/code&gt;. En este caso es la función que creamos líneas arriba.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt;
    &lt;span class="n"&gt;SP_TR_Insert&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;RETURNS&lt;/span&gt;
    &lt;span class="k"&gt;TRIGGER&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="c1"&gt;-- Para declarar variables usamos 'DECLARE'&lt;/span&gt;
    &lt;span class="k"&gt;DECLARE&lt;/span&gt;

    &lt;span class="c1"&gt;-- User =&amp;gt; es reemplazado por el nombre de usuario que esta usando la BD.&lt;/span&gt;
    &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="nb"&gt;Varchar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;User&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;datenow&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;current_date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;timenow&lt;/span&gt; &lt;span class="nb"&gt;Time&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;current_time&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;BEGIN&lt;/span&gt;

    &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt;
        &lt;span class="nv"&gt;"Log_Triggers"&lt;/span&gt;
    &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;datenow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timenow&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="k"&gt;NEW&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;END&lt;/span&gt;
    &lt;span class="err"&gt;$$&lt;/span&gt;
    &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;PLPGSQL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TRIGGER&lt;/span&gt;
        &lt;span class="n"&gt;TR_Insert&lt;/span&gt;
    &lt;span class="k"&gt;AFTER&lt;/span&gt; &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;      &lt;span class="n"&gt;planilla&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;EACH&lt;/span&gt; &lt;span class="k"&gt;ROW&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;      &lt;span class="k"&gt;EXECUTE&lt;/span&gt; &lt;span class="k"&gt;PROCEDURE&lt;/span&gt; &lt;span class="n"&gt;SP_TR_Insert&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una &lt;code&gt;funcion&lt;/code&gt; llamada &lt;code&gt;SP_TR_Insert&lt;/code&gt;. Dentro declaramos variables y guardamos el nombre del usuario que utiliza la base de datos, la fecha y la hora en la que se ejecuta la función.&lt;/p&gt;

&lt;p&gt;En la lógica de la función hacemos que guarde los nuevos datos que se van a ingresar y las variables que declaramos líneas arriba.&lt;/p&gt;

&lt;p&gt;Finalmente creamos el &lt;code&gt;Trigger&lt;/code&gt; que va a activarse &lt;code&gt;después&lt;/code&gt; de &lt;code&gt;insertar&lt;/code&gt; en la tabla &lt;code&gt;planilla&lt;/code&gt;. Por cada fila que ingresamos ejecuta la función &lt;code&gt;SP_TR_Insert&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;OR IN&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OR&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'2'&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'11'&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'3'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Listamos de la tabla &lt;code&gt;planilla&lt;/code&gt; todos los registros que en la tabla &lt;code&gt;dni&lt;/code&gt; tengan como valor 2, 11 o 3. Usando el operador lógico &lt;code&gt;OR&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;IN&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'11'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Listamos de la tabla &lt;code&gt;planilla&lt;/code&gt; todos los registros que en la tabla &lt;code&gt;dni&lt;/code&gt; tengan como valor 2, 11 o 3.  Pero esta vez usando &lt;code&gt;IN&lt;/code&gt; y al lado un paréntesis con el o los valores que deben tener para ser listados.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;VIEW&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Creamos una vista a partir de determinadas columnas de la tabla planilla:&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt;
    &lt;span class="n"&gt;view_dataperson&lt;/span&gt;
&lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos una &lt;code&gt;vista&lt;/code&gt; llamada &lt;code&gt;view_dataperson&lt;/code&gt; que muestre solo las columnas que nosotros le digamos. Si se realiza un cambio en la tabla &lt;code&gt;planilla&lt;/code&gt; también se va a cambiar en la vista &lt;code&gt;view_dataperson&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Podemos consultar la vista como si fuera una tabla normal:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;view_dataperson&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;UNION&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dni&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="c1"&gt;-- Si queremos no filtre los repetidos usamos 'UNION ALL' en vez de 'UNION'&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros que haya en la tabla &lt;code&gt;planilla&lt;/code&gt; y &lt;code&gt;persona&lt;/code&gt; con las columnas que seleccionemos. En este caso usamos &lt;code&gt;UNION&lt;/code&gt; por lo tanto los registros repetidos van a ser filtrados.&lt;/p&gt;

&lt;p&gt;Si queremos que no se filtren los registros repetidos hay que agregar &lt;code&gt;ALL&lt;/code&gt; luego de &lt;code&gt;UNION&lt;/code&gt;  quedando: &lt;code&gt;UNION ALL&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Planilla'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Origen&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Persona'&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registros (hasta los repetidos) que haya en la tabla &lt;code&gt;planilla&lt;/code&gt; y &lt;code&gt;persona&lt;/code&gt; con las columnas que seleccionemos. Además creamos una columna nueva llamada &lt;code&gt;Origen&lt;/code&gt; la cual contiene el nombre de la tabla de la cual pertenece el registro 'Planilla' o 'Persona'.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt;
    &lt;span class="n"&gt;view_union&lt;/span&gt;
&lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dni&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por último podemos crear una vista para guardar los registros y consultarlo después sin tener que armar la unión de las dos tablas.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;INNER JOIN (Simple join)&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista los registros que en las columnas de las tablas seleccionadas tienen el mismo valor.&lt;/p&gt;

&lt;p&gt;En este caso hacemos un &lt;code&gt;INNER JOIN&lt;/code&gt; entre las tablas &lt;code&gt;planilla&lt;/code&gt; y &lt;code&gt;persona&lt;/code&gt;  donde la relación sea entre la columna &lt;code&gt;dni&lt;/code&gt; de &lt;code&gt;planilla&lt;/code&gt; y la columna &lt;code&gt;id&lt;/code&gt; de &lt;code&gt;persona&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;( &lt;del&gt;A&lt;/del&gt; | AB | &lt;del&gt;B&lt;/del&gt; )&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;LEFT JOIN&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="c1"&gt;-- Es lo mismo escribir 'LEFT JOIN' que 'LEFT OUTER JOIN'&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registro que existen en la tabla de la &lt;code&gt;izquierda&lt;/code&gt; que en este caso seria &lt;code&gt;planilla&lt;/code&gt; y los registros que comparten el mismo valor en la columna &lt;code&gt;dni&lt;/code&gt; e &lt;code&gt;id&lt;/code&gt; de la tabla &lt;code&gt;planilla&lt;/code&gt; y &lt;code&gt;persona&lt;/code&gt; respectivamente.&lt;/p&gt;

&lt;p&gt;( A | AB | &lt;del&gt;B&lt;/del&gt; )&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;RIGHT JOIN&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="c1"&gt;-- Es lo mismo escribir 'RIGHT JOIN' que 'RIGHT OUTER JOIN'&lt;/span&gt;
&lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista todos los registro que existen en la tabla de la &lt;code&gt;derecha&lt;/code&gt; que en este caso seria &lt;code&gt;persona&lt;/code&gt; y los registros que comparten el mismo valor en la columna &lt;code&gt;dni&lt;/code&gt; e &lt;code&gt;id&lt;/code&gt; de la tabla &lt;code&gt;planilla&lt;/code&gt; y &lt;code&gt;persona&lt;/code&gt; respectivamente.&lt;/p&gt;

&lt;p&gt;( &lt;del&gt;A&lt;/del&gt; | AB | B )&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;FULL JOIN&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="c1"&gt;-- Es lo mismo escribir 'FULL JOIN' que 'FULL OUTER JOIN'&lt;/span&gt;
&lt;span class="k"&gt;FULL&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muestra todas las columnas de la tabla &lt;code&gt;planilla&lt;/code&gt; y &lt;code&gt;persona&lt;/code&gt;  una al lado de la otra con todos los registros de ambas tablas. Donde no haya relación entre la columna &lt;code&gt;dni&lt;/code&gt; de la tabla &lt;code&gt;planilla&lt;/code&gt; y la columna &lt;code&gt;id&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; los campos van a ser rellenados con &lt;code&gt;[null]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;( A | AB | B )&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CROSS JOIN&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;planilla&lt;/span&gt;
&lt;span class="k"&gt;CROSS&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista cada registro de la &lt;code&gt;tabla de la izquierda&lt;/code&gt; por el número de registros totales de la &lt;code&gt;tabla derecha&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CROSS JOIN&lt;/code&gt; no utiliza &lt;code&gt;ON&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- nombre dni salario id nombre     cedula&lt;/span&gt;
&lt;span class="c1"&gt;-- Jose   2   2500    20 Francisco  12345&lt;/span&gt;
&lt;span class="c1"&gt;-- Jose   2   2500    21 Daniel     21354&lt;/span&gt;
&lt;span class="c1"&gt;-- Jose   2   2500    22 Pedro      35421&lt;/span&gt;
&lt;span class="c1"&gt;-- Maria  3   4500    20 Francisco  12345&lt;/span&gt;
&lt;span class="c1"&gt;-- Maria  3   4500    21 Daniel     21354&lt;/span&gt;
&lt;span class="c1"&gt;-- Maria  3   4500    22 Pedro      35421&lt;/span&gt;
&lt;span class="c1"&gt;-- David  4   6500    20 Francisco  12345&lt;/span&gt;
&lt;span class="c1"&gt;-- David  4   6500    21 Daniel     21354&lt;/span&gt;
&lt;span class="c1"&gt;-- David  4   6500    22 Pedro      35421&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;WITH CHECK OPTION&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt;
    &lt;span class="n"&gt;view_person&lt;/span&gt;
&lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="nv"&gt;"Persona"&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="nv"&gt;"Pais"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Costa Rica'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Primero necesitamos una vista&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt;
    &lt;span class="n"&gt;view_person&lt;/span&gt;
&lt;span class="k"&gt;VALUES&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'12345'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Manuel'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Vargas'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Colombia'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'43'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insertamos un registro en la vista &lt;code&gt;view_person&lt;/code&gt; el cual el 'Pais' del registro no es 'Costa Rica' sino 'Colombia'. Esto hará que no se inserte en la vista &lt;code&gt;view_person&lt;/code&gt; sino en la tabla "Persona" causando un registro "fantasma" y posiblemente generando errores a largo plazo.&lt;/p&gt;

&lt;p&gt;Para evitar esto se utiliza &lt;code&gt;WITH CHECK OPTION&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt;
    &lt;span class="n"&gt;view_person&lt;/span&gt;
&lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="nv"&gt;"Persona"&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="nv"&gt;"Pais"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Costa Rica'&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;CHECK&lt;/span&gt; &lt;span class="k"&gt;OPTION&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Antes de realizar un UPDATE o un INSERT primero se va a fijar en el criterio de la vista, que "Pais" solo tenga de valor 'Costa Rica'. Si cumple va a seguir con la operación, pero si no, nos va a dar un error.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ABS CBRT CEILING FLOOR&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;ABS&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;ABS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el &lt;code&gt;valor absoluto&lt;/code&gt; del número ingresado.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CRBT&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;CBRT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve la &lt;code&gt;raíz cubica&lt;/code&gt; del número ingresado.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CEILING&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;CEILING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 16&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el número ingresado &lt;code&gt;redondeado para arriba&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;FLOOR&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;FLOOR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;58&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el número ingresado &lt;code&gt;redondeando para abajo&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;POWER ROUND SIGN SQRT&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;POWER&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;POWER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 16&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el &lt;code&gt;primer número&lt;/code&gt; ingresado (2) &lt;code&gt;elevado a la potencia&lt;/code&gt; del &lt;code&gt;segundo número&lt;/code&gt; ingresado (4).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;ROUND&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;82&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 25&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;824&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 24.82&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;825&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 24.83&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 24.8000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el &lt;code&gt;primer número&lt;/code&gt; ingresado redondeado, si se ingresa un &lt;code&gt;segundo número&lt;/code&gt; este va a determinar cuantos números decimales va a tener luego del punto.&lt;/p&gt;

&lt;p&gt;Redondea para arriba a partir del 5.&lt;/p&gt;

&lt;p&gt;Redondea para abajo a hasta el 4.&lt;/p&gt;

&lt;p&gt;Si se necesitan mas decimales se le agregan 0 hasta cumplir con el &lt;code&gt;segundo número ingresado&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;SIGN&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SIGN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 0&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SIGN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;234&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 1&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SIGN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;234&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;--  Salida esperada: -1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve 1 si el número ingresado es positivo.&lt;/p&gt;

&lt;p&gt;Devuelve 0 si el número ingresado es 0.&lt;/p&gt;

&lt;p&gt;Devuelve -1 si el número ingresado es negativo.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;SQRT&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SQRT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: -1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve la &lt;code&gt;raíz cuadrada&lt;/code&gt; del número ingresado.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;MOD PI RANDOM TRUNC&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;MOD&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;MOD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el &lt;code&gt;resto de la división&lt;/code&gt; del &lt;code&gt;primer número&lt;/code&gt; ingresado con respecto al &lt;code&gt;segundo número&lt;/code&gt; ingresado.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;PI&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;PI&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 3.141592653589793&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el número &lt;code&gt;Pi&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;RANDOM&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;RANDOM&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 0.699286726400242&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 0.6155701055762748&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 0.2833145983469656&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve un número &lt;code&gt;aleatorio&lt;/code&gt; entre 0 y 1.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;TRUNC&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;TRUNC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: -57&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;TRUNC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;35736434&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: -57.35&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si no se ingresa un segundo número, se retorna el primer número ingresado sin decimal.&lt;/p&gt;

&lt;p&gt;Si se ingresa un segundo número, se retorna el primer número ingresado con tantos decimales según el segundo número ingresado.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CHAR_LENGTH UPPER LOWER POSITION&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CHAR_LENGTH&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;CHAR_LENGTH&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola mundo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el &lt;code&gt;número de caracteres&lt;/code&gt; del texto ingresado.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;UPPER&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;UPPER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola mundo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'HOLA MUNDO'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el texto ingresado pero &lt;code&gt;en mayúsculas&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;LOWER&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;LOWER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'hola mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve el texto ingresado pero &lt;code&gt;en minúscula&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;POSITION&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;POSITION&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'mundo'&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s1"&gt;'Hola mundo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuelve la posición del &lt;code&gt;primer texto&lt;/code&gt; ingresado dentro del &lt;code&gt;segundo texto&lt;/code&gt; ingresado.&lt;/p&gt;

&lt;p&gt;Si no encuentra la palabra devuelve 0.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SUBSTRING TRIM&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;SUBSTRING&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;SUBSTRING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hello World'&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'ello W'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desde la posición 2 (empieza a contar desde el 1) toma los caracteres hasta la posición 6 y lo retorna.&lt;/p&gt;

&lt;p&gt;Sirve para extraer una sección del texto pasándole dos números refiriendo a la posición de inicio y fin de la extracción.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;TRIM&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;TRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'  Hola Mundo  '&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto pero sin &lt;code&gt;espacios&lt;/code&gt; al &lt;code&gt;principio&lt;/code&gt; ni al &lt;code&gt;final&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;TRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;LEADING&lt;/span&gt; &lt;span class="s1"&gt;'-'&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="s1"&gt;'--Hola Mundo---'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo---'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto, pero sin el &lt;code&gt;carácter escogido&lt;/code&gt; al &lt;code&gt;principio&lt;/code&gt; del texto, si hay un carácter al final este va a seguir estando.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;TRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;TRAILING&lt;/span&gt; &lt;span class="s1"&gt;'-'&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="s1"&gt;'--Hola Mundo---'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: '--Hola Mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto, pero sin el &lt;code&gt;carácter escogido&lt;/code&gt; al &lt;code&gt;final&lt;/code&gt; del texto, si hay un carácter al principio este  va a seguir estando.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;TRIMG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;BOTH&lt;/span&gt; &lt;span class="s1"&gt;'-'&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="s1"&gt;'--Hola Mundo---'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto pero sin el &lt;code&gt;carácter escogido&lt;/code&gt; en &lt;code&gt;ambos&lt;/code&gt; lados, al principio y al final.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;LTRIM RTRIM SUBSTR LPAD RPAD&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;LTRIM&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;LTRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'   Hola Mundo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo'&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;LTRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'___Hola Mundo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'_'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto, pero sin espacios a la &lt;code&gt;izquierda&lt;/code&gt; y si queremos remover un &lt;code&gt;carácter&lt;/code&gt; en específico a la &lt;code&gt;izquierda&lt;/code&gt; del texto lo hacemos pasándole el &lt;code&gt;carácter&lt;/code&gt; luego del texto separado con una coma.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;RTRIM&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;LTRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo   '&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo'&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;LTRIM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo___'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'_'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto, pero sin espacios a la &lt;code&gt;derecha&lt;/code&gt; y si queremos remover un &lt;code&gt;carácter&lt;/code&gt; en específico a la &lt;code&gt;derecha&lt;/code&gt; del texto lo hacemos pasándole el &lt;code&gt;carácter&lt;/code&gt; luego del texto separado con una coma.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;SUBSTR&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo___'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: ' Mundo___'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto  a partir de la posición que le digamos, en este caso a partir de la posición 5.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo___'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: ' Mundo__'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto a partir de la posicion que le digamos, en este caso a partir de la posicion 5. Y hasta la posicion del segundo numero que le pasemos, en este caso 8.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;LPAD&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;LPAD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'-'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: '-----Hola Mundo'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto, pero le agrega a la &lt;code&gt;izquierda&lt;/code&gt; (al principio) del mismo el carácter que le indiquemos.&lt;/p&gt;

&lt;p&gt;Siempre se va a detener cuando el largo o el número de caracteres sea el número que le pasemos o en este caso el 15.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;RPAD&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;RPAD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hola Mundo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'-'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 'Hola Mundo-----'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna el texto, pero le agrega al la &lt;code&gt;derecha&lt;/code&gt; (al final) del mismo el carácter que le indiquemos.&lt;/p&gt;

&lt;p&gt;Siempre se va a detener cuando el largo o el número de caracteres sea el número que le pasemos o en este caso el 15.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;DATE TIME TIMESTAMP EXTRACT()&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DATE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;CURRENT_DATE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 2021-11-01&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna la &lt;code&gt;fecha&lt;/code&gt; en la que se corre esta consulta.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Año-Mes-Día&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;TIME&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIME&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 02:52:07.291573+00:00&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna la &lt;code&gt;hora&lt;/code&gt; en la que se corre esta consulta.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Hora:Minutos:Segundos:Milisegundos+ZonaHoraria&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;TIMESTAMP&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 2021-11-01 02:54:04.825941+00&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna la &lt;code&gt;fecha&lt;/code&gt; y &lt;code&gt;hora&lt;/code&gt; en la que se corre esta consulta.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Año-Mes-Día Hora:Minutos:Segundos:Milisegundos+ZonaHoraria&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;EXTRACT()&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Retorna en que año estamos:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;YEAR&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 2021&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna en que mes estamos:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;MONTH&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 11&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna en que dia estamos:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;DAY&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 1&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna la hora:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HOUR&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 3&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna en que siglo estamos:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CENTURY&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 21&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna en que parte del cuarto del año estamos:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;QUARTER&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 4&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna en que numero de dia de la semana estamos:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DOW&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 1&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna el numero de dias que pasaron desde principio del año:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DOY&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 305&lt;/span&gt;

&lt;span class="c1"&gt;-- Retorna el numero de meses que pasaron desde principio del año:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;EXTRACT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;WEEK&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 44&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;NULL&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;person&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt;  &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna todos los registros donde la columna &lt;code&gt;pais&lt;/code&gt; no tenga el valor &lt;code&gt;NULL&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;person&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna todos los registros donde la columna &lt;code&gt;pais&lt;/code&gt; tenga como valor &lt;code&gt;NULL&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SEQUENCE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Creamos la secuencia&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt;
    &lt;span class="n"&gt;sec_index&lt;/span&gt;
&lt;span class="k"&gt;START&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt;
    &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;INCREMENT&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt;
    &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="k"&gt;MINVALUE&lt;/span&gt;
    &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;MAXVALUE&lt;/span&gt;
    &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="k"&gt;CYCLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si no ponemos valores &lt;code&gt;MINVALUE&lt;/code&gt; Y &lt;code&gt;MAXVALUE&lt;/code&gt; se setean los de por defecto: &lt;code&gt;-9223372036854775808&lt;/code&gt; y &lt;code&gt;9223372036854775807&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Si no queremos que sea &lt;code&gt;CYCLE&lt;/code&gt; agregamos un &lt;code&gt;NO&lt;/code&gt; al inicio: &lt;code&gt;NO CYCLE&lt;/code&gt;. O simplemente lo quitamos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Verificamos la secuencia creada&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="nv"&gt;"sec_index"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Salida esperada:&lt;/span&gt;
&lt;span class="c1"&gt;-- sequence_name last_value start_value increment_by max_value min_value cache_value &amp;gt;&amp;gt;&lt;/span&gt;
&lt;span class="c1"&gt;-- sec_index     1          1           20           100       1         1&lt;/span&gt;
&lt;span class="c1"&gt;-- &amp;gt;&amp;gt; log_cnt is_cycled is_called&lt;/span&gt;
&lt;span class="c1"&gt;--    0       true      false&lt;/span&gt;

&lt;span class="c1"&gt;-- A mi me salio:&lt;/span&gt;
&lt;span class="c1"&gt;-- last_value log_cnt is_called&lt;/span&gt;
&lt;span class="c1"&gt;-- 1          0       false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En &lt;code&gt;last_value&lt;/code&gt; indica cuál es el número actual.&lt;/p&gt;

&lt;p&gt;En &lt;code&gt;is_called&lt;/code&gt; indica si la secuencia fue iniciada/llamada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Para iniciar/llamar la secuencia:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;NEXTVAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'sec_index'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 1&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 21&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 41&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 61&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 81&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 1&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: 21&lt;/span&gt;
&lt;span class="c1"&gt;-- ... ya que es un ciclo vuelve a reiniciarse.&lt;/span&gt;
&lt;span class="c1"&gt;-- Si no es 'CYCLE' nos devolveria un error al querer superar el valor maximo.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt; &lt;span class="n"&gt;sec_index&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eliminamos la secuencia &lt;code&gt;sec_index&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SUBCONSULTA&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DENTRO DE SELECT&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;apellido&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt;  &lt;span class="n"&gt;pais_residencia&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="k"&gt;SELECT&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;      &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;precio_max&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;      &lt;span class="n"&gt;precios&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;      &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pais_residencia&lt;/span&gt;
 &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista las columnas  &lt;code&gt;nombre&lt;/code&gt;,  &lt;code&gt;apellido&lt;/code&gt;, &lt;code&gt;pais_residencia&lt;/code&gt; y &lt;code&gt;precio_max&lt;/code&gt;. En este último tenemos el precio máximo de la tabla &lt;code&gt;precios&lt;/code&gt; coincidiendo el valor de la columna &lt;code&gt;pais_residencia&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; con el valor de la columna &lt;code&gt;pais&lt;/code&gt; de la tabla &lt;code&gt;precios&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DENTRO DE WHERE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;apellido&lt;/span&gt;
    &lt;span class="n"&gt;pais_residencia&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;pais_residencia&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista los registros si coincide que algún registro de la tabla persona tenga en la columna &lt;code&gt;pais_residencia&lt;/code&gt; el mismo valor que la &lt;code&gt;subconsulta&lt;/code&gt;, del valor de la columna &lt;code&gt;pais&lt;/code&gt; del primer registro de la tabla &lt;code&gt;precios&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DENTRO DE WHERE IN&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;apellido&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pais_residencia&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%C%'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lista los registros que coinciden que la columna &lt;code&gt;pais&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; tengan el mismo valor que los resultados de la &lt;code&gt;subconsulta&lt;/code&gt; de países que tengan &lt;code&gt;C mayuscula&lt;/code&gt; en la columna &lt;code&gt;pais&lt;/code&gt; de la tabla &lt;code&gt;pais&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- nombre apellido pais_residencia&lt;/span&gt;
&lt;span class="c1"&gt;-- Alex   Chacon   Colombia&lt;/span&gt;
&lt;span class="c1"&gt;-- Maria  Solis    Costa Rica&lt;/span&gt;
&lt;span class="c1"&gt;-- Ana   Alfaro   Costa Rica&lt;/span&gt;
&lt;span class="c1"&gt;-- Otto   Solano   Colombia&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;DELETE UPDATE CON SUBCONSULTA&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;UPDATE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt;
    &lt;span class="n"&gt;pais_residencia&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;precio&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;OFFSET&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="n"&gt;pais_residencia&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Actualiza los campos que tengan &lt;code&gt;NULL&lt;/code&gt; de la columna &lt;code&gt;pais_residencia&lt;/code&gt; de la tabla &lt;code&gt;persona&lt;/code&gt; con los datos de la &lt;code&gt;subconsulta&lt;/code&gt; sacado de la columna &lt;code&gt;pais&lt;/code&gt; de la tabla &lt;code&gt;precios&lt;/code&gt; ignorando los primeros 10 registros y solo trayendo 1 registro.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DELETE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;persona&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;pais_residencia&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%er%'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Borra los registros de la tabla &lt;code&gt;persona&lt;/code&gt; donde los registros tengan en la columna &lt;code&gt;pais_residencia&lt;/code&gt; el valor de los resultados de la &lt;code&gt;subconsulta&lt;/code&gt;. La subconsulta trae la columna &lt;code&gt;pais&lt;/code&gt; de la tabla &lt;code&gt;precios&lt;/code&gt; donde en su valor contenga: &lt;code&gt;er&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;INSERT CON SUBCONSULTA&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Existe una tabla llamada "precios"&lt;/span&gt;
&lt;span class="c1"&gt;-- Existe una tabla vacia llamada "precios_maximos"&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt;
    &lt;span class="n"&gt;precios_maximos&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;precios&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt;
    &lt;span class="n"&gt;pais&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insertamos en la tabla vacía de &lt;code&gt;precios_maximos&lt;/code&gt; los resultados de la &lt;code&gt;subconsulta&lt;/code&gt;, la misma trae el &lt;code&gt;precio maximo&lt;/code&gt; de cada &lt;code&gt;pais&lt;/code&gt; sin repetir el valor de la columna &lt;code&gt;pais&lt;/code&gt; de la tabla &lt;code&gt;precios&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;VARIABLES&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- NO SE PUEDE DECLARAR VARIABLES FUERA DE UN BLOQUE.&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;variable&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;variable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- Nos da error.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retornaría un error, ya que las variables tienen que declararse dentro de una estructura de bloque.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;z&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;

&lt;span class="n"&gt;z&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Para que retorne el valor de z utilizamos '%':&lt;/span&gt;
&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'%'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- Salida esperada: NOTICE: 2500&lt;/span&gt;
&lt;span class="c1"&gt;-- DO&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;IF&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;

&lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Iraq'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;

&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'El pais SI ha sido encontrado'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;ELSE&lt;/span&gt;

&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'El pais NO ha sido encontrado'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="n"&gt;IF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retorna 'El país SI ha sido encontrado' o 'El país NO ha sido encontrado' según si la condición dentro de los paréntesis de &lt;code&gt;EXISTS&lt;/code&gt; es true o falsa.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;WHILE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;-- x = 396&lt;/span&gt;
        &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;

&lt;span class="n"&gt;WHILE&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;LOOP&lt;/span&gt;
&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'Vuelta # %'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Salida esperada:&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 0&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 1&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 2&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 3&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 4&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 5&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 6&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 7&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 8&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 9&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 10&lt;/span&gt;
&lt;span class="c1"&gt;-- ...&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 393&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 394&lt;/span&gt;
&lt;span class="c1"&gt;-- NOTICE:  Vuelta # 395&lt;/span&gt;
&lt;span class="c1"&gt;-- DO&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;CASE&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Spain'&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Vuelo con Escalas'&lt;/span&gt;
     &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Turkey'&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Vuelo Retrasado'&lt;/span&gt;
     &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="s1"&gt;'Vuelo Normal'&lt;/span&gt;
    &lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;travel_status&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;precios&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Salida esperada:&lt;/span&gt;
&lt;span class="c1"&gt;-- pais     precio   travel_status&lt;/span&gt;
&lt;span class="c1"&gt;-- Turkey   $89.28   Vuelo con Escalas&lt;/span&gt;
&lt;span class="c1"&gt;-- Spain    $9.87    Vuelo Retrasado&lt;/span&gt;
&lt;span class="c1"&gt;-- Brazil   $95.24   Vuelo Normal&lt;/span&gt;
&lt;span class="c1"&gt;-- Italy    $12.22   Vuelo Normal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;EXPORTAR IMPORTAR BASE DE DATOS PGADMIN4&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;EXPORTAR&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Click derecho en la base de datos &amp;gt; &lt;code&gt;Backup...&lt;/code&gt; &amp;gt; Elegimos una dirección donde se guardara el backup &amp;gt; &lt;code&gt;Role name&lt;/code&gt;: &lt;code&gt;postgres&lt;/code&gt; &amp;gt; Y para terminar le damos al botón: &lt;code&gt;Backup&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;IMPORTAR&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Click derecho en &lt;code&gt;Databases&lt;/code&gt; &amp;gt; &lt;code&gt;Create&lt;/code&gt; &amp;gt; &lt;code&gt;Database...&lt;/code&gt; &amp;gt; Le damos un nombre &amp;gt; Finalizamos la creación con &lt;code&gt;Save&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;Click izquierdo en la nueva base de datos que creamos y luego click derecho &amp;gt; &lt;code&gt;Restore...&lt;/code&gt; &amp;gt; En la fila de &lt;code&gt;Filename&lt;/code&gt; le damos a los tres puntitos (&lt;code&gt;...&lt;/code&gt;) para elegir el archivo que queremos importar &amp;gt; Para poder ver el archivo hay que cambiar el &lt;code&gt;Format&lt;/code&gt; a &lt;code&gt;sql&lt;/code&gt; &amp;gt; Seleccionamos el archivo de extensión &lt;code&gt;.sql&lt;/code&gt; &amp;gt; Seleccionamos en &lt;code&gt;Role name&lt;/code&gt;: &lt;code&gt;postgres&lt;/code&gt; &amp;gt; Y para terminar le damos al botón: &lt;code&gt;Restore&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;EXPORTAR IMPORTAR UNA TABLA A CSV&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;EXPORTAR&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Click derecho a la tabla &amp;gt; &lt;code&gt;Import/Export...&lt;/code&gt; &amp;gt; Le damos click en los tres puntitos (&lt;code&gt;...&lt;/code&gt;) para ubicar donde se va a guardar el archivo exportado &amp;gt; &lt;code&gt;Format&lt;/code&gt;: &lt;code&gt;csv&lt;/code&gt; &amp;gt; &lt;code&gt;Header&lt;/code&gt;: &lt;code&gt;Yes&lt;/code&gt; &amp;gt; &lt;code&gt;Delimiter&lt;/code&gt;: &lt;code&gt;,&lt;/code&gt; &amp;gt; Para finalizar le damos al botón  &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;IMPORTAR&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Click derecho a la tabla &amp;gt; &lt;code&gt;Import/Export...&lt;/code&gt; &amp;gt; Cambiamos a importar en &lt;code&gt;Import/Export&lt;/code&gt;: &lt;code&gt;Import&lt;/code&gt; &amp;gt; Seleccionamos el archivo con los tres puntitos (&lt;code&gt;...&lt;/code&gt;) &amp;gt; &lt;code&gt;Format&lt;/code&gt;: &lt;code&gt;csv&lt;/code&gt; &amp;gt; &lt;code&gt;Delimiter&lt;/code&gt;: &lt;code&gt;,&lt;/code&gt; &amp;gt; Para finalizar le damos al botón  &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CURSOR&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Es una variable donde vamos a guardar el contenido de una registro resultado de una consulta&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt;
    &lt;span class="n"&gt;registro&lt;/span&gt; &lt;span class="n"&gt;Record&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;cur_precios&lt;/span&gt; &lt;span class="k"&gt;CURSOR&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;

&lt;span class="k"&gt;OPEN&lt;/span&gt; &lt;span class="n"&gt;cur_precios&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;FETCH&lt;/span&gt; &lt;span class="n"&gt;cur_precios&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'Pais: % , Precio: %'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;PLPGSQL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos un &lt;code&gt;cursor&lt;/code&gt; llamado &lt;code&gt;cur_precios&lt;/code&gt; que consulta las columnas de la tabla &lt;code&gt;precios&lt;/code&gt; ordenados por la columna &lt;code&gt;pais&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Abrimos el &lt;code&gt;cursor&lt;/code&gt; y luego hacemos un &lt;code&gt;FETCH&lt;/code&gt; para insertar un registro de &lt;code&gt;cur_precios&lt;/code&gt; dentro de la variable &lt;code&gt;registro&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Por último damos una noticia de cuanto vale &lt;code&gt;registro.pais&lt;/code&gt; y &lt;code&gt;registro.precio&lt;/code&gt; cada vez que ejecutemos este script.&lt;/p&gt;

&lt;p&gt;Al ejecutar el script va a insertar un registro a la tabla &lt;code&gt;registro&lt;/code&gt;, hasta que el &lt;code&gt;cursor&lt;/code&gt; no tenga registros a que apuntar en &lt;code&gt;cur_precios&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Cabe destacar que el &lt;code&gt;FETCH&lt;/code&gt; va haciendo que el &lt;code&gt;CURSOR&lt;/code&gt; vaya apuntando al siguiente registro dentro de &lt;code&gt;cur_precios&lt;/code&gt;. Si hacemos dos &lt;code&gt;FETCH&lt;/code&gt; seguidos va a correr el primer &lt;code&gt;FETCH&lt;/code&gt;, se guarda un registro dentro de &lt;code&gt;registro&lt;/code&gt; y luego va a correr el segundo &lt;code&gt;FETCH&lt;/code&gt; con el registro que le sigue al primero dentro de &lt;code&gt;cur_precios&lt;/code&gt; para guardarlo dentro de &lt;code&gt;registro&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CURSOR CON WHILE&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt;
    &lt;span class="n"&gt;registro&lt;/span&gt; &lt;span class="n"&gt;Record&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;cur_precios&lt;/span&gt; &lt;span class="k"&gt;CURSOR&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;

&lt;span class="k"&gt;OPEN&lt;/span&gt; &lt;span class="n"&gt;cur_precios&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Mientras que encuentre registros el WHILE va a seguir funcionando.&lt;/span&gt;
&lt;span class="c1"&gt;-- Cuando no encuentre registros el WHILE va a terminar.&lt;/span&gt;
&lt;span class="n"&gt;WHILE&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;FOUND&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;
&lt;span class="k"&gt;FETCH&lt;/span&gt; &lt;span class="n"&gt;cur_precios&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'Pais: % , Precio: %'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;PLPGSQL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El script esta vez toma todos los registros dentro del &lt;code&gt;cursor&lt;/code&gt; &lt;code&gt;cur_precios&lt;/code&gt; y los inserta dentro de la tabla &lt;code&gt;registro&lt;/code&gt;.&lt;br&gt;
El script se detiene solo, ya que el  &lt;code&gt;WHILE&lt;/code&gt; se va a detener cuando el &lt;code&gt;cursor&lt;/code&gt; no tenga registros a que apuntar dentro de &lt;code&gt;cur_precios&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CURSOR CON FOR&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt;
    &lt;span class="n"&gt;registro&lt;/span&gt; &lt;span class="n"&gt;Record&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;cur_precios&lt;/span&gt; &lt;span class="k"&gt;CURSOR&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;precios&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;

&lt;span class="c1"&gt;-- Por cada registro dentro de 'cur_precios' lo guarde dentro de 'registro'&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="n"&gt;cur_precios&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;
&lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'Pais: % , Precio: %'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pais&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;registro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;END&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;PLPGSQL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con FOR no hace falta abrir el cursor. Hace lo mismo que el WHILE pero en forma más resumida.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>pgadmin4</category>
      <category>database</category>
    </item>
    <item>
      <title>Vim y no morir en el intento</title>
      <dc:creator>Alonso Pablo</dc:creator>
      <pubDate>Wed, 20 Oct 2021 15:26:57 +0000</pubDate>
      <link>https://dev.to/alonsopablo/vim-y-no-morir-en-el-intento-2ep5</link>
      <guid>https://dev.to/alonsopablo/vim-y-no-morir-en-el-intento-2ep5</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jsot1ern76h8t6z806m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jsot1ern76h8t6z806m.png" alt="Welcome"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Modo: NORMAL 🕹
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ESC&lt;/code&gt;: Sale del modo 'Insert'/'Inserción' para introducir comandos&lt;br&gt;
&lt;code&gt;.&lt;/code&gt;: Repite el último comando ingresado&lt;/p&gt;

&lt;h4&gt;
  
  
  💾 Archivo:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;:w&lt;/code&gt;: Guarda el archivo (no cierra)&lt;br&gt;
&lt;code&gt;:wq!&lt;/code&gt;: Guarda y cierra el archivo&lt;br&gt;
&lt;code&gt;:x!&lt;/code&gt;: Guarda y cierra el archivo&lt;br&gt;
&lt;code&gt;:q!&lt;/code&gt;: Cierra el archivo sin preguntar&lt;/p&gt;

&lt;h4&gt;
  
  
  ♻ Movimientos:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;h&lt;/code&gt;: Mueve el cursor un carácter a la izquierda&lt;br&gt;
&lt;code&gt;l&lt;/code&gt;: Mueve el cursor un carácter a la derecha&lt;br&gt;
&lt;code&gt;j&lt;/code&gt;: Mueve el cursor a la línea inferior/abajo&lt;br&gt;
&lt;code&gt;k&lt;/code&gt;: Mueve el cursor a la línea superior/arriba&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;h&lt;/code&gt;: Mueve el cursor a la primera línea que se ve en la pantalla&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;l&lt;/code&gt;: Mueve el cursor a la última línea que se ve en la pantalla&lt;/p&gt;

&lt;p&gt;&lt;code&gt;w&lt;/code&gt;: El cursor avanza hacia la primera letra de la siguiente 'palabra'&lt;br&gt;
&lt;code&gt;b&lt;/code&gt;: El cursor retrocede y se sitúa en la primera letra de la palabra anterior&lt;br&gt;
&lt;code&gt;o&lt;/code&gt;: El cursor se sitúa en la línea siguiente/inferior a donde esté y entramos en modo Inserción/Insert&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;o&lt;/code&gt;: El cursor se sitúa en la línea anterior/superior a donde esté&lt;/p&gt;

&lt;h4&gt;
  
  
  🏗 Edición:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;dd&lt;/code&gt;: Cortamos la línea completa donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;dw&lt;/code&gt;: Cortamos la palabra desde donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;dl&lt;/code&gt;: cortamos la siguiente letra desde donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;yy&lt;/code&gt;: Copiamos la línea completa donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;d&amp;lt;número&amp;gt;d&lt;/code&gt; || &lt;code&gt;d&amp;lt;número&amp;gt;w&lt;/code&gt; || &lt;code&gt;y&amp;lt;número&amp;gt;y&lt;/code&gt;: Copiamos o Cortamos la cantidad de líneas que pongamos entre las letras. Ejemplo: &lt;code&gt;d5d&lt;/code&gt;, &lt;code&gt;d7w&lt;/code&gt; o &lt;code&gt;y6y&lt;/code&gt;&lt;br&gt;
&lt;code&gt;p&lt;/code&gt;: Pegamos lo que hayamos 'copiado' o 'cortado' 1 carácter después de donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;r&lt;/code&gt;: Entra en modo inserción/reemplazar para que reemplacemos la letra donde se encuentra el cursor y luego vuelve al modo 'Normal' (salimos con la tecla: 'ESC')&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;r&lt;/code&gt;: Entramos en modo inserción/reemplazar para que reemplacemos desde la letra donde se encuentra el cursor (salimos con la tecla: 'ESC')&lt;br&gt;
&lt;code&gt;x&lt;/code&gt;: Borra el carácter anterior a donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;x&lt;/code&gt;: Borra el carácter siguiente a donde se encuentra el cursor&lt;/p&gt;

&lt;p&gt;&lt;code&gt;u&lt;/code&gt;: Deshacemos los últimos cambios&lt;br&gt;
&lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;r&lt;/code&gt;: Rehacemos los últimos cambios&lt;/p&gt;

&lt;h3&gt;
  
  
  Modo: INSERCIÓN 📝
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;i&lt;/code&gt; || &lt;code&gt;Insert&lt;/code&gt;: Entramos en modo de inserción y podemos insertar texto en donde se encontraba el cursor&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;i&lt;/code&gt;: Entramos en modo de inserción y podemos insertar texto al inicio de la línea donde se encontraba el cursor&lt;/p&gt;

&lt;h3&gt;
  
  
  Modo: VISUAL 📑
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;v&lt;/code&gt;: Entramos en modo visual, para seleccionar texto&lt;br&gt;
&lt;code&gt;gg&lt;/code&gt;: Mueve el cursor al principio del archivo&lt;br&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;g&lt;/code&gt;: Mueve el cursor al final del archivo&lt;br&gt;
&lt;code&gt;&amp;gt;&lt;/code&gt; || &lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;.&lt;/code&gt;: Indenta las líneas previamente seleccionadas.&lt;br&gt;
&lt;code&gt;d&lt;/code&gt;: Cortamos el texto seleccionado&lt;br&gt;
&lt;code&gt;y&lt;/code&gt;: Copiamos el texto seleccionado&lt;br&gt;
&lt;code&gt;p&lt;/code&gt;: Pegamos lo que hayamos 'copiado' o 'cortado' 1 carácter después de donde se encuentra el cursor&lt;br&gt;
&lt;code&gt;/&amp;lt;texto&amp;gt;&lt;/code&gt;: Busca el  introducido&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;n&lt;/code&gt;: Mueve el cursor a la próxima ocurrencia encontrada en el archivo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;n&lt;/code&gt;: Mueve el cursor a la anterior ocurrencia&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vim</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Tmux</title>
      <dc:creator>Alonso Pablo</dc:creator>
      <pubDate>Wed, 20 Oct 2021 15:25:12 +0000</pubDate>
      <link>https://dev.to/alonsopablo/tmux-2gff</link>
      <guid>https://dev.to/alonsopablo/tmux-2gff</guid>
      <description>&lt;h3&gt;
  
  
  Antes que nada necesitamos instalar y luego abrir Tmux:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo apt-get install tmux&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tmux&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  "Atajo principal"
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;b&lt;/code&gt;: Activamos por unos segundos la escucha de Tmux de comandos/atajos. Inmediatamente podemos intentar ejecutar los siguientes "sub-atajos":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;.&lt;/code&gt;: (esto es para teclado inglés o para otros teclados la combinación de teclas tiene que resultar en un: &lt;code&gt;&amp;gt;&lt;/code&gt;) Este comando nos permite abrir un menú con opciones como:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Horizontal Split (h)
Vertical Split (v)
---
Swap Up (u)
Swap Down (d)
Swap Marked
---
Kill (x)
Respawn (r)
Mark (m)
Zoom (z)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Arrow left&lt;/code&gt;: Para ir a la consola de la izquierda.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Arrow right&lt;/code&gt;: Para ir a la consola de la derecha.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Arrow up&lt;/code&gt;: Para ir a la consola de arriba.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Arrow down&lt;/code&gt;: Para ir a la consola de abajo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;x&lt;/code&gt;: Cerramos la consola en la que esté el cursor, nos pedirá confirmación y tendremos que apretar &lt;code&gt;y&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;c&lt;/code&gt;: Abrimos una nueva consola tmux ocupando todo espacio de la Shell.&lt;br&gt;
Para movernos entre ventanas abiertas podemos utilizar:&lt;br&gt;
-&lt;code&gt;n&lt;/code&gt;: Nos movemos a la siguiente ventana.&lt;br&gt;
-&lt;code&gt;p&lt;/code&gt;: Nos movemos a la anterior ventana.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Cambiar el atajo principal:
&lt;/h3&gt;

&lt;p&gt;Si queremos cambiar el atajo principal (&lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;b&lt;/code&gt;) por otro tendremos que ir a:&lt;br&gt;
&lt;code&gt;/etc/tmux.conf&lt;/code&gt;: Para que el comando se aplique a todos los usuarios del sistema.&lt;br&gt;
&lt;code&gt;~/.tmux.conf&lt;/code&gt;: Para que el comando se aplique a algunos usuarios.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si no existen los archivos hay que crearlos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En el siguiente ejemplo reemplazo &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;b&lt;/code&gt; por &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;a&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;unbind C-b
set -g prefix C-a
bind C-a send-prefix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>tmux</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
