Intro a SQL (Structured Query Language) Lenguaje de Consulta Estructurado.
En este artículo llevaremos una pequeña introducción a SQL (Lenguaje de Consulta Estructurado) qué en sí se supone es un standard tanto para definir, crear, manipular, procesar y extraer datos, en SQL existen dos tipos de sentencias, las cuáles son:
DML: Data Manipulation Language <== Lenguaje de manipulación de Datos
DDL: Data Definition Language <== Lenguaje de Definición de Datos
Dentro de las DML se encuentran las sentencias:
SELECT, INSERT, DELETE y UPDATE
Básicamente las DML son para extraer Datos y en cierto modo modificarlos, pero no se meten con la estructura y diseño de la base de datos ni de los objetos, es decir, puedo modificar los registros de la tabla, pero no puedo cambiar el tipo de datos que acepta el campo.
Las DDL son para definir la estructura de la Base de Datos, estas sentencias sí modifican su diseño, dentro de estas sentencias se encuentran:
CREATE, DROP y ALTER
Como ya lo mencioné antes SQL es un lenguaje standard para la definición, creación, manipulación y extracción de datos, aunque hoy en día tiene algunas variantes, esto dependiendo del DBMS (Sistema Manejador de Base de Datos) que estés utilizando, claro ejemplo para consultar las bases de datos que existen en MySQL la sentencia es:
SHOW databases;
Y en SQL Server (Windows) si ejecutas esa consulta te va arrojar un error ya que no existe, por lo tanto una opción es ejecutar un procedimiento almacenado para ver la bases de datos.
EXEC sp_databases
Bueno en esta ocación vamos a trabajar con SQL Server Express 2012 y su herramienta gráfica SQL Management Studio en la cuál podemos conectarnos al servidor de base de datos de manera gráfica, y administrarlo. Ingresamos a la siguiente página: http://www.microsoft.com/en-us/download/details.aspx?id=29062
Procedemos a bajar SQL Server, seleccionamos ENU\x86\SQLEXPRWT_x86_ENU.exe , explico un poco:
ENU\x86\SQLEXPRADV_x86_ENU.exe <== SQL Server Express Advantage - Contiene el Servidor de base de datos, SQL Management Studio, Reporting Services e Information Services, digamos que es la versión Express más completa.
ENU\x86\SQLEXPRWT_x86_ENU.exe <== SQL Server Express with Tools - Contiene el Servidor de base de datos y la herramienta SQL Management Studio.
ENU\x86\SQLEXPR_x86_ENU.exe <== SQL Server Express - Contiene únicamente el instalador del Servidor de Base de datos, si se desea utilizar SQL Management Studio se debe descargar e instalar aparte.
ENU\x86\SQLManagementStudio_x86_ENU.exe <== SQL Management Studio - Contiene únicamente el instalador de la herramieta gráfica, es necesario descargar el instalador del servidor e instalar de igual forma, de lo contrario no funcionrá correctamente.
Bajamos el instalador como se muestra en la imágen dependiendo de la arquitectura de tu equipo, ya sea de 32 ó 64 Bits, en mi caso, descargo el de 32bits SQL Server Express 2012 with Tools.

ENU\x86\SQLEXPRADV_x86_ENU.exe <== SQL Server Express Advantage - Contiene el Servidor de base de datos, SQL Management Studio, Reporting Services e Information Services, digamos que es la versión Express más completa.
ENU\x86\SQLEXPRWT_x86_ENU.exe <== SQL Server Express with Tools - Contiene el Servidor de base de datos y la herramienta SQL Management Studio.
ENU\x86\SQLEXPR_x86_ENU.exe <== SQL Server Express - Contiene únicamente el instalador del Servidor de Base de datos, si se desea utilizar SQL Management Studio se debe descargar e instalar aparte.
ENU\x86\SQLManagementStudio_x86_ENU.exe <== SQL Management Studio - Contiene únicamente el instalador de la herramieta gráfica, es necesario descargar el instalador del servidor e instalar de igual forma, de lo contrario no funcionrá correctamente.
Bajamos el instalador como se muestra en la imágen dependiendo de la arquitectura de tu equipo, ya sea de 32 ó 64 Bits, en mi caso, descargo el de 32bits SQL Server Express 2012 with Tools.

Una vez descargado en nuestro equipo lo ejecutamos y abrirá la ventana del asistente de instalación.

Seleccionamos "New SQL Server stand-alone installation or add features to an existing installation", esto es para instalar un nuevo servidor de base de datos o agregar nuevas opciones a una instalación existente. En nuestro caso será una instalación nueva. esperamos a que cargue, aceptamos los términos de licencia para continuar.

La siguiente ventana nos muestra las actualizaciones que están disponibles para la instalación, podemos elegir instalarlas o no, ya sea seleccionando o quitando la paloma, lo más recomendable es aceptar las actualizaciones que hay disponibles para la instalación y continuar.


Seleccionamos "New SQL Server stand-alone installation or add features to an existing installation", esto es para instalar un nuevo servidor de base de datos o agregar nuevas opciones a una instalación existente. En nuestro caso será una instalación nueva. esperamos a que cargue, aceptamos los términos de licencia para continuar.

La siguiente ventana nos muestra las actualizaciones que están disponibles para la instalación, podemos elegir instalarlas o no, ya sea seleccionando o quitando la paloma, lo más recomendable es aceptar las actualizaciones que hay disponibles para la instalación y continuar.

Después de dar unos clicks en "Next" mostrará esta pantalla donde seleccionaremos los componentes a instalar, en este caso recomiendo seleccionar todos y continuar. en la parte de abajo podemos seleccionar el directorio donde será instalado el Servidor.

La siguiente ventana es la configuración de la Instancia, como su nombre y directorio, podemos seleccionar "Default Instance" o seleccionar "Named Instance" donde podemos elegir el nombre de la instancia y el directorio, lo más recomendable es dejar todo como está y si le cambian el nombre a la instancia debe de ser sin espacios, ya que si ingresan un espacio como en la imagen, mandará un mensaje de error que no es válido el nombre para la instancia. Presionamos "Next" y continuamos.

Ahora va la configuración del motor de la base de datos, el motor de base de datos es donde se van a definir, crear, guardar, manipular los datos, así como guardar nuestras bases de datos y mantener un acceso controlado a los usuarios, aquí en la primera pestaña podemos tanto agregar o quitar los administradores del motor, también ofrece la opción de seleccionar la autenticación, esto más que nada es el "login" lo más recomendables es seleccionar "Mixed Mode".
Mixe Mode <== Su característica es que puedes utilizar diferentes usuarios para accesar a la base de datos, uno de ellos es (sa) [system administrator] donde debes de generar una contraseña para esta cuenta o la cuenta de login de Windows.
Windows Autenticación <== Te ofrece la oportunidad de conectarte con la cuenta actual u otra distinta a las creadas bajo el sistema operativo windows.
En este caso seleccionamos "Mixed Mode" para poder conectarnos con cuentas distintas a las de windows, creamos una contraseña para la cuenta del sysadmin y a consideración de cada quién podemos agregar o quitar aministradores con los botones "Add" o "Remove" si deseamos agregar nuestra cuenta de windows como administrador del motor, basta con seleccionar la opción "Add Current User"

La siguiente pestaña "Data Directories" aquí podemos seleccionar la ruta donde serán almacenadas nuestras bases de datos, bases de datos y objetos temporales, los "log's" y las copias de seguridad.

Al terminar presionamos el botón "Next" para que con las opciones seleccionadas comience la instalación del Servidor. Al instalar aparecerá una pantalla como la siguiente:

Una vez finalizada la instalación, si todo se hizo correctamente aparecerá el log de instalación donde indicará que todo ah sido instalado satisfactoriamente sin ningún problema. Presionamos el borón "Close" para salir del instalador.


La siguiente ventana es la configuración de la Instancia, como su nombre y directorio, podemos seleccionar "Default Instance" o seleccionar "Named Instance" donde podemos elegir el nombre de la instancia y el directorio, lo más recomendable es dejar todo como está y si le cambian el nombre a la instancia debe de ser sin espacios, ya que si ingresan un espacio como en la imagen, mandará un mensaje de error que no es válido el nombre para la instancia. Presionamos "Next" y continuamos.

Ahora va la configuración del motor de la base de datos, el motor de base de datos es donde se van a definir, crear, guardar, manipular los datos, así como guardar nuestras bases de datos y mantener un acceso controlado a los usuarios, aquí en la primera pestaña podemos tanto agregar o quitar los administradores del motor, también ofrece la opción de seleccionar la autenticación, esto más que nada es el "login" lo más recomendables es seleccionar "Mixed Mode".
Mixe Mode <== Su característica es que puedes utilizar diferentes usuarios para accesar a la base de datos, uno de ellos es (sa) [system administrator] donde debes de generar una contraseña para esta cuenta o la cuenta de login de Windows.
Windows Autenticación <== Te ofrece la oportunidad de conectarte con la cuenta actual u otra distinta a las creadas bajo el sistema operativo windows.
En este caso seleccionamos "Mixed Mode" para poder conectarnos con cuentas distintas a las de windows, creamos una contraseña para la cuenta del sysadmin y a consideración de cada quién podemos agregar o quitar aministradores con los botones "Add" o "Remove" si deseamos agregar nuestra cuenta de windows como administrador del motor, basta con seleccionar la opción "Add Current User"

La siguiente pestaña "Data Directories" aquí podemos seleccionar la ruta donde serán almacenadas nuestras bases de datos, bases de datos y objetos temporales, los "log's" y las copias de seguridad.

Al terminar presionamos el botón "Next" para que con las opciones seleccionadas comience la instalación del Servidor. Al instalar aparecerá una pantalla como la siguiente:

Una vez finalizada la instalación, si todo se hizo correctamente aparecerá el log de instalación donde indicará que todo ah sido instalado satisfactoriamente sin ningún problema. Presionamos el borón "Close" para salir del instalador.

Ahora que ya se encuentra instalado tanto el Servidor como las herramientas, vamos al menú de inicio de Windows y buscamos el ícono "SQL Server Management Studio" y lo ejecutamos, empezará a cargar y al final abrirá una ventana como la siguiente donde vamos a elegir el tipo de Autenticación (conexión) y el usuario que se va a "loguear" dentro del servidor, sí seleccionamos nuestra cuenta de windows como sysadmin, basta con seleccionar en Autentication "Windows Autentication" y presionar el botón de "Connect" para ingresar, o seleccionar "SQL Server Autentication" e ingresar el usuario que creamos o por defecto el usuario "sa" y su contraseña.

Después de "loguearnos en el servidor, seleccionamos en la barra de herramientas la opción "New Query" y deberá aparecernos una pantalla como la siguiente, donde del lado izquierdo nos muestra el explorador de objetos, en medio es donde vamos a ejecutar nuestros scripts y del lado derecho muestra infomación del usuario, servidor, tipo de conexión, etc.

En el explorador de objetos podemos ver las bases de datos a las que tenemos acceso, una carpeta de seguridad que nos muestra los usuarios que tienen acceso al sistema de base de datos y los grupos disponibles a los que pueden pertenecer, así como una carpeta de objetos del servidor donde se pueden ver los triggers (disparadores) y la carpeta Management (Administración) donde las cosas que destacan es el "log" (archivos donde queda registrado todo lo que se hace en la base de datos, desde accesos y consultas realizadas por los usuarios (todo queda registrado en el log).
El explorador de objetos puede variar dependiendo del Rol del usuario que se encuentre conectado, en este caso como estoy logueado como administrador me aparecen esas opciones, pero puede variar, dependiendo de los permisos que tenga el usuario.
Las bases de datos por "default" que se instalan en SQL Server Express son las siguientes:
master <== En esta base de datos está guardada toda la información y configuración de nuestro motor de base de datos, si por algún motivo esta llega a faltar no se podrá ejecutar correctamente el motor de base de datos.
model <== Esta es la base de datos "modelo" digamos que es una plantilla que se utiliza cada que creas un base de datos esta se crea de manera idéntica a como se encuentra la base "model" cualquier modificación que se la haga a "model" influirá también en la creación de las nuevas bases de datos que diseñe el usuario ya que esta funciona como plantilla de creación.
msdb <== La neta no se para que sirve esta base de datos xD
tempdb <== En esta base de datos se guardan los objetos como tablas, procedimientos almacenados, disparadores temporales, etc. Cada que cierra la conexión del usuario que creó objetos temporales y se vuelve a conectar, se borra la base temp y se crea una nueva, digamos que funciona como una tipo "memoria caché" de objetos temporales creados.

Bueno ahora que estamos un "poquitito" más familiarizados con el entorno de trabajo, vamos a crear una base de datos de prueba, hay dos formas de hacerlo; 1.- desde el explorador de objetos y 2.-desde un script.
Para crearla desde el explorador de objetos basta tan solo posicionarnos sobre la carpeta "System Databases", presionar click derecho y seleccionar la opción "New Database..."

Cuando seleccionamos la opción "New Database.." nos abrirá una ventana como la siguiente donde en la pestaña "General" podemos ingresar el nombre de nuestra base de datos, así como el propietario ("owner"), el cuál puede tener permisos especiales sobre los demás usuarios que se conecten a la base de datos. También podemos seleccionar la ruta donde deseamos que sea guardada la base y su log. Así como seleccionar cuánto se va a incrementar cada vez (tanto la base como el log).

Al presionar sobre el botón de "..." en la opción "Autogrowth/Maxsize" (autoincremento/tamaño máximo) aparece una pequeña ventana donde podemos elegir si deseamos que siga creciendo ilimitadamente o establecer un límite de crecimiento, así como cuánto se va a incrementar cada vez la base de datos, estos datos se pueden fijar tanto en Megabytes como en porcentaje.

En la pestaña de "Options" las opciones más importantes son las de compatibilidad, donde al presionar sobre la opción nos muestra la compatibilidad con otros motores de bases de datos, al número más grande, en este caso supone que es mayor la compatibilidad, mientras menor sea el número muestra que no es tan compatible. En este caso:
SQL Server 2012 (110) <== Significa que por obvias razones la base de datos es completamente compatible con motores de bases de datos 2012
SQL Server 2010 (100) <== Significa que también es compatible con un motor de versioón anterior, en este caso 2008, pero probablemente algunas características no lo sean.
SQL Server 2005 (90) <== No es totalmente compatible con motores SQL Server 2005


Después de "loguearnos en el servidor, seleccionamos en la barra de herramientas la opción "New Query" y deberá aparecernos una pantalla como la siguiente, donde del lado izquierdo nos muestra el explorador de objetos, en medio es donde vamos a ejecutar nuestros scripts y del lado derecho muestra infomación del usuario, servidor, tipo de conexión, etc.

En el explorador de objetos podemos ver las bases de datos a las que tenemos acceso, una carpeta de seguridad que nos muestra los usuarios que tienen acceso al sistema de base de datos y los grupos disponibles a los que pueden pertenecer, así como una carpeta de objetos del servidor donde se pueden ver los triggers (disparadores) y la carpeta Management (Administración) donde las cosas que destacan es el "log" (archivos donde queda registrado todo lo que se hace en la base de datos, desde accesos y consultas realizadas por los usuarios (todo queda registrado en el log).
El explorador de objetos puede variar dependiendo del Rol del usuario que se encuentre conectado, en este caso como estoy logueado como administrador me aparecen esas opciones, pero puede variar, dependiendo de los permisos que tenga el usuario.
Las bases de datos por "default" que se instalan en SQL Server Express son las siguientes:
master <== En esta base de datos está guardada toda la información y configuración de nuestro motor de base de datos, si por algún motivo esta llega a faltar no se podrá ejecutar correctamente el motor de base de datos.
model <== Esta es la base de datos "modelo" digamos que es una plantilla que se utiliza cada que creas un base de datos esta se crea de manera idéntica a como se encuentra la base "model" cualquier modificación que se la haga a "model" influirá también en la creación de las nuevas bases de datos que diseñe el usuario ya que esta funciona como plantilla de creación.
msdb <== La neta no se para que sirve esta base de datos xD
tempdb <== En esta base de datos se guardan los objetos como tablas, procedimientos almacenados, disparadores temporales, etc. Cada que cierra la conexión del usuario que creó objetos temporales y se vuelve a conectar, se borra la base temp y se crea una nueva, digamos que funciona como una tipo "memoria caché" de objetos temporales creados.

Bueno ahora que estamos un "poquitito" más familiarizados con el entorno de trabajo, vamos a crear una base de datos de prueba, hay dos formas de hacerlo; 1.- desde el explorador de objetos y 2.-desde un script.
Para crearla desde el explorador de objetos basta tan solo posicionarnos sobre la carpeta "System Databases", presionar click derecho y seleccionar la opción "New Database..."

Cuando seleccionamos la opción "New Database.." nos abrirá una ventana como la siguiente donde en la pestaña "General" podemos ingresar el nombre de nuestra base de datos, así como el propietario ("owner"), el cuál puede tener permisos especiales sobre los demás usuarios que se conecten a la base de datos. También podemos seleccionar la ruta donde deseamos que sea guardada la base y su log. Así como seleccionar cuánto se va a incrementar cada vez (tanto la base como el log).

Al presionar sobre el botón de "..." en la opción "Autogrowth/Maxsize" (autoincremento/tamaño máximo) aparece una pequeña ventana donde podemos elegir si deseamos que siga creciendo ilimitadamente o establecer un límite de crecimiento, así como cuánto se va a incrementar cada vez la base de datos, estos datos se pueden fijar tanto en Megabytes como en porcentaje.

En la pestaña de "Options" las opciones más importantes son las de compatibilidad, donde al presionar sobre la opción nos muestra la compatibilidad con otros motores de bases de datos, al número más grande, en este caso supone que es mayor la compatibilidad, mientras menor sea el número muestra que no es tan compatible. En este caso:
SQL Server 2012 (110) <== Significa que por obvias razones la base de datos es completamente compatible con motores de bases de datos 2012
SQL Server 2010 (100) <== Significa que también es compatible con un motor de versioón anterior, en este caso 2008, pero probablemente algunas características no lo sean.
SQL Server 2005 (90) <== No es totalmente compatible con motores SQL Server 2005

La opción de "recovery" es para seleccionar el tipo de restauración en caso de restaurar la base de datos por "default" se encuentra en simple pero puede ser seleccionada la opción "Full" que es completa, y "Bulk-logged" donde la base de datos es restaurada apartir del archivo "log" de la misma, recomiendo seleccionar la opción "Full".

Cuando se terminen de configurar los parámetros deseados tan solo presionamos el botón "OK" para que sea creada la Base de Datos.
Ahora explicaré la forma de crear una base de datos mediante Transact-SQL (script). Nos posicionamos en medio, sobre el espacio en blanco. Y creamos la base de datos con un script sencillo
CREATE database Prueba

Cuando se terminen de configurar los parámetros deseados tan solo presionamos el botón "OK" para que sea creada la Base de Datos.
Ahora explicaré la forma de crear una base de datos mediante Transact-SQL (script). Nos posicionamos en medio, sobre el espacio en blanco. Y creamos la base de datos con un script sencillo
CREATE database Prueba
on
( NAME='Prueba',
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba.mdf',
SIZE=5Mb,
FILEGROWTH=1Mb
)
log on
(
NAME='Prueba_log',
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba_log.ldf',
SIZE=2Mb,
FILEGROWTH=10%
)
Donde:
CREATE database Prueba <== Estamos indicando que deseamos crear la base de datos llamada Prueba
on <== Donde..
( <==Inicio de Parámetros
NAME='Prueba' <== Nombré lógico de la base de datos
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba.mdf', <== Nombre físico de la base de datos
SIZE=5Mb <== Tamaño inicial que tendrá la base de datos
FILEGROWTH=1Mb <== Incremento que tendrá la base de datos.
) <== Fin de Parámetros
log on <== Donde el archivo log
( <== Inicio de Parámetros
NAME='Prueba_log' <== Nombré lógico del archivo log de la base de datos
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba_log.ldf', <== Nombre físico del archivo log de la base de datos
SIZE=2Mb <== Tamaño inicial que tendrá el log
FILEGROWTH=10% <== Incremento que tendrá el archivo con respecto de la base de datos
) <== Fin de Parámetros
Importante saber que tanto el nombre lógico como el físico va delimitado por comillas simples.

Al terminar nuestro script, lo seleccionamos todo y para ejecutarlo basta con presionar la tecla "F5" de nuestro teclado o presionar el botón que dice "! Execute" de la barra de herramientas, sí en la parte de abajo aparece "Query executed sucessfully." Significa que se ah ejecutado el script sin ningún problema, Ahora lo que debemos de hacer es de igual forma "refrescar" el explorador de objetos para ver la nueva base de datos creada, esto aplica para los dos métodos, tanto para cuando se crea la base desde el explorador de objetos como para el script, nos vamos al explorador de objetos, presionamos de nuevo el botón "F5 o el botón del explorador con el ícono de una "ventanita y dos flechitas verdes" para refrescarlo y podemos observar que ya se visualiza la base de datos que acabamos de crear.

Podemos eliminar las bases de datos también de dos formas, con el explorador de objetos y mediante script, para hacerlo con el explorador de objetos, nos posicionamos sobre la base de datos que deseamos eliminar, presionamos el botón derecho de nuestro mouse y seleccionamos "Delete".

( NAME='Prueba',
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba.mdf',
SIZE=5Mb,
FILEGROWTH=1Mb
)
log on
(
NAME='Prueba_log',
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba_log.ldf',
SIZE=2Mb,
FILEGROWTH=10%
)
Donde:
CREATE database Prueba <== Estamos indicando que deseamos crear la base de datos llamada Prueba
on <== Donde..
( <==Inicio de Parámetros
NAME='Prueba' <== Nombré lógico de la base de datos
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba.mdf', <== Nombre físico de la base de datos
SIZE=5Mb <== Tamaño inicial que tendrá la base de datos
FILEGROWTH=1Mb <== Incremento que tendrá la base de datos.
) <== Fin de Parámetros
log on <== Donde el archivo log
( <== Inicio de Parámetros
NAME='Prueba_log' <== Nombré lógico del archivo log de la base de datos
FILENAME='C:\Users\G31M\Documents\SQL Server Databases\Prueba_log.ldf', <== Nombre físico del archivo log de la base de datos
SIZE=2Mb <== Tamaño inicial que tendrá el log
FILEGROWTH=10% <== Incremento que tendrá el archivo con respecto de la base de datos
) <== Fin de Parámetros
Importante saber que tanto el nombre lógico como el físico va delimitado por comillas simples.

Al terminar nuestro script, lo seleccionamos todo y para ejecutarlo basta con presionar la tecla "F5" de nuestro teclado o presionar el botón que dice "! Execute" de la barra de herramientas, sí en la parte de abajo aparece "Query executed sucessfully." Significa que se ah ejecutado el script sin ningún problema, Ahora lo que debemos de hacer es de igual forma "refrescar" el explorador de objetos para ver la nueva base de datos creada, esto aplica para los dos métodos, tanto para cuando se crea la base desde el explorador de objetos como para el script, nos vamos al explorador de objetos, presionamos de nuevo el botón "F5 o el botón del explorador con el ícono de una "ventanita y dos flechitas verdes" para refrescarlo y podemos observar que ya se visualiza la base de datos que acabamos de crear.

Podemos eliminar las bases de datos también de dos formas, con el explorador de objetos y mediante script, para hacerlo con el explorador de objetos, nos posicionamos sobre la base de datos que deseamos eliminar, presionamos el botón derecho de nuestro mouse y seleccionamos "Delete".

Después de seleccionar "Delete" aparece una ventana donde lo único que debemos de hacer es confirmar la eliminación con el botón de "OK". Si observan bien en la parte de abajo de la ventana viene seleccionada por "Default" la opción para eliminar todo lo correspondiente a la base de datos, como su "Backup" (copia de seguridad, archivo, log, etc).Esta opción queda a consideración de cada usuario.

Para eliminar la base de datos mediante script es muy sencillo, tan solo ejecutamos la query:
DROP database Prueba
Donde:
DROP database Prueba <== Estamos indicándole que deseamos eliminar la base de datos llamada Prueba.
Otro ejemplo puede ser:
DROP database Productos
Estariamos indicando que deseamos eliminar la base de datos llamada Productos.


Para eliminar la base de datos mediante script es muy sencillo, tan solo ejecutamos la query:
DROP database Prueba
Donde:
DROP database Prueba <== Estamos indicándole que deseamos eliminar la base de datos llamada Prueba.
Otro ejemplo puede ser:
DROP database Productos
Estariamos indicando que deseamos eliminar la base de datos llamada Productos.

Volvemos aplicar lo mismo sea tanto eliminación con Explorador de Objetos o mediante script, refrescamos el explorador y podemos observar que ya no se encuentra la base de datos llamada Prueba dentro del explorador de objetos.

Bueno vamos a empezar con más Transact-SQL para esto vamos a utilizar la base de datos llamada Prueba anteriormente creada y para empezar a crear tablas debemos de seleccionarla, ya que hay más bases de datos en el servidor y si no seleccionamos con cuál vamos a trabajar el motor no sabrá por obvias razones donde queremos crear las tablas.
Para seleccionar una base de datos se ejecuta la Query:
USE [nombre de la base de datos]
USE Prueba
GO
Con esta sintaxis estamos indicándole al Motor de BD que deseamos utilizar la base llamada Prueba para empezar a trabajar con ella. Otro ejemplo pordía ser:
USE Clientes
GO
Estaríamos indicando que deseamos utilizar la base de datos llamada clientes.

Ya que seleccionamos la base de datos, procedemos a crear una tabla para empezar a trabajar, en este caso voy a crear la tabla pequeña de el Prof. Carlos Alberto Parrales donde voy a ingresar las Materias del semestre de Ingeniería en Computación, va a contener los siguientes campos y atributos:
idMateria int null identity (1,1) <=== Este campo va a servir para tener el número de registros en la tabla

Bueno vamos a empezar con más Transact-SQL para esto vamos a utilizar la base de datos llamada Prueba anteriormente creada y para empezar a crear tablas debemos de seleccionarla, ya que hay más bases de datos en el servidor y si no seleccionamos con cuál vamos a trabajar el motor no sabrá por obvias razones donde queremos crear las tablas.
Para seleccionar una base de datos se ejecuta la Query:
USE [nombre de la base de datos]
USE Prueba
GO
Con esta sintaxis estamos indicándole al Motor de BD que deseamos utilizar la base llamada Prueba para empezar a trabajar con ella. Otro ejemplo pordía ser:
USE Clientes
GO
Estaríamos indicando que deseamos utilizar la base de datos llamada clientes.

Ya que seleccionamos la base de datos, procedemos a crear una tabla para empezar a trabajar, en este caso voy a crear la tabla pequeña de el Prof. Carlos Alberto Parrales donde voy a ingresar las Materias del semestre de Ingeniería en Computación, va a contener los siguientes campos y atributos:
idMateria int null identity (1,1) <=== Este campo va a servir para tener el número de registros en la tabla
idMateria <=== Nombre del campo o columna.
int <=== campo de tipo entero
null <=== acepta valores nulos, es decir no hay ningún problema si al agregar un registro no se ingresa información de este campo.
identity (1,1) <=== Esto significa cada que yo ingrese un registro le va a asociar un número automáticamente, empezando desde el número 1 e incrementando en 1 cada registro, ejemplo: el primer registro que ingrese le va asignar el número 1, al segundo registro le va a incrementar 1, siento entonces el número 2, al tercer registro le va a incrementar un número, asignando entonces el número 3, etc, etc etc.
codMat int not null primary key<=== En este campo se van a registrar las claves de las materias.
codMat <== Nombre del campo o columna.
int <=== campo de tipo entero
not null <=== no permite valores nulos, es decir, forzosamente se tendrá que ingresar el dato en este campo al momento de realizar el registro
primary key <== clave primaria la cuál es utilizada como un tipo de identificación único para cada registro, no permite valores duplicados, es decir si ya tengo el registro 1109, y lo vuelvo a ingresar en este mismo campo, al momento de hacer otro registro distinto, me va a mandar error al momento de ejecutar el script.
Nombre char(30) <=== En este campo se va a registrar el nombre de las asignaturas
Nombre <=== valga la redundancia, El nombre del campo
char(30) <=== campo de tipo cadena de carácteres que almacenará hasta 30, si por algún motivo se ingresan más no mandará mensaje de error, solo que registrará únicamente hasta el caracter número 30.
null <=== acepta valores nulos
Creditos int <=== En este campo se registrarán los créditos que vale la asignatura
Creditos <=== Nombre del campo o columna
int <=== campo de tipo entero
null <=== acepta valores nulos
Calif float <=== este campo registrará la calificación final de la asignatura.
Calif <=== Nombre del campo o columna
float <=== Campo o columna de tipo real (flotante)
null <=== acepta valores nulos
Fecha_Cal date <== Este campo registrará el día en que fué registrada la calificación en el sistema.
Fecha_Cal <== Nombre del campo o columna
date <=== Campo o columna de tipo Fecha.
null <=== acepta valores nulos
Primary Key (codMat)
La primary key o llave primaria es un campo de identificación único para evitar redundancia en las bases de datos, un ejemplo, tengo una tabla de clientes, por obvias razones en esta tabla encontraré bastantes personas con el mismo nombre, la consecuencia es que al realizar alguna consulta o modificación al registro podría estar realizándolo a otra persona que no es la correcta, el atributo primary key no permite valores duplicados en los registros de la tabla, ni valores nulos, es decir forzozamente tendré que ingresar la información correspondiente al campo, puede ser utilizado con un identificador único de cada registo. En este caso una primary key podría ser el CURP de una persona ya que nunca será idéntico al de otra persona.
Existen muchos tipos de datos que se pueden definir en los campos de SQL como los siguientes:
Tipos de datos numéricos.
Bit. Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0.Tipos de datos numéricos.
Tinyint. Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0 a 255.
SmallInt. Una columna o variable de tipo smallint puede almacenar el rango de valores -32768 a 32767.
Int. Una columna o variable de tipo int puede almacenar el rango de valores -231 a 231-1 .
BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -263 a 263-1 .
Decimal(p,s). Una columna de tipo decimal puede almacenar datos numéricos decimales sin redondear. Donde p es la precision (número total del dígitos) y s la escala (número de valores decimales)
Float. Una columna de datos float puede almacenar el rango de valores -1,79x-10308 a 1,79x-10308, , si la definimos con el valor máximo de precisión. La precisión puede variar entre 1 y 53.
Real. Sinónimo de float(24). Puede almacenar el rango de valores -3,4x-1038 a 3,4x-1038,
Money. Almacena valores numéricos monetarios de -263 a 263-1, con una precisión de hasta diez milésimas de la unidad monetaria.
SmallMoney. Almacena valores numéricos monetarios de -214.748,3647 a 214.748,3647, con una precisión de hasta diez milésimas de la unidad monetaria.
Tipos de datos de carácter.
Char(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A ', ocupando los cinco bytes.
Varchar(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo varchar, únicamente se utilizan los caracteres necesarios,Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo un byte bytes.
Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.
Nchar(n). Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
Nvarchar(n). Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
Nvarchar(max). Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.
Tipos de datos de fecha.
SmallDatetime. Almacena fechas con una precisión de minuto, por lo que ocupa la mitad de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en cuenta.
TimeStamp. Se utiliza para marcar un registro con la fecha de inserción - actualización. El tipo timestamp se actualiza automáticamente cada vez que insertamos o modificamos los datos.
Tipos de datos binarios.
Binary. Se utiliza para almacenar datos binarios de longitud fija, con una longitud máxima de 8000 bytes.
Varbinary. Se utiliza para almacenar datos binarios de longitud variable, con una longitud máxima de 8000 bytes..Es muy similar a binary, salvo que varbinary utiliza menos espacio en disco.
Varbinary(max). Igual que varbinary, pero puede almacenar 231-1 bytes
Depende de cada usuario y sus necesidades seleccionar alguno de todos estos tipos de datos para tomarlos como atributos de los campos.
Bueno pues el script para crear la tabla quedaría de la siguiente manera:
CREATE TABLE Primer_Semestre
(
idMat int identity (1,1),
codMat int,
Nombre char(30),
Creditos int,
Calif float,
Fecha_Calif date,
PRIMARY KEY (codMat)
)
Recordando que todas las características de la tabla van dentro de un paréntisis, no olvidar cerrarlo, y separar los campos por una coma, a final de cuentas es como cuando declaramos una función en lenguaje C.

Al terminar seleccionamos todo el código del script y lo ejecutamos con "F5", en la parte de abajo si hicimos todo bien deberá aperecer la palomita de color verde y la leyenda "Query executed successfully", En todas las consultas que realizemos de ahora en adelante si las ejecutamos correctamente debe de aparecer esta leyenda. Ahora para validar que efectivamente se creó nuestra tabla ejecutamos una búsqueda con el sysobjects.
SELECT * FROM sysobjects WHERE xtype='U'
Donde:
SELECT * <== Estamos indicando que deseamos que nos muestre todos los campos (recordar que el * es un comodín el cuál sirve para indicar TODOS los campos, puede ser sustituido por los nombres de los campos que deseamos nos aparezcan en la consulta)
FROM sysobjects <=== va a buscar en el administrador de objetos (sysobjects)
WHERE xtype='U' <=== Donde "WHERE" es la condición, en este caso estamos pidiendo que nos muestre todos los registros de objetos que sean del tipo U (tablas). En la imagen de abajo podemos validar que nos devuelve un resultado y efectivamente es la tabla que acabamos de crear llamada Primer_Semestre.

También podemos "refrescar" el explorador de objetos y presionar en el botón de "+" en la base de datos "Prueba" para que despliegue un menú con todos sus objetos, seleccionamos la carpeta "Tables" volvemos a presionar el botón "+" y podremos observer que aparece la tabla que acabamos de crear.
Ahora explicaré la forma de crear una tabla de manera más gráfica, en el explorador de objetos nos vamos a la base Prueba, presionamos el botón "+", luego nos posicionamos sobre la carpeta "Tables" y ahí presionamos click derecho del mouse, seleccionamos la opción "New Table..."

Después de seleccionar "New Table.." en la parte donde se ajecutan los scripts nos aparecerá lo siguiente donde:
"Column name" <=== Nombre de nuestros campos o columnas
"Data type" <== Tipo de datos que va aceptar nuestro campo
"Allow nulls" <== Si seleccionamos esta opción nuestra columna va aceptar valores nulos, si no seleccionamos esta opción no aceptará valores nulos y al momento de registrar datos en la table forzosamente tendremos que ingresar en el campo un valor permitido.
El símbolo de la llave, significa que a ese campo lo seleccioné como una primary key, anteriormente ya expliqué cuál es una de las funciones de la primary key, para agregarla solamente presionas click derecho sobre el campo y seleccionas "Primary Key". Si podemos observar del lado derecho se observa la infomación de nuestra tabla, donde podemos agregar una descripción, el nombre, seleccionar si se puede "Indexar" es decir como crear una caché de acceso a la tabla para que sea más rápido consultarla posteriormente.


Entonces asignamos un nombre y para finalizar la creación de la Tabla presionamos el botón de "OK"

Una vez creada la tabla podemos modificarla, esto significa agregar más columnas, quitar columnas, modificarlas, un ejemplo, sí deseamos agregar una columna a la Tabla "Alumnos" basta con ejecutar la siguiente query.
ALTER TABLE dbo.Alumnos ADD Semestre char (10) NOT NULL
En este ejemplo estoy agregando la columna semestre a la tabla alumnos que anteriormente cuando fué creada no se especificó esta columna.
ALTER TABLE dbo.Alumnos ADD Semestre char (10) NOT NULL
En este ejemplo estoy agregando la columna semestre a la tabla alumnos que anteriormente cuando fué creada no se especificó esta columna.
Donde:
ALTER TABLE <== Estamos indicando que deseamos modificar la estructura de la tabla
dbo.Alumnos <== Es el nombre de la tabla, el dbo significa database objet (objeto de base de datos), es opcional ponerlo, podríamos poner tan solo "Alumnos" y no abrá problema para ejecutar la Query.
ADD <=== Se está indicando que vamos a agregar una columna, esto puede ser sustituido por DROP (Eliminar columna) y también por MODIFY (Modificar estructura)
Semestre <=== Nombre de la nueva columna
char(10) <=== tipo de campo, cadena de carácteres que acepta 10 valga la redundancia caracteres
NOT NULL <=== No permite valores nulos, al hacer registro de algún alumno, forzosamente tendremos que indicar un semestre, sino al momento de ejecutar va a mandar error la consulta y no va agregar el registo a la tabla,
otro ejemplo podría ser:
ALTER TABLE dbo.Alumnos ADD Carrera char(30) NULL.
Y así podríamos seguir agregando los campos a la tabla después de su creación, la sentencia ALTER se encuentra dentro de las DDL (Data Definition Language) ya que está sentencia modifica la estructura de la tabla.
Como se observa en el primer ejemplo ejecutamos la Query, refrescamos en explorador de objetos y podemos validar que en las columnas de la tabla ya se observa la columna "Semestre" (lado derecho).

Ahora como otro ejemplo vamos a utilizar la sentencia ALTER para modificar la tabla pero ahora eliminaremos la columna que acabamos de crear, entonces utilizaremos en vez de "ADD" el "DROP COLUMN" para especificar que deseamos eliminar.
ALTER TABLE dbo.Alumnos DROP COLUMN Semestre
Donde:
ALTER TABLE <=== indicamos vamos a modificar la tabla ("alterar")
dbo.Alumnos <== Nombre de la tabla que será editada.
DROP COLUMN <=== Estamos indicando que deseamos eliminar una columna.
Semestre <=== nombre de la columna a eliminar.
Al ejecutar la query, y refrescar el explorador de objetos podemos validar que la columna Semestre ya no se encuentra en la tabla "Alumnos".

Si lo que deseamos es eliminar completamente una tabla, de igual manera hay dos formas de realizarlo, con el explorador de objetos, posicionarnos sobre las o la tabla a eliminar , presionar click derecho y seleccionar "Delete"

dbo.Alumnos <== Es el nombre de la tabla, el dbo significa database objet (objeto de base de datos), es opcional ponerlo, podríamos poner tan solo "Alumnos" y no abrá problema para ejecutar la Query.
ADD <=== Se está indicando que vamos a agregar una columna, esto puede ser sustituido por DROP (Eliminar columna) y también por MODIFY (Modificar estructura)
Semestre <=== Nombre de la nueva columna
char(10) <=== tipo de campo, cadena de carácteres que acepta 10 valga la redundancia caracteres
NOT NULL <=== No permite valores nulos, al hacer registro de algún alumno, forzosamente tendremos que indicar un semestre, sino al momento de ejecutar va a mandar error la consulta y no va agregar el registo a la tabla,
otro ejemplo podría ser:
ALTER TABLE dbo.Alumnos ADD Carrera char(30) NULL.
Y así podríamos seguir agregando los campos a la tabla después de su creación, la sentencia ALTER se encuentra dentro de las DDL (Data Definition Language) ya que está sentencia modifica la estructura de la tabla.
Como se observa en el primer ejemplo ejecutamos la Query, refrescamos en explorador de objetos y podemos validar que en las columnas de la tabla ya se observa la columna "Semestre" (lado derecho).

Ahora como otro ejemplo vamos a utilizar la sentencia ALTER para modificar la tabla pero ahora eliminaremos la columna que acabamos de crear, entonces utilizaremos en vez de "ADD" el "DROP COLUMN" para especificar que deseamos eliminar.
ALTER TABLE dbo.Alumnos DROP COLUMN Semestre
Donde:
ALTER TABLE <=== indicamos vamos a modificar la tabla ("alterar")
dbo.Alumnos <== Nombre de la tabla que será editada.
DROP COLUMN <=== Estamos indicando que deseamos eliminar una columna.
Semestre <=== nombre de la columna a eliminar.
Al ejecutar la query, y refrescar el explorador de objetos podemos validar que la columna Semestre ya no se encuentra en la tabla "Alumnos".

Si lo que deseamos es eliminar completamente una tabla, de igual manera hay dos formas de realizarlo, con el explorador de objetos, posicionarnos sobre las o la tabla a eliminar , presionar click derecho y seleccionar "Delete"

Al presionar "Delete" abrirá otra pestaña con la lista de objetos a eliminar, en este caso la tabla "Primer_Semestre", para confirmar la eliminación tan solo presionamos el botón de "OK"

Ahora un ejemplo de como eliminar la Tabla con Transact-SQL, solo tenemos que ejecutar la siguiente sentencia:
DROP TABLE dbo.Alumnos
Donde:
DROP <== Estamos indicando que deseamos eliminar un objeto o una base de datos
TABLE <=== Por obvias razones indicamos que el objeto a eliminar es una Tabla
dbo.Alumnos <== Nombre de la tabla a eliminar, puede ser sustituido únicamente por "Alumnos" y no habrá problema al ejecutar la Query.
Después de ejecutar el comando y al refrescar el explorador, observamos que la tabla alumnos ah desaparecido de las tablas en el explorador de objetos.
Recordar que DROP también es una sentencia DDL (Data Definition Language) por que al eliminar objetos estamos modificando la etructura de una base de datos.

Bueno pues continuamos y vamos a trabajar con la tabla creada anteriormente llamada "Primer_Semestre", ahora que tenemos nuestra tablita creada procedemos a ingresarle registros para poder continuar, la forma de agregar registros a una tabla en Transact-SQL se hace con la sentencia INSERT INTO, para ejemplo vamos a ejecutar la Query para ingresar algunos registros.
INSERT INTO Primer_Semestre (codMat, Nombre, Creditos, Calif, Fecha_Calif)
VALUES (1108, 'Geometría Analítica', 9, 7, '09/12/12')
Donde:
INSERT INTO Primer_Semestre <== Indicamos que deseamos agregar un nuevo registro a la tabla llamada "Primer_Semestre"
(codMat, Nombre, Creditos, Calif, Fecha_Calif) <== Son los campos que contiene la tabla, cada campo es separado por una coma y van entre paréntesis, este paso es opcional.
VALUES (1108, 'Geometría Analítica', 9, 7, '09/12/12') <== Estamos indicando los datos que se van a registrar, deben de ir en orden por el campo, recordar que el dato que registremos en campo de tipo caracter (char, nchar, varchar) y fecha (date, datetime), siempre irá delimitado por comillas simples. Si no tomamos esto en cuenta e ingresamos los datos correspondientes sin comillas, al ejecutar la Query va a mandar un error y no se registrarán esos datos en la tabla.
De manera opcional se puede ejecutar la query como:
INSERT INTO Primer_Semestre VALUES (1108, 'Geometría Analítica', 9, 7, '09/12/12')
Se puede observar que nos estamos saltando en la sintaxis los campos de la tabla, también se pueden agregar registros sin tener que poner los campos de la tabla, pero recordar siempre llevar el orden de campos que lleva la tabla.
Otro punto que hay que tomar en cuenta, si nos ponemos analizar cuando creamos la tabla Primer_Semestre el primer campo era idMateria de atributo null (permite valores nulos) e identity (1, 1) [cada que se ingresa un registro se asigna un número empezando por el 1 y aumentando uno por cada nuevo registro]. Si observan bien yo no estoy ingresando este campo en la lista de los campos ni indicando este registro en el apartado de datos que quiero que se agreguen y esto ¿por qué?
1.- El campo acepta valores nulos, así que no hay problema si cuando ingresamos un nuevo registro no seleccionamos este campo ya que no hay ningún problema si no se registra nada.
2.-Adicionalmente le dí el atributo identity (1,1) Esto lo que hace es que aunque yo no ingrese datos para este campo el sistema en automático lo va a realizar por cada nuevo registro aumentará en 1.
Para que quede más claro, al registrar esta materia el sistema en automático le va asignar a ese campo el número 1, cuándo yo ingrese otro registro el sistema le va asignar el número dos a ese registro y así sucesivamente.


Ahora un ejemplo de como eliminar la Tabla con Transact-SQL, solo tenemos que ejecutar la siguiente sentencia:
DROP TABLE dbo.Alumnos
Donde:
DROP <== Estamos indicando que deseamos eliminar un objeto o una base de datos
TABLE <=== Por obvias razones indicamos que el objeto a eliminar es una Tabla
dbo.Alumnos <== Nombre de la tabla a eliminar, puede ser sustituido únicamente por "Alumnos" y no habrá problema al ejecutar la Query.
Después de ejecutar el comando y al refrescar el explorador, observamos que la tabla alumnos ah desaparecido de las tablas en el explorador de objetos.
Recordar que DROP también es una sentencia DDL (Data Definition Language) por que al eliminar objetos estamos modificando la etructura de una base de datos.

Bueno pues continuamos y vamos a trabajar con la tabla creada anteriormente llamada "Primer_Semestre", ahora que tenemos nuestra tablita creada procedemos a ingresarle registros para poder continuar, la forma de agregar registros a una tabla en Transact-SQL se hace con la sentencia INSERT INTO, para ejemplo vamos a ejecutar la Query para ingresar algunos registros.
INSERT INTO Primer_Semestre (codMat, Nombre, Creditos, Calif, Fecha_Calif)
VALUES (1108, 'Geometría Analítica', 9, 7, '09/12/12')
Donde:
INSERT INTO Primer_Semestre <== Indicamos que deseamos agregar un nuevo registro a la tabla llamada "Primer_Semestre"
(codMat, Nombre, Creditos, Calif, Fecha_Calif) <== Son los campos que contiene la tabla, cada campo es separado por una coma y van entre paréntesis, este paso es opcional.
VALUES (1108, 'Geometría Analítica', 9, 7, '09/12/12') <== Estamos indicando los datos que se van a registrar, deben de ir en orden por el campo, recordar que el dato que registremos en campo de tipo caracter (char, nchar, varchar) y fecha (date, datetime), siempre irá delimitado por comillas simples. Si no tomamos esto en cuenta e ingresamos los datos correspondientes sin comillas, al ejecutar la Query va a mandar un error y no se registrarán esos datos en la tabla.
De manera opcional se puede ejecutar la query como:
INSERT INTO Primer_Semestre VALUES (1108, 'Geometría Analítica', 9, 7, '09/12/12')
Se puede observar que nos estamos saltando en la sintaxis los campos de la tabla, también se pueden agregar registros sin tener que poner los campos de la tabla, pero recordar siempre llevar el orden de campos que lleva la tabla.
Otro punto que hay que tomar en cuenta, si nos ponemos analizar cuando creamos la tabla Primer_Semestre el primer campo era idMateria de atributo null (permite valores nulos) e identity (1, 1) [cada que se ingresa un registro se asigna un número empezando por el 1 y aumentando uno por cada nuevo registro]. Si observan bien yo no estoy ingresando este campo en la lista de los campos ni indicando este registro en el apartado de datos que quiero que se agreguen y esto ¿por qué?
1.- El campo acepta valores nulos, así que no hay problema si cuando ingresamos un nuevo registro no seleccionamos este campo ya que no hay ningún problema si no se registra nada.
2.-Adicionalmente le dí el atributo identity (1,1) Esto lo que hace es que aunque yo no ingrese datos para este campo el sistema en automático lo va a realizar por cada nuevo registro aumentará en 1.
Para que quede más claro, al registrar esta materia el sistema en automático le va asignar a ese campo el número 1, cuándo yo ingrese otro registro el sistema le va asignar el número dos a ese registro y así sucesivamente.

Ya que tenemos la idea, procedemos a registrar todas las materias. Por cada registro volvemos a ejecutar la sentencia INSERT INTO.
INSERT INTO [nombre de la tabla] (campos) VALUES (Datos que vamos a registrar).
INSERT INTO [nombre de la tabla] (campos) VALUES (Datos que vamos a registrar).
INSERT INTO está dentro de las sentencias DML (Data Manipulation Language), manipulación de datos, en las cuáles estamos agregando registros en las tablas de la base de datos, pero sin embargo no estamos modificando su estructura.

Al terminar, seleccionamos toda la Query y presionamos la tecla "F5" para ejecutar lo que se encuentra seleccionado. Si todo lo hicimos correctamente, ya saben la leyenda que debe de aparecer. Entonces ahora ya hemos registrado 5 materias a nuestra pequeña tabla de "Primer_Semestre". Para validar que ya quedaron los datos vamos a continuar con otra sentencia de tipo DML la cuál es "SELECT".
Ejecutamos entonces:
SELECT * FROM Primer_Semestre
Donde:
SELECT * <== Indicamos que queremos ver todos los campos de la tabla
FROM Primer_Semestre <== Indicamos que los datos los tomará de la tabla "Primer_Semestre"

En la sentencia SELECT podemos especificar los tipos de campos que deseamos nos aparezcan, lo más común es utilizar el "*" que funciona como un comodín, indicando que deseamos que la consulta nos devuelva todos ls campos que tiene la tabla, pero esto puede ser sustituido por los campos en específico que deseamos ver, ejemplo, si yo no deseo ver todos los campos de la tabla, solo algunos en específico hay que sustituir el comodín por los nombres de los campos y separar por comas cada campo.
SELECT Nombre, Calif FROM Primer_Semestre
Aquí estamos indicando que deseamos que la consulta nos devuelva solo la infomación contenida en los campos Nombre y Calif de la tabla Primer_Semestre. En la imagen que anexo se puede ver en la consulta que solo devolvió la información contenida en estos campos por que yo lo indiqué en la sintaxis sustituyendo el * por los nombres de los campos. Otro ejemplo podría ser:
SELECT idMat, Calif FROM Primer_Semestre
Entonces las consulta nos estará devolviendo solo los registros de esos campos.

Con "SELECT" se pueden obtener también un "Top" de los registros en la tabla, por ejemplo si deseo que al hacer una consulta me muestre los tres primeros registros de la tabla, podemos utilizar la opción TOP, quedando de la siguiente manera:
SELECT TOP 3 * FROM Primer_Semestre
Donde:
SELECT TOP 3 <== Indicamos que nos muestre los tres primeros registros contenidos dentro de la Tabla
* <== comodín para mostrar todos los campos de la tabla, puede ser sustituido por los nombres de los campos que deseamos que nos muestre.
FROM Primer_Semestre <== Indicamos de que tabla deseamos que nos muestre los registro
Podemos observar en la imágen de abajo que al ejecutar la query nos muestra los tres primeros registros que se encuentran en la tabla.


Al terminar, seleccionamos toda la Query y presionamos la tecla "F5" para ejecutar lo que se encuentra seleccionado. Si todo lo hicimos correctamente, ya saben la leyenda que debe de aparecer. Entonces ahora ya hemos registrado 5 materias a nuestra pequeña tabla de "Primer_Semestre". Para validar que ya quedaron los datos vamos a continuar con otra sentencia de tipo DML la cuál es "SELECT".
Ejecutamos entonces:
SELECT * FROM Primer_Semestre
Donde:
SELECT * <== Indicamos que queremos ver todos los campos de la tabla
FROM Primer_Semestre <== Indicamos que los datos los tomará de la tabla "Primer_Semestre"

En la sentencia SELECT podemos especificar los tipos de campos que deseamos nos aparezcan, lo más común es utilizar el "*" que funciona como un comodín, indicando que deseamos que la consulta nos devuelva todos ls campos que tiene la tabla, pero esto puede ser sustituido por los campos en específico que deseamos ver, ejemplo, si yo no deseo ver todos los campos de la tabla, solo algunos en específico hay que sustituir el comodín por los nombres de los campos y separar por comas cada campo.
SELECT Nombre, Calif FROM Primer_Semestre
Aquí estamos indicando que deseamos que la consulta nos devuelva solo la infomación contenida en los campos Nombre y Calif de la tabla Primer_Semestre. En la imagen que anexo se puede ver en la consulta que solo devolvió la información contenida en estos campos por que yo lo indiqué en la sintaxis sustituyendo el * por los nombres de los campos. Otro ejemplo podría ser:
SELECT idMat, Calif FROM Primer_Semestre
Entonces las consulta nos estará devolviendo solo los registros de esos campos.

Con "SELECT" se pueden obtener también un "Top" de los registros en la tabla, por ejemplo si deseo que al hacer una consulta me muestre los tres primeros registros de la tabla, podemos utilizar la opción TOP, quedando de la siguiente manera:
SELECT TOP 3 * FROM Primer_Semestre
Donde:
SELECT TOP 3 <== Indicamos que nos muestre los tres primeros registros contenidos dentro de la Tabla
* <== comodín para mostrar todos los campos de la tabla, puede ser sustituido por los nombres de los campos que deseamos que nos muestre.
FROM Primer_Semestre <== Indicamos de que tabla deseamos que nos muestre los registro
Podemos observar en la imágen de abajo que al ejecutar la query nos muestra los tres primeros registros que se encuentran en la tabla.

Otro ejemplo:
SELECT TOP 2 * FROM Primer_Semestre
Estamos indicando que queremos ver los dos primeros registros en la tabla Primer_Semestre, al ejecutar podemos validar que en la parte de abajo me muestra únicamente los dos primeros registros.

SELECT TOP 2 * FROM Primer_Semestre
Estamos indicando que queremos ver los dos primeros registros en la tabla Primer_Semestre, al ejecutar podemos validar que en la parte de abajo me muestra únicamente los dos primeros registros.

Con "TOP" podemos seleccionar también los campos que deseamos ver únicamente, como ejemplo si yo no deseo ver todos los campos de la tabla, los puedo seleccionar, recordando separar cada nombre del campo por una coma.
SELECT TOP 3 Nombre, Calif FROM Primer_Semestre
Con esta Query estamos indicando que queremos ver únicamente los tres primeros registros de la Tabla Primer_Semestre y también solo los contenidos en las columnas Nombre y Calif. Al ejecutar podemos validar que nos muestra los tres primeros registros y aparte solamente los campos que indicamos, en este caso Nombre y Calif.

De igual forma podemos indicarle al sistema que nos ordene los registros devueltos ya sea por orden ascendente o descendente con la opción ORDER BY, Ejemplo: Deseo que el sistema me muestre los registros de calificaciones por orden ascendente. La sintaxis serà la siguiente:
SELECT Nombre, Calif FROM Primer_Semestre ORDER BY Calif ASC
Donde:
SELECT Nombre, Calif <=== Seleccionamos los campos que queremos ver únicamente
FROM Primer_Semestre <== De la tabla llamada Primer_Semestre
ORDER BY <== Indicamos que queremos los ordene por...
Calif <== Los va a ordenar dependiendo de la calificación
ASC <== De manera ascendente (esto puede ser sustituido por DESC (orden descendente)
Al ejecutar la query podemos observar que nos muestra los registros de los campos Nombre y Calif de la Tabla "Primer_Semestre" y los ordenó de manera ascendente con respecto a la calificación registrada, en este caso como irá ascendiendo empieza por la calificación más baja y terminará en la más alta.

Otro ejemplo, queremos ver los resultados devueltos por orden ascendente ahora por el campo idMateria, que en este caso es el orden en como se fueron ingresando los datos a la tabla. La sintaxis será:
SELECT idMateria, Nombre, Calif FROM Primer_Semestre ORDER BY idMateria ASC
Observamos que la consulta nos devolvió los campos que seleccionamos (idMateria, Nombre, Calif) y aparte los ordenó de manera ascendente por registro, empezando del 1 hasta el 5 con respecto del la columna idMateria.

En el siguiente ejemplo vamos a indicar al sistema que queremos ordenar los resultados con respecto de la columna calificación en orden descendente, es decir, desde la más alta, hasta la más baja. La sintaxis será
SELECT Nombre, Calif FROM Primer_Semestre ORDER BY Calif DESC
Solamente sustituimos el ASC (ascendente) por DESC (descendente) y podemos ver que nos devuelve los campos seleccionados (Nombre, Calif) y los ordenó de mayor a menor calificación.

Lo podemos hacer por orden alfabético, ahora vamos a realizar una consulta que nos ordene con respecto del nombre de la materia en orden ascendente, es decir desde la materia que su nombre empiece con la letra más cercana a la A, hasta la Z.
SELECT Nombre, Calif FROM Primer_Semestre ORDER BY Nombre ASC
Ejecutamos el comando y observamos que el primer registro ordenado corresponde a álgebra por obvias razones por que su nombre empieza con la letra A y así sucesivamente con las demás materias.

Aplicamos lo mismo en el siguiente ejemplo pero ahora que nos devuelva los resultados de manera descendiente con respecto del nombre de la materia
SELECT Nombre, Calif, FROM Primer_Semestre ORDER BY Nombre DESC
Ejecutamos, la consulta nos muestra los campos seleccionados (Nombre y Calif únicamente) y aparte ordenó los resultados con respecto del nombre de la materia en orden ascendente, por obvias razones ahora Álgebra es el último registro que nos ordenó la consulta.

Como último ejemplo, pero sin pantalla, vamos a suponer que tenemos la tabla Empleado y queremos que el sistema nos muestre el nombre de los empleados y su sueldo con respecto de lo que ganan ordenándolos del que gana más al que menos, podría ser algo así:
SELECT Nombre, Sueldo FROM Empleados ORDER BY Sueldo DESC
Quedando ya más claro esto,pasamos a la siguiente.
Bueno en Transact-SQL podemos asignarles "Alias" a las columnas, esto sirve para que al realizar la consulta le indiquemos un "nombre temporal" a una columna y en vez de mostrarnos el nombre de la columna nos muestre el sistema el nombre que le asignamos de manera temporal, esto se hace con "AS", como ejemplo, quiero asignarle un "Alias" a dos columnas, para que cuando el sistema me nuestre los resultados en vez de mostrar el nombre por default de la columna me muestre el que yo le asigné temporalmente, la sintaxis podría quedar así:
SELECT codMat AS 'Código de Materia', Nombre AS 'Materia' FROM Primer_Semestre
Donde:
SELECT <== Selección de campos que queremos nos devuelva la columna
codMat AS 'Código de Materia' <== Indicamos que le vamos asignar el nombre temporal "Código de Materia" a la columna codMat
Nombre AS 'Materia' <==Indicamos que le vamos asignar el nombre temporal 'Materia' a la columna Nombre
FROM Primer_Semestre <== De la tabla llamada Primer_Semetre
Ejecutamos la consulta y podemos observar que el sistema nos devolvió los resultados de los campos seleccionamos y en vez de mostrar el nombre de la columna, nos muestra el que nosotros le asignamos de manera temporal.

Otro ejemplo:
SELECT Creditos 'Puntos', Fecha_Cal AS 'Registro en Sistema', Nombre AS 'Materia' FROM Primer_Semestre
Al ejecutar y que nos muestra los resultamos podemos ver que en vez de mostrarnos los nombres normales de las columnas nos muestra los que le asignamos temporalmente.

A lo largo de este manual hemos explicado como realizar algunas consultas, pero que sucede cuándo quieres hacer una consulta más específica, un claro ejemplo, hay que suponer tenemos una base de datos con 3000 tablas y cada tabla tiene aproximadamente 50,000 registros y tú quieres consultar ¡¡¡solo uno!!!, ¿cómo le harías? Obviamente sería una estupidez ejecutar un "SELECT * FROM Nombre_Tabla" por que la consulta te devolverá todos los registros de la tabla y si tiene muchísimos registros tardaríamos una eternidad en encontrar el que deseamos, sumarle que al ejecutar una consulta así en una tabla con muchos registros consumiremos muchos recursos del servidor, bueno pues para eso existe la claúsula WHERE que funciona como condición y a su vez para ser más específico puede trabajar con Subquerys y operadores Lógicos como AND, OR, NOT, XOR
Ejemplo: Tengo la tabla Empleado y quiero encontrar al señor Juán Pérez del departamento de Recursos Humanos, ¡¡Válgame Dios!! "Juán Pérez" ¿Cuántas personas no existirán con ese nombre en esa tabla? Y luego de Recursos Humanos pfff con eso de que casi no hay Licenciados en este mundo" xD !!! pequeño chascarrillo :P Bueno pues para esto podemos utilizar la claúsula WHERE acompañada de un operador lógico, un ejemplo para hacer específica la búsqueda podría ser:
SELECT * FROM Empleado WHERE EmpNom='Juán' AND FcDepto='RH'
Donde:
SELECT * <== Estamos indicando que queremos mostrar todos los campos de la tabla
FROM Empleado <== De la tabla "Empledo"
WHERE <=== Claúsula utilizada para especificar una condición
EmpNo='Juán' <=== En este caso esta es la condición para que el sistema me muestre solo los resultados donde el nombre del empleado sea igual a 'Juán'
AND <== Operador lógico el cuál estamos indicando de que aparte de la condición anteriormente señalada indicaremos otra
FcDepto='RH' <=== Segunda condición en la cuál estamos indicando que el sistema me debe de mostrar solo los resultados donde el campo EmpNom sea igual a "Juán" y aparte el campo llamado FiDepto sea igual a 'RH' (Recursos Humanos)
Al ejecutar la consulta el sistema me mostrará los resultados dependiendo de las condiciones que agregamos, en este caso fueron dos, osea que solo me va a mostrar los resultados donde se cumplan las dos condiciones. Así será más fácil encontrar al Señor "Juán Pérez" de Recursos Humanos :P
Continuamos con los ejemplos pero aplicados a nuestra pequeña tablita con la que hemos estado trabajando a lo largo del manual: "Primer_Semestre".
Ahora quiero consultar la información de las materias registradas en la tabla Primer_Semestre que cumplan con una condición.
Ejemplo: Quiero que el sistema me muestre todas las materias que están registradas en la tabla donde su calificiacón es 9, la sintaxis quedará así:
SELECT * FROM Primer_Semestre WHERE Calif=9
Ejecutamos la query y podemos observar que el sistema me muestra únicamente todas las materias que tienen calificación de 9

Ahora quiero que me muestre solo las materias que su calificación es de 10.
SELECT * FROM Primer_Semestre WHERE Calif=10

Una consulta un poquito más específica, solo quiero que me muestre los registros de los campos Nombre, codMat, Creditos de la tabla Primer_Semestre donde el código de la materia sea 1110
SELECT Nombre, codMat, Creditos FROM Primer_Semestre WHERE codMat=1110
Ejecutamos la Query y comparamos los resultados :) Observamos que como Álgebra tiene codMat 1110 solo me muestra ese resultado por que se cumplió la condición.

Otro ejemplo, quiero que el sistema me devuelva todos los registros de los campos codMat, Nombre, Calif solo de las materias que se registraron el día 09 de Dic de 2012
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Fecha_Cal='09/12/2012'
Ejecutamos y observamos que solo nos muestra las materias que cumplen con la condición antes señalada.

Ahora una consulta con Claúsula WHERE y Operador Lógico AND
SELECT Nombre, codMat FROM Primer_Semestre WHERE Calif=9 AND codMat=1109
Estamos especificando que deseamos buscar en la tabla la materia que tenga calificación 9 y aparte su código de materia sea 1109, si no se cumplen las dos condiciones no mostrará ningún registro, obligatoriamente se deben de cumplir las dos condiciones para mostrar resultados, en este caso como si se cumplen, nos muestra el sistema el registro de la materia Cálculo Diferencial e Integral que tiene calificación 9 y aparte su código es 1109

Ahora ejecutamos tres consultas parecidas a los ejemplos anteriores, por favor observar bien las condiciones que se ingresan y validar que en la parte de abajo el sistema nos muestra los resultados que cumplen con la condición.

Junto con la claúsola WHERE se pueden utilizar operadores matemáticos como mayor qué >, menor qué < =< igual o menor qué >= igual o mayor qué
Ejemplo 1 Deseo consultar las todas materias que su calificación sea menor a 9
Ejemplo 2 Deseo consultar todas las materias que su calificación sea mayor o igual a nueve
Ejemplo1:
SELECT * FROM Primer_Semestre WHERE Calif <9
Ejemplo2:
SELECT * FROM Primer_Semestre WHERE Calif >=9
Ejecutamos las dos sintaxis a la vez y observamos que en la parte de abajo nos devolvió los resultados de la primera consulta con su respectiva condición y solo muestra las materias con calificaciones menores a 9 y abajo nos devolvió los resultados de la segunda consulta con su respectiva condición mostrando las materias con calificaciones igual a 9 o superiores.

Claúsula WHERE con operador lógico OR, el operador lógico OR significa que si no se cumple una condición entonces se debe de cumplir otra para mostrarnos los resultados correspondientes, un ejemplo:
Deseo consultar todas las materias con calificaciones de 8 y si no existe registro entonces que me muestre las materias con calificaciones de 7, la sitaxis será la siguiente:
SELECT * FROM Primer_Semestre WHERE Calif=8 OR Calif=7
Con este operador lógico no es forzosamente que se cumplan las dos condiciones, con que se cumpla una el sistema muestra los resultados.
Ejecutamos la consulta y observamos que como no hay materias que cumplan la condición de tener calificación de 8, entonces se pasa a la siguiente condición en la cuál si hay registro de materias con calificación de 7 y el sistema la muesta.

Operador Lógico NOT el operador lógico NOT es utilizado para especificar la condición negativa, es decir, un ejemplo, si yo quiero que el sistema me muestre todos los empleados, exepto los que ganan 5,000, podríamos utilizar esta consulta como:
SELECT * FROM Empleado WHERE NOT Sueldo=5,000
Otros dos ejemplos:
1.- Deseo que el sistema me muestre todos los registros de los campos codMat, Nombre, Calif de las materias registradas en la tabla "Primer_Semestre" , exepto las que su calificación es 0
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE NOT Calif=0
2.- 1.- Deseo que el sistema me muestre todos los registros de los campos codMat, Nombre, Calif de las materias registradas en la tabla "Primer_Semestre" , exepto las que su calificación es 9
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE NOT Calif=9
Ejecutamos las dos sintaxis al mismo tiempo y observamos que en la primera consulta el sistema me muestra todos los registros de las materias exepto las que su calificación es 0 (en este caso no muestra álgebra que tiene 0 de calif). Y más abajo me muestra los resultados de la segunda consulta donde están todos los registros de las materias exepto las que su calificación es 9

Un último ejemplo donde podemos ver que en el primer resultado no me muestra la Materia llamada 'Geometrìa Analìtica' por que especifiqué esa condición y en la segunda especifiqué que no me mostrara las ´materias con calificación de 0 y 9

Junto con WHERE podemos utilizar la claúsula LIKE que nos ayudará a realizar una búsqueda donde el campo incluya las palabras, símbolos o números que especifiquemos en LIKE.
Esto sirve cuándo no sabemos como se llama el registro dentro del campo.
Ejemplo, deseo consultar una materia pero no me acuerdo de su nombre completo, solo recuerdo una parte de su nombre, entonces podríamos ejecutar lo siguiente:
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE 'Cálculo%'
Donde:
SELECT codMat, Nombre, Calif <== Son los campos de la tablaque deseamos ver en la consulta
FROM Primer_Semestre <== Es el nombre de la tabla donde haremos la consulta.
WHERE <=== condición
Nombre <=== Campo donde vamos a especificar la confición
LIKE <=== Funciona como un buscador donde especificaremos las palabras que buscaremos en el Campo
'Cálculo%' <== Como no recuerdo el nombre completo de la materia ingresaré una palabra y le voy agregar el símbolo de % el cuál funciona como un comodín, en este caso estamos indicando que va a buscar en la Columna llamada Nombre la Palabra 'Cálculo' y después de esa palabra lo que le siga por eso es el comodín (%).
Ejecutamos la Query y observamos que nos devolvió el resultado con la Materia 'Cálculo Diferencial e Integral' osea que realizó bien su búsqueda.

Ejemplo 2: Deseo buscar una materia que no se como se llama, solo que al último era algo de "Programación" pero no recuerdo su nombre completo, entonces ejecutamos.
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE '%Programación'
en este caso como estamos ingresando el comodín al principio, va a buscar en el campo Nombre cualquier palabra y al último la palabra Programación. Ejecutamos la Query, podemos ver que nos devolvió un resultado con la materia que se llama "Computadoras y Programación"

Podemos llegar a cometer el error de no ingresar comodines, en este caso deseo buscar la materia que se llame Geometría pero como no es su nombre completo y no estoy ingresando comodines el sistema no me va arrojar ningún resultado.
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE 'Geometría'
Al ejecutar no manda ningún mensaje de error, pero no devolvió ningún resultado.

Se pueden utilizar los dos comodines y es lo más recomendable, por decir, solo recuerdo que una materia se llamaba algo de Ing. , entonces procedemos a utilizar los dos comodines para que busque cualquier palabra antes de Ing. y cualquier palabra despuès de Ing. y así nuestra búsqueda sea más eficáz
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE '%Ing.%'
Ejecutamos y observamos que el sistema al terminar la búsqueda nos devuelve la Materia llamada "Introd. a la Ing. en Comp." Esto debido a que buscó cualquier palabra antes de Ing. y cualquier palabra después de Ing.

Último ejemplo para recordar viejos tiempos, xD cuándo me entrevistaron para entrar a Soporte Elektra el Coordinador del área me indicó que le arrojara en una consulta todas las sucursales registradas en la tablea que terminaran con 08 como yo no se los números de todas las sucursales, pues ejecuté la consulta con LIKE y utilizando el comodín solo para especificar que me muestre cualquier número sea cual sea pero que termine con 08
SELECT * FROM sucursales WHERE SucNo LIKE '%08'
Esta consulta nos arrojaría todas las sucursales que terminen con 08. ;)
Ya de cajón me pidió después que ejecutara una consulta donde arrojara todas las sucursales que empezaban con 11, entonces quedaría de la sig. manera:
SELECT * FROM sucursales WHERE SucNo LIKE '11%'
Esta consulta nos arroja todas las sucursales que empiezan con 11 :P
Con esto terminamos con SELECT que también es parte de las Sentencias DML.
Ahora vamos con DELETE
DELETE es utilizado para borrar registros de una tabla en una base de datos, pero hay que tener cuidado al utilizar DELETE ya que si no especificamos una condición, borrará todos los registros de la tabla sin importar nada.
Ejemplo: Voy a utilizar la sentencia DELETE sin una claúsula de condición como WHERE, entonces ejecuto la query y posteriormente hago un "SELECT" para que me devuelva todos los registros en la tabla "Primer_Semestre" y oh my god! se fueron a la basura todos nuestros registros de la tabla. Hay que tener mucho cuidado.

En otro ejemplo vamos a utilizar DELETE junto con la claúsula WHERE en la que vamos a ingresar una condición y si se cumple efectuar el borrado del registro.
Ejemplo: Deseo eliminar todos los registros de la tabla Primer_Semestre donde las materias tengan un valor de 9 Creditos, entonces ejecutamos lo siguiente:
DELETE FROM Primer_Semestre WHERE Creditos=9
Donde:
DELETE <=== Indicamos que queremos borrar uno o más registros
FROM Primer_Semestre <==== de la tabla Primer_Semestre
WHERE <=== Condición
Creditos=9 <=== En este caso borrará todos los registros de la tabla que en su campo Créditos tengan el valor de 9
Ejecutamos la Query. Y Después hacemos un SELECT para devolver todos los registros de la tabla Primer_Semestre, observamos que eliminó todos los registros donde las materias tenían un valor de 9 créditos y sólo quedó la materia Introd. a la Ing. en Comp. ya que su valor en créditos es de 6 por lo tanto no se cumplió la condición para borrar este registro.

Ahora deseo borrar únicamente el registro de la materia que se llama Introd. a la Ing. en Comp.
DELETE FROM Primer_Semestre WHERE Nombre='Introd. a la Ing. en Comp.'
Ejecutamos la query y posteriormente un SELECT para devolver todos los regisros y podemos observar que la única materia que cumplía la condición fué eliminada, por lo tanto ya no aparece en los registros.

Podemos utilizar con la claúsula WHERE, de igual forma los operadores Lógicos AND, OR, NOT, XOR, para "amarrar" la consulta y no borrar datos importantes, aquí viene un ejemplo con el operador lógico NOT
Ejemplo: Deseo borrar todos los registros de calificaciónes exepto los que tienen 9 de calificación, entences ejecutamos:
DELETE FROM Primer_Semestre WHERE NOT Calif=9
Ejecutamos y de nuevo un SELECT para devolver todos los registros de la tabla y podemos ver que se han eliminado todos los registros exepto los que su calificación es de 9

Entonces la sentencia DELETE puede ir como
DELETE FROM Nombre_de_la_Tabla WHERE Nombre_Columna (<>=>=<) AND Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE NOT Nombre_Columna (<>=>=<) AND Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE Nombre_Columna (<>=>=<) OR Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE Nombre_Columna (<>=>=<) AND NOT Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE NOT Nombre_Columna (<>=>=<) AND NOT Nombre_Columna2 (<>=>=<)
Hay muchas combinaciones que podemos realizar.
La sentencia DELETE pertenece a las DML ya que a pesar de borrar registros De una tabla no modifica su estructura.
Sentencia UPDATE es utilizada para actualizar uno o varios registros de una tabla
también hay que tener cuidado ya que si ejecutamos la sentencia UPDATE sin una condición como WHERE en automático va a actualizar todos los registros de la tabla.
Ejemplo: Voy a ejecutar la sentencia UPDATE en la tabla Primer_Semestre sin ninguna condición.
En este caso quiero actualizar los Creditos:
UPDATE Primer_Semestre SET Creditos=6
Ejecutamos la Query y luego un SELECT para devolver todos los registros y podemos observar que el cambio de la comuna Creditos a 6 se aplicó a todos los registros de la tabla

Ahora así como se encuentra la tabla vamos aplicar otro ejemplo pare utilizando UPDATE con la claúsula WHERE para especificar una condición y si se cumple se actualize el registro, en este ejemplo vamosa ejecutar:
UPDATE Primer_Semestre SET Creditos=9 WHERE Calif=0
Donde:
UPDATE Primer_Semestre <==Indicamos que deeamos actualizar uno o varios registros de la tabla Primer_Semestre
SET Creditos=9 <== Indicamos que deseamos cambiar el valor anterior de creditos (6) y que ahora valga 9
WHERE Calif=0 <== condición que se debe de cumplir, en este caso la condición es que se actualizarán todos los registros de la tabla cuya calificación sea igual a cero.
Ejecutamos el update y posteriormente un SELECT para devolver todos los registros de la base, podemos ver que en este caso la materia que tenía de calificación cero a cambiado el valor de sus créditos a 9

Volvemos a ejecutar otro update pero ahora con diferente condición
UPDATE Primer_Semestre SET Creditos=9 WHERE Calif=9
Esta consulta es parecida a la anterior, solo que ahora se debe de cumplir que se actualizarán todos los registros cuya calificación sea igual a 9
Ejecutamos el update, después el SELECT para devolver registros y podemos observar que las dos materias que tenían de calificación 9 han cambiado el valor de sus créditos a 9.

Hay que ser un poco más específicos y ahora utilizar el operador lógico AND para que se cumplan las dos condiciones y entonces aplicar el UPDATE.
UPDATE Primer_Semestre SET Creditos=8 WHERE Calif=9 AND codMat=1109
Ejecutamos y podemos observar que ahora el valor de créditos de la materia Cálculo Diferencial e Integral se actualizó a 8 ya que es la única que cumplió las dos condiciones para ejecutar el UPDATE

UPDATE Primer_Semestre SET Creditos=5 WHERE Fecha_Cal='09/12/2012' AND Calif=7
Podemos observar que los creditos de la materia de Geometría Analítica cambiaron de 9 a 5 ya que fué la única que cumplió las condiciones especificadas anteriormente en la Query

Entonces la sentencia UPDATE se puede utilizar también con operadores lógicos para ser más específicos y podemos hacer muchas combinaciones.
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE Columna1 (<>=<>=)
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE Columna1 (<>=<>=) AND Columna2 (<>=<>=)
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE NOT Columna1
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE Columna1 (<>=<>=) AND NOT Columna2 (<>=<>=)
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE NOTColumna1 (<>=<>=) AND NOT Columna2 (<>=<>=)
Con esto terminamos lo básico de UPDATE, update también es una sentencia DML por que a pesar de actualizar registros no modifica estructura de la tabla o de la base de datos.
Sentencia TRUNCATE
De igual forma que Delete se utiliza para borrar registros, solo que esta sentencia borra todos los registros que contiene la tabla
Ejemplo:
TRUNCATE TABLE [nombre de la tabla]
TRUNCATE TABLE Primer_Semestre <== Estamos indicando que queremos vaciar todos los registros contenidos en la tabla llamada Primer_Semestre
Ejecutamos la Query, hacemos un SELECT para devolver todos los registros y validamos que ya no existe ningún registro en la tabla Primer_Semestre, únicamente se muestran los nombres de las columnas.

DISTINCT se utiliza junto con SELECT para mostrar todos los registros distintos del campo seleccionado, ejemplo
SELECT DISTINCT Creditos FROM Primer_Semestre
Donde:
SELECT DISTINTC Creditos <== Estamos indicando que nos muestre todos los registros distintos del campo llamado Creditos
FROM Primer_Semestre <== De la tabla llamada Primer_Semestre
Ejecutamos la query y podemos observar que nos muestra los registros distintos, hay que recordar que existen cinco registros en la tabla, cuyos valores de créditos se repiten, tengo 4 registros que sus créditos valen 9 y uno donde sus créditos valen 6, al utilizar DISTINCT solo nos mostrará los registros de valor distinto, en este caso solo dos 9 y 6 :)

Otro Ejemplo:
SELECT DISTINCT Calif FROM Primer_Semestre
Con esta consulta estamos indicando que deseamos ver todos los registros de la tabla Primer_Semestre donde su calificación sea distinta, podemos observar que de 5 registros me muestra solo cuatro ya que hay otra materia que tiene de calificación 9 así que como se repite ese registro en la columna de calificaciones por eso no muestra los dos nueves.

Operaciones básicas como Obtener un Promedio, Sumar los valores de las columnas, total de registros que complen cierta condición lo podemos realizar con las claúsulas AVG, SUM, COUNT
AVG <=== "Average" Para obtener el porcentaje
SUM <==="Suma" Para hacer sumas con las columnas
COUNT <== "Conteo" Para hacer un conteo de los registros que cumplen ciertas condiciones,
Ejemplo1
SELECT AVG(Calif) AS 'Promedio' FROM Primer_Semestre WHERE NOT Calif=0
Donde:
SELECT AVG(Calif) <=== Estamos indicando que nos dé el promedio general de las columnas llamadas Calif
AS 'Promedio' <== Estamos indicando que le vamos a dar un nombre temporal en este caso 'Promedio' al resultado que nos arroje la consulta
FROM Primer_Semestre <=== De la tabla llamada Primer_Semestre
WHERE NOT Calif=0 <== Estamos indicando que va a darnos el promedio de todas las calificaciones sin contar los registros que tengan de Calificación 0
Ejemplo 2
SELECT SUM(Calif) AS 'Suma de Calificaciones' FROM Primer_Semestre WHERE Calif=9
Donde:
SELECT SUM(Calif) <== Estamos indicando que va a sumar los valores de la columna Calif
AS 'Suma de Calificaciones' <== Indicamos un nombre temporal al resultado que nos va a devolver
FROM Primer_Semestre <== De la tabla Primer_Semestre
WHERE Calif=9 <== condición que solo sumará los valores de las Calificaciones que sean igual a nueve
Ejemplo 3:
SELECT COUNT(Calif) AS 'Numero de Registros' FROM Primer_Semestre
Donde:
SELECT COUNT(Calif) <== Estamos indicando que nos va a sumar todos los registros que se encuentran en la columna Calif
AS 'Numero de Registros' <== Estamos indicando un nombre temportal al resultado
FROM Primer_Semestre <=== De la tabla Primer_Semestre
Ejecutamos la query y observamos los resultados, en la primer consulta nos da el promedio de todas las materias sin contar la que tiene de calificacion 0
En la parte de abajo nos da el resultado de la segunda consulta donde suma todas las calificaciones de 9, en este caso son dos, hace la suma 9+9=18
En la última consulta hace la suma de todos los registros de calificaciones en la columna Calif, en este caso son cinco registros, los suma y nos muestra el 5 :)

Bueno pues es todo, por falta de tiempo ya no agregué SET NOCOUNT, declarar variables con DECLARE, así como SUBQUERY'S e INNER JOIN'S pero posteriormente lo voy a editar para agregar eso, ojalá les sea de ayuda y siempre recordar hacer todo con scripts para ir aprendiendo por lo menos las sentencias más utilizadas, todo esto que agregué aquí lo aprendí leyendo la documentación de Microsoft, uno que otro libro de SQL y en mi anterior trabajo en Soporte Elektra. Aún no soy un experto en las consultas pero creo que me defiendo xD. Se aceptan comentarios y sugerencias.
Gracias por visitar el Blog y excelente fin de año.
:)
SELECT TOP 3 Nombre, Calif FROM Primer_Semestre
Con esta Query estamos indicando que queremos ver únicamente los tres primeros registros de la Tabla Primer_Semestre y también solo los contenidos en las columnas Nombre y Calif. Al ejecutar podemos validar que nos muestra los tres primeros registros y aparte solamente los campos que indicamos, en este caso Nombre y Calif.

SELECT Nombre, Calif FROM Primer_Semestre ORDER BY Calif ASC
Donde:
SELECT Nombre, Calif <=== Seleccionamos los campos que queremos ver únicamente
FROM Primer_Semestre <== De la tabla llamada Primer_Semestre
ORDER BY <== Indicamos que queremos los ordene por...
Calif <== Los va a ordenar dependiendo de la calificación
ASC <== De manera ascendente (esto puede ser sustituido por DESC (orden descendente)
Al ejecutar la query podemos observar que nos muestra los registros de los campos Nombre y Calif de la Tabla "Primer_Semestre" y los ordenó de manera ascendente con respecto a la calificación registrada, en este caso como irá ascendiendo empieza por la calificación más baja y terminará en la más alta.

Otro ejemplo, queremos ver los resultados devueltos por orden ascendente ahora por el campo idMateria, que en este caso es el orden en como se fueron ingresando los datos a la tabla. La sintaxis será:
SELECT idMateria, Nombre, Calif FROM Primer_Semestre ORDER BY idMateria ASC
Observamos que la consulta nos devolvió los campos que seleccionamos (idMateria, Nombre, Calif) y aparte los ordenó de manera ascendente por registro, empezando del 1 hasta el 5 con respecto del la columna idMateria.

En el siguiente ejemplo vamos a indicar al sistema que queremos ordenar los resultados con respecto de la columna calificación en orden descendente, es decir, desde la más alta, hasta la más baja. La sintaxis será
SELECT Nombre, Calif FROM Primer_Semestre ORDER BY Calif DESC
Solamente sustituimos el ASC (ascendente) por DESC (descendente) y podemos ver que nos devuelve los campos seleccionados (Nombre, Calif) y los ordenó de mayor a menor calificación.

Lo podemos hacer por orden alfabético, ahora vamos a realizar una consulta que nos ordene con respecto del nombre de la materia en orden ascendente, es decir desde la materia que su nombre empiece con la letra más cercana a la A, hasta la Z.
SELECT Nombre, Calif FROM Primer_Semestre ORDER BY Nombre ASC
Ejecutamos el comando y observamos que el primer registro ordenado corresponde a álgebra por obvias razones por que su nombre empieza con la letra A y así sucesivamente con las demás materias.

SELECT Nombre, Calif, FROM Primer_Semestre ORDER BY Nombre DESC
Ejecutamos, la consulta nos muestra los campos seleccionados (Nombre y Calif únicamente) y aparte ordenó los resultados con respecto del nombre de la materia en orden ascendente, por obvias razones ahora Álgebra es el último registro que nos ordenó la consulta.

Como último ejemplo, pero sin pantalla, vamos a suponer que tenemos la tabla Empleado y queremos que el sistema nos muestre el nombre de los empleados y su sueldo con respecto de lo que ganan ordenándolos del que gana más al que menos, podría ser algo así:
SELECT Nombre, Sueldo FROM Empleados ORDER BY Sueldo DESC
Quedando ya más claro esto,pasamos a la siguiente.
SELECT codMat AS 'Código de Materia', Nombre AS 'Materia' FROM Primer_Semestre
Donde:
SELECT <== Selección de campos que queremos nos devuelva la columna
codMat AS 'Código de Materia' <== Indicamos que le vamos asignar el nombre temporal "Código de Materia" a la columna codMat
Nombre AS 'Materia' <==Indicamos que le vamos asignar el nombre temporal 'Materia' a la columna Nombre
FROM Primer_Semestre <== De la tabla llamada Primer_Semetre
Ejecutamos la consulta y podemos observar que el sistema nos devolvió los resultados de los campos seleccionamos y en vez de mostrar el nombre de la columna, nos muestra el que nosotros le asignamos de manera temporal.

SELECT Creditos 'Puntos', Fecha_Cal AS 'Registro en Sistema', Nombre AS 'Materia' FROM Primer_Semestre
Al ejecutar y que nos muestra los resultamos podemos ver que en vez de mostrarnos los nombres normales de las columnas nos muestra los que le asignamos temporalmente.

A lo largo de este manual hemos explicado como realizar algunas consultas, pero que sucede cuándo quieres hacer una consulta más específica, un claro ejemplo, hay que suponer tenemos una base de datos con 3000 tablas y cada tabla tiene aproximadamente 50,000 registros y tú quieres consultar ¡¡¡solo uno!!!, ¿cómo le harías? Obviamente sería una estupidez ejecutar un "SELECT * FROM Nombre_Tabla" por que la consulta te devolverá todos los registros de la tabla y si tiene muchísimos registros tardaríamos una eternidad en encontrar el que deseamos, sumarle que al ejecutar una consulta así en una tabla con muchos registros consumiremos muchos recursos del servidor, bueno pues para eso existe la claúsula WHERE que funciona como condición y a su vez para ser más específico puede trabajar con Subquerys y operadores Lógicos como AND, OR, NOT, XOR
Ejemplo: Tengo la tabla Empleado y quiero encontrar al señor Juán Pérez del departamento de Recursos Humanos, ¡¡Válgame Dios!! "Juán Pérez" ¿Cuántas personas no existirán con ese nombre en esa tabla? Y luego de Recursos Humanos pfff con eso de que casi no hay Licenciados en este mundo" xD !!! pequeño chascarrillo :P Bueno pues para esto podemos utilizar la claúsula WHERE acompañada de un operador lógico, un ejemplo para hacer específica la búsqueda podría ser:
SELECT * FROM Empleado WHERE EmpNom='Juán' AND FcDepto='RH'
Donde:
SELECT * <== Estamos indicando que queremos mostrar todos los campos de la tabla
FROM Empleado <== De la tabla "Empledo"
WHERE <=== Claúsula utilizada para especificar una condición
EmpNo='Juán' <=== En este caso esta es la condición para que el sistema me muestre solo los resultados donde el nombre del empleado sea igual a 'Juán'
AND <== Operador lógico el cuál estamos indicando de que aparte de la condición anteriormente señalada indicaremos otra
FcDepto='RH' <=== Segunda condición en la cuál estamos indicando que el sistema me debe de mostrar solo los resultados donde el campo EmpNom sea igual a "Juán" y aparte el campo llamado FiDepto sea igual a 'RH' (Recursos Humanos)
Al ejecutar la consulta el sistema me mostrará los resultados dependiendo de las condiciones que agregamos, en este caso fueron dos, osea que solo me va a mostrar los resultados donde se cumplan las dos condiciones. Así será más fácil encontrar al Señor "Juán Pérez" de Recursos Humanos :P
Continuamos con los ejemplos pero aplicados a nuestra pequeña tablita con la que hemos estado trabajando a lo largo del manual: "Primer_Semestre".
Ahora quiero consultar la información de las materias registradas en la tabla Primer_Semestre que cumplan con una condición.
Ejemplo: Quiero que el sistema me muestre todas las materias que están registradas en la tabla donde su calificiacón es 9, la sintaxis quedará así:
SELECT * FROM Primer_Semestre WHERE Calif=9
Ejecutamos la query y podemos observar que el sistema me muestra únicamente todas las materias que tienen calificación de 9

Ahora quiero que me muestre solo las materias que su calificación es de 10.
SELECT * FROM Primer_Semestre WHERE Calif=10

Una consulta un poquito más específica, solo quiero que me muestre los registros de los campos Nombre, codMat, Creditos de la tabla Primer_Semestre donde el código de la materia sea 1110
SELECT Nombre, codMat, Creditos FROM Primer_Semestre WHERE codMat=1110
Ejecutamos la Query y comparamos los resultados :) Observamos que como Álgebra tiene codMat 1110 solo me muestra ese resultado por que se cumplió la condición.

SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Fecha_Cal='09/12/2012'
Ejecutamos y observamos que solo nos muestra las materias que cumplen con la condición antes señalada.

Ahora una consulta con Claúsula WHERE y Operador Lógico AND
SELECT Nombre, codMat FROM Primer_Semestre WHERE Calif=9 AND codMat=1109
Estamos especificando que deseamos buscar en la tabla la materia que tenga calificación 9 y aparte su código de materia sea 1109, si no se cumplen las dos condiciones no mostrará ningún registro, obligatoriamente se deben de cumplir las dos condiciones para mostrar resultados, en este caso como si se cumplen, nos muestra el sistema el registro de la materia Cálculo Diferencial e Integral que tiene calificación 9 y aparte su código es 1109

Ahora ejecutamos tres consultas parecidas a los ejemplos anteriores, por favor observar bien las condiciones que se ingresan y validar que en la parte de abajo el sistema nos muestra los resultados que cumplen con la condición.

Junto con la claúsola WHERE se pueden utilizar operadores matemáticos como mayor qué >, menor qué < =< igual o menor qué >= igual o mayor qué
Ejemplo 1 Deseo consultar las todas materias que su calificación sea menor a 9
Ejemplo 2 Deseo consultar todas las materias que su calificación sea mayor o igual a nueve
Ejemplo1:
SELECT * FROM Primer_Semestre WHERE Calif <9
Ejemplo2:
SELECT * FROM Primer_Semestre WHERE Calif >=9
Ejecutamos las dos sintaxis a la vez y observamos que en la parte de abajo nos devolvió los resultados de la primera consulta con su respectiva condición y solo muestra las materias con calificaciones menores a 9 y abajo nos devolvió los resultados de la segunda consulta con su respectiva condición mostrando las materias con calificaciones igual a 9 o superiores.

Deseo consultar todas las materias con calificaciones de 8 y si no existe registro entonces que me muestre las materias con calificaciones de 7, la sitaxis será la siguiente:
SELECT * FROM Primer_Semestre WHERE Calif=8 OR Calif=7
Con este operador lógico no es forzosamente que se cumplan las dos condiciones, con que se cumpla una el sistema muestra los resultados.
Ejecutamos la consulta y observamos que como no hay materias que cumplan la condición de tener calificación de 8, entonces se pasa a la siguiente condición en la cuál si hay registro de materias con calificación de 7 y el sistema la muesta.

Operador Lógico NOT el operador lógico NOT es utilizado para especificar la condición negativa, es decir, un ejemplo, si yo quiero que el sistema me muestre todos los empleados, exepto los que ganan 5,000, podríamos utilizar esta consulta como:
SELECT * FROM Empleado WHERE NOT Sueldo=5,000
1.- Deseo que el sistema me muestre todos los registros de los campos codMat, Nombre, Calif de las materias registradas en la tabla "Primer_Semestre" , exepto las que su calificación es 0
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE NOT Calif=0
2.- 1.- Deseo que el sistema me muestre todos los registros de los campos codMat, Nombre, Calif de las materias registradas en la tabla "Primer_Semestre" , exepto las que su calificación es 9
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE NOT Calif=9
Ejecutamos las dos sintaxis al mismo tiempo y observamos que en la primera consulta el sistema me muestra todos los registros de las materias exepto las que su calificación es 0 (en este caso no muestra álgebra que tiene 0 de calif). Y más abajo me muestra los resultados de la segunda consulta donde están todos los registros de las materias exepto las que su calificación es 9

Un último ejemplo donde podemos ver que en el primer resultado no me muestra la Materia llamada 'Geometrìa Analìtica' por que especifiqué esa condición y en la segunda especifiqué que no me mostrara las ´materias con calificación de 0 y 9

Junto con WHERE podemos utilizar la claúsula LIKE que nos ayudará a realizar una búsqueda donde el campo incluya las palabras, símbolos o números que especifiquemos en LIKE.
Esto sirve cuándo no sabemos como se llama el registro dentro del campo.
Ejemplo, deseo consultar una materia pero no me acuerdo de su nombre completo, solo recuerdo una parte de su nombre, entonces podríamos ejecutar lo siguiente:
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE 'Cálculo%'
Donde:
SELECT codMat, Nombre, Calif <== Son los campos de la tablaque deseamos ver en la consulta
FROM Primer_Semestre <== Es el nombre de la tabla donde haremos la consulta.
WHERE <=== condición
Nombre <=== Campo donde vamos a especificar la confición
LIKE <=== Funciona como un buscador donde especificaremos las palabras que buscaremos en el Campo
'Cálculo%' <== Como no recuerdo el nombre completo de la materia ingresaré una palabra y le voy agregar el símbolo de % el cuál funciona como un comodín, en este caso estamos indicando que va a buscar en la Columna llamada Nombre la Palabra 'Cálculo' y después de esa palabra lo que le siga por eso es el comodín (%).
Ejecutamos la Query y observamos que nos devolvió el resultado con la Materia 'Cálculo Diferencial e Integral' osea que realizó bien su búsqueda.

Ejemplo 2: Deseo buscar una materia que no se como se llama, solo que al último era algo de "Programación" pero no recuerdo su nombre completo, entonces ejecutamos.
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE '%Programación'
en este caso como estamos ingresando el comodín al principio, va a buscar en el campo Nombre cualquier palabra y al último la palabra Programación. Ejecutamos la Query, podemos ver que nos devolvió un resultado con la materia que se llama "Computadoras y Programación"

SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE 'Geometría'
Al ejecutar no manda ningún mensaje de error, pero no devolvió ningún resultado.

Se pueden utilizar los dos comodines y es lo más recomendable, por decir, solo recuerdo que una materia se llamaba algo de Ing. , entonces procedemos a utilizar los dos comodines para que busque cualquier palabra antes de Ing. y cualquier palabra despuès de Ing. y así nuestra búsqueda sea más eficáz
SELECT codMat, Nombre, Calif FROM Primer_Semestre WHERE Nombre LIKE '%Ing.%'

Último ejemplo para recordar viejos tiempos, xD cuándo me entrevistaron para entrar a Soporte Elektra el Coordinador del área me indicó que le arrojara en una consulta todas las sucursales registradas en la tablea que terminaran con 08 como yo no se los números de todas las sucursales, pues ejecuté la consulta con LIKE y utilizando el comodín solo para especificar que me muestre cualquier número sea cual sea pero que termine con 08
SELECT * FROM sucursales WHERE SucNo LIKE '%08'
Esta consulta nos arrojaría todas las sucursales que terminen con 08. ;)
Ya de cajón me pidió después que ejecutara una consulta donde arrojara todas las sucursales que empezaban con 11, entonces quedaría de la sig. manera:
SELECT * FROM sucursales WHERE SucNo LIKE '11%'
Con esto terminamos con SELECT que también es parte de las Sentencias DML.
Ahora vamos con DELETE
DELETE es utilizado para borrar registros de una tabla en una base de datos, pero hay que tener cuidado al utilizar DELETE ya que si no especificamos una condición, borrará todos los registros de la tabla sin importar nada.
Ejemplo: Voy a utilizar la sentencia DELETE sin una claúsula de condición como WHERE, entonces ejecuto la query y posteriormente hago un "SELECT" para que me devuelva todos los registros en la tabla "Primer_Semestre" y oh my god! se fueron a la basura todos nuestros registros de la tabla. Hay que tener mucho cuidado.

En otro ejemplo vamos a utilizar DELETE junto con la claúsula WHERE en la que vamos a ingresar una condición y si se cumple efectuar el borrado del registro.
Ejemplo: Deseo eliminar todos los registros de la tabla Primer_Semestre donde las materias tengan un valor de 9 Creditos, entonces ejecutamos lo siguiente:
DELETE FROM Primer_Semestre WHERE Creditos=9
Donde:
DELETE <=== Indicamos que queremos borrar uno o más registros
FROM Primer_Semestre <==== de la tabla Primer_Semestre
WHERE <=== Condición
Creditos=9 <=== En este caso borrará todos los registros de la tabla que en su campo Créditos tengan el valor de 9
Ejecutamos la Query. Y Después hacemos un SELECT para devolver todos los registros de la tabla Primer_Semestre, observamos que eliminó todos los registros donde las materias tenían un valor de 9 créditos y sólo quedó la materia Introd. a la Ing. en Comp. ya que su valor en créditos es de 6 por lo tanto no se cumplió la condición para borrar este registro.

Ahora deseo borrar únicamente el registro de la materia que se llama Introd. a la Ing. en Comp.
DELETE FROM Primer_Semestre WHERE Nombre='Introd. a la Ing. en Comp.'
Ejecutamos la query y posteriormente un SELECT para devolver todos los regisros y podemos observar que la única materia que cumplía la condición fué eliminada, por lo tanto ya no aparece en los registros.

Podemos utilizar con la claúsula WHERE, de igual forma los operadores Lógicos AND, OR, NOT, XOR, para "amarrar" la consulta y no borrar datos importantes, aquí viene un ejemplo con el operador lógico NOT
Ejemplo: Deseo borrar todos los registros de calificaciónes exepto los que tienen 9 de calificación, entences ejecutamos:
DELETE FROM Primer_Semestre WHERE NOT Calif=9
Ejecutamos y de nuevo un SELECT para devolver todos los registros de la tabla y podemos ver que se han eliminado todos los registros exepto los que su calificación es de 9

Entonces la sentencia DELETE puede ir como
DELETE FROM Nombre_de_la_Tabla WHERE Nombre_Columna (<>=>=<) AND Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE NOT Nombre_Columna (<>=>=<) AND Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE Nombre_Columna (<>=>=<) OR Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE Nombre_Columna (<>=>=<) AND NOT Nombre_Columna2 (<>=>=<)
DELETE FROM Nombre_de_la_Tabla WHERE NOT Nombre_Columna (<>=>=<) AND NOT Nombre_Columna2 (<>=>=<)
Hay muchas combinaciones que podemos realizar.
La sentencia DELETE pertenece a las DML ya que a pesar de borrar registros De una tabla no modifica su estructura.
Sentencia UPDATE es utilizada para actualizar uno o varios registros de una tabla
también hay que tener cuidado ya que si ejecutamos la sentencia UPDATE sin una condición como WHERE en automático va a actualizar todos los registros de la tabla.
Ejemplo: Voy a ejecutar la sentencia UPDATE en la tabla Primer_Semestre sin ninguna condición.
En este caso quiero actualizar los Creditos:
Ejecutamos la Query y luego un SELECT para devolver todos los registros y podemos observar que el cambio de la comuna Creditos a 6 se aplicó a todos los registros de la tabla

Ahora así como se encuentra la tabla vamos aplicar otro ejemplo pare utilizando UPDATE con la claúsula WHERE para especificar una condición y si se cumple se actualize el registro, en este ejemplo vamosa ejecutar:
UPDATE Primer_Semestre SET Creditos=9 WHERE Calif=0
Donde:
UPDATE Primer_Semestre <==Indicamos que deeamos actualizar uno o varios registros de la tabla Primer_Semestre
SET Creditos=9 <== Indicamos que deseamos cambiar el valor anterior de creditos (6) y que ahora valga 9
WHERE Calif=0 <== condición que se debe de cumplir, en este caso la condición es que se actualizarán todos los registros de la tabla cuya calificación sea igual a cero.
Ejecutamos el update y posteriormente un SELECT para devolver todos los registros de la base, podemos ver que en este caso la materia que tenía de calificación cero a cambiado el valor de sus créditos a 9

Volvemos a ejecutar otro update pero ahora con diferente condición
UPDATE Primer_Semestre SET Creditos=9 WHERE Calif=9
Esta consulta es parecida a la anterior, solo que ahora se debe de cumplir que se actualizarán todos los registros cuya calificación sea igual a 9
Ejecutamos el update, después el SELECT para devolver registros y podemos observar que las dos materias que tenían de calificación 9 han cambiado el valor de sus créditos a 9.

Hay que ser un poco más específicos y ahora utilizar el operador lógico AND para que se cumplan las dos condiciones y entonces aplicar el UPDATE.
UPDATE Primer_Semestre SET Creditos=8 WHERE Calif=9 AND codMat=1109
Ejecutamos y podemos observar que ahora el valor de créditos de la materia Cálculo Diferencial e Integral se actualizó a 8 ya que es la única que cumplió las dos condiciones para ejecutar el UPDATE

Podemos observar que los creditos de la materia de Geometría Analítica cambiaron de 9 a 5 ya que fué la única que cumplió las condiciones especificadas anteriormente en la Query

Entonces la sentencia UPDATE se puede utilizar también con operadores lógicos para ser más específicos y podemos hacer muchas combinaciones.
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE Columna1 (<>=<>=)
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE Columna1 (<>=<>=) AND Columna2 (<>=<>=)
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE NOT Columna1
UPDATE Primer_Semestre SET (nombre de la columna)=(nuevo valor) WHERE Columna1 (<>=<>=) AND NOT Columna2 (<>=<>=)
Con esto terminamos lo básico de UPDATE, update también es una sentencia DML por que a pesar de actualizar registros no modifica estructura de la tabla o de la base de datos.
Sentencia TRUNCATE
De igual forma que Delete se utiliza para borrar registros, solo que esta sentencia borra todos los registros que contiene la tabla
Ejemplo:
TRUNCATE TABLE [nombre de la tabla]
TRUNCATE TABLE Primer_Semestre <== Estamos indicando que queremos vaciar todos los registros contenidos en la tabla llamada Primer_Semestre
Ejecutamos la Query, hacemos un SELECT para devolver todos los registros y validamos que ya no existe ningún registro en la tabla Primer_Semestre, únicamente se muestran los nombres de las columnas.

SELECT DISTINCT Creditos FROM Primer_Semestre
Donde:
SELECT DISTINTC Creditos <== Estamos indicando que nos muestre todos los registros distintos del campo llamado Creditos
FROM Primer_Semestre <== De la tabla llamada Primer_Semestre
Ejecutamos la query y podemos observar que nos muestra los registros distintos, hay que recordar que existen cinco registros en la tabla, cuyos valores de créditos se repiten, tengo 4 registros que sus créditos valen 9 y uno donde sus créditos valen 6, al utilizar DISTINCT solo nos mostrará los registros de valor distinto, en este caso solo dos 9 y 6 :)

SELECT DISTINCT Calif FROM Primer_Semestre
Con esta consulta estamos indicando que deseamos ver todos los registros de la tabla Primer_Semestre donde su calificación sea distinta, podemos observar que de 5 registros me muestra solo cuatro ya que hay otra materia que tiene de calificación 9 así que como se repite ese registro en la columna de calificaciones por eso no muestra los dos nueves.

Operaciones básicas como Obtener un Promedio, Sumar los valores de las columnas, total de registros que complen cierta condición lo podemos realizar con las claúsulas AVG, SUM, COUNT
AVG <=== "Average" Para obtener el porcentaje
SUM <==="Suma" Para hacer sumas con las columnas
COUNT <== "Conteo" Para hacer un conteo de los registros que cumplen ciertas condiciones,
Ejemplo1
SELECT AVG(Calif) AS 'Promedio' FROM Primer_Semestre WHERE NOT Calif=0
Donde:
SELECT AVG(Calif) <=== Estamos indicando que nos dé el promedio general de las columnas llamadas Calif
AS 'Promedio' <== Estamos indicando que le vamos a dar un nombre temporal en este caso 'Promedio' al resultado que nos arroje la consulta
FROM Primer_Semestre <=== De la tabla llamada Primer_Semestre
WHERE NOT Calif=0 <== Estamos indicando que va a darnos el promedio de todas las calificaciones sin contar los registros que tengan de Calificación 0
Ejemplo 2
SELECT SUM(Calif) AS 'Suma de Calificaciones' FROM Primer_Semestre WHERE Calif=9
Donde:
SELECT SUM(Calif) <== Estamos indicando que va a sumar los valores de la columna Calif
AS 'Suma de Calificaciones' <== Indicamos un nombre temporal al resultado que nos va a devolver
FROM Primer_Semestre <== De la tabla Primer_Semestre
WHERE Calif=9 <== condición que solo sumará los valores de las Calificaciones que sean igual a nueve
Ejemplo 3:
SELECT COUNT(Calif) AS 'Numero de Registros' FROM Primer_Semestre
SELECT COUNT(Calif) <== Estamos indicando que nos va a sumar todos los registros que se encuentran en la columna Calif
AS 'Numero de Registros' <== Estamos indicando un nombre temportal al resultado
FROM Primer_Semestre <=== De la tabla Primer_Semestre
Ejecutamos la query y observamos los resultados, en la primer consulta nos da el promedio de todas las materias sin contar la que tiene de calificacion 0
En la parte de abajo nos da el resultado de la segunda consulta donde suma todas las calificaciones de 9, en este caso son dos, hace la suma 9+9=18
En la última consulta hace la suma de todos los registros de calificaciones en la columna Calif, en este caso son cinco registros, los suma y nos muestra el 5 :)

Bueno pues es todo, por falta de tiempo ya no agregué SET NOCOUNT, declarar variables con DECLARE, así como SUBQUERY'S e INNER JOIN'S pero posteriormente lo voy a editar para agregar eso, ojalá les sea de ayuda y siempre recordar hacer todo con scripts para ir aprendiendo por lo menos las sentencias más utilizadas, todo esto que agregué aquí lo aprendí leyendo la documentación de Microsoft, uno que otro libro de SQL y en mi anterior trabajo en Soporte Elektra. Aún no soy un experto en las consultas pero creo que me defiendo xD. Se aceptan comentarios y sugerencias.
Gracias por visitar el Blog y excelente fin de año.
:)
No comments:
Post a Comment