Instalar MYSQL
Video
Tutorial 1 SQL. Instalación de MYSQL y las primeras consultas SQL con MySql
Workbench
MySQL (My S-Q-L) es un
sistema de gestión de bases de datos relacionales de codigo abierto, que se
ejecuta en un servidor con acceso de usuario múltiple a diversas bases de
datos.
MySQL es una base de
datos muy popular utilizada en aplicaciones web, y es un componente central del
conjunto de software de código abierto; LAMP. LAMP es un acrónimo para
"Linux, Apache, MySQL, Perl/PHP/Python." Los proyectos de código
abierto que necesitan un sistema de gestión completo para bases de datos suelen
utilizar MySQL.
Para instalar MySQL:
- primero descargamos "MySQL Installer
MSI" en "http://dev.mysql.com/downloads/mysql/www.dev.mysql.com/downloads/mysql/"
- cuando instalamos "MySQL Installer
MSI", se instalan el servidor y el workbench.
Qué es SQL?
Es un lenguaje diseñado para gestionar datos que
están en una base de datos relacional.
Qué es una base de datos relacional?
Una base de datos relacional es una base de datos
que cumple con el modelo relacional, el cual es el modelo más utilizado en la
actualidad para implementar bases de datos ya planificadas. Permiten establecer
interconexiones (relaciones) entre los datos (que están guardados en tablas), y
a través de dichas conexiones relacionar los datos de ambas tablas, de ahí
proviene su nombre: "Modelo Relacional".
Una base de datos normalmente incluye software para
gestionar la base de datos. Existen diferentes tipos de software pero el más
común es el servidor, que mantiene los datos; un programa que es un servidor y
que se ejecuta en un segundo plano. Los diferentes programas se conectan a este
servidor y este es el encargado de dar datos y actualizarlos.
Esta es la razón por la que descargamos un servidor
de base de datos.
El workbench, que también hemos instalado, está
conectado a esta base de datos.
Primeras consultas;
Una vez que tenemos todo instalado, podemos hacer
nuestras primeras consultas SQL;
- Primero creamos un nuevo schema "edu"
- Después creamos una nueva tabla
"books", dentro del schema "edu" con cuatro columnas;
"idbooks", "title", "author", "isbn"
Clientes SQL y Esquemas
Video
Tutorial 2 SQL. Tipos de bases de datos, Clientes SQL y Esquemas en Bases de
Datos.
En este tutorial vamos a
hablar de las diferentes tipos de bases de datos, los diferentes clientes SQL y
la definición de un esquema.
Base de datos
Una base de datos o
banco de datos es un conjunto de datos pertenecientes a un mismo contexto y
almacenados sistemáticamente para su posterior uso.
Tipos de bases de datos
Las bases de datos
pueden clasificarse de varias maneras, de acuerdo al contexto que se esté
manejando, la utilidad de las mismas o las necesidades que satisfagan.
Haremos una
clasificación entre las bases de datos de "código abierto" y las
bases de datos "comerciales".
Las de código abierto
tienen la ventaja que son gratuitas y tienen una comunidad que las soporta.
·
Crear y modificar tablas
SENTENCIA CREATE TABLE
La sentencia CREATE
TABLE es utilizada para crear una tabla en una base de datos.
Las tablas se organizan
en filas y columnas; y cada tabla debe tener un nombre.
SINTAXIS PARA LA SENTENCIA CREATE TABLE
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
Los parámetros
"column_name" especifican los nombres de las columnas de las tablas.
Los parámetros
"data_type" especifican que tipo de datos puede haber en esa columna
(ej. varchar, integer, decimal, date, etc.).
El parámetro
"size" especifica la longitud máxima de la columna de la tabla.
Ejemplo de la sentencia SQL CREATE TABLE:
Ahora vamos a crear en
el esquema "eli", una tabla llamada "publisher", que
contiene cuatro columnas; idpublisher, name, address, and phone.
En el MySQL Workbench
escribimos la instrucción CREATE TABLE:
La columna idpublisher
es de tipo int y contendrá un integer. Esta es la "primary key"; el
identificador único. Las columnas "name, address, y phone" son de
tipo varchar y contendrá caracteres, con una longitud máxima para estos campos
de 45 caracteres.
SENTENCIA ALTER TABLE
La sentencia ALTER TABLE
se utiliza para añadir, borrar o modificar columnas de una tabla existente.
SINTAXIS PARA LA SENTENCIA ALTER TABLE
Para borrar una columna
de una tabla, hay que utilizar la siguiente sintaxis (algunos sistemas de bases
de datos no permiten borrar una columna):
ALTER TABLE table_name
DROP COLUMN column_name
En nuestro ejemplo,
borramos la columna "address" con la siguiente instrucción;
Para añadir una columna
a una tabla, hay que utilizar la siguiente sintaxis;
ALTER TABLE table_name
ADD column_name datatype
En nuestro ejemplo,
vamos a modificar la tabla "books" de nuestros anteriores tutoriales
y vamos a añadir una nueva columna "idpublisher", para que sepamos
quien es el editor de cada libro, con la siguiente instrucción;
Podemos hacer lo mismo en la consola;
Primero con la sentencia
DROP;
Ejemplo 1: En la tabla
"publisher" borramos la columna "address";
Ejemplo 2; En la tabla
"books" borramos la columna "idpublisher":
Podemos hacer lo mismo
con la instrucción ADD;
Añadimos una columna
"idpublisher" en la tabla "books";
SQL - DDL y DML - SELECT
DDL y DML
Las sentencias SQL se
dividen en dos categorías; Lenguaje de definición de datos;
data definition language (DDL) yLenguaje de manipulación de datos ;data manipulation language (DML).
Lenguaje de definición de datos (DDL)
Las sentencias DDL se
utilizan para crear y modificar la estructura de las tablas así como otros
objetos de la base de datos.
·
CREATE - para crear objetos en la base de datos.
·
ALTER - modifica la estructura de la base de datos.
·
DROP - borra objetos de la base de datos.
·
TRUNCATE - elimina todos los registros de la tabla, incluyendo
todos los espacios asignados a los registros.
Lenguaje de manipulación de datos (DML)
Las sentencias de
lenguaje de manipulación de datos (DML) son utilizadas para gestionar datos
dentro de los schemas. Algunos ejemplos:
·
SELECT - para obtener datos de una base de datos.
·
INSERT - para insertar datos a una tabla.
·
UPDATE - para modificar datos existentes dentro de una tabla.
·
DELETE - elimina todos los registros de la tabla; no borra los
espacios asignados a los registros.
Sentencia SELECT
La sentencia SELECT se
utiliza para seleccionar datos de una base de datos.
Se guarda el resultado
en una tabla llamada "result-set".
Sintaxis de la Sentencia
SELECT 1
SELECT column_name,column_name
FROM table_name;
Ejemplo de la sentencia
SELECT
En el siguiente ejemplo
pedimos el "titulo", "autor" y "isbn" de todos
los registros de la tabla "books". Como ven SQL no hace distinción
entre mayúsculas y minúsculas. Podemos escribir SQL tanto en minúsculas como
mayúsculas.
y
Sintaxis de la Sentencia
SELECT 2
SELECT * FROM table_name;
EL asterisco * significa
que queremos todas las columnas de la tabla.
Ejemplo de la sentencia
SELECT * FROM
A continuación podemos
ver el resultado de la petición; SELECT * FROM eli.publisher; toda la
información de la tabla "publisher";
Como ven, estamos
utilizando indistintamente la consola y el workbench. Es importante que la
consola les sea familiar, ya que así la pueden utilizar cuando no tengan una
interface gráfica.
Sentencia SQL WHERE
La sentencia WHERE se
usa para extraer sólo los registros que cumplan con una condición. Funciona
como un filtro.
Sintaxis de la sentencia
SQL WHERE
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
Ejemplo de la sentencia
SQL WHERE
En este ejemplo, estamos
pidiendo todos los registros de la tabla "books" que tengan
"idpublisher"=1. Conseguiremos los resultados que cumplan esa
condición;
Claúsula ORDER BY
La claúsula ORDER BY se
utiliza para ordenar los resultados a través de una o más columnas.
La claúsula ORDER BY
ordena los registros de manera ascendente por defecto. Para hacerlo de manera
descendente, se puede utilizar la claúsula DESC.
Sintaxis de la claúsula
SQL ORDER BY
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
Ejemplo de la claúsula
ORDER BY
En este ejemplo
ordenamos la tabla "books" en orden alfabético utilizando el
"título";
SQL - JOIN
Video Tutorial 5
SQL. Instrucciones SQL JOIN con Mysql Workbench
SQL JOIN se utiliza para
combinar registros de dos o más tablas.
SQL JOIN
La instrucción SQL JOIN
se utiliza para combinar dos o más tablas, tomando un campo común de las dos.
El JOIN más común es: SQL
INNER JOIN (join simple). Un SQL INNER JOIN devuelve todos los
registros de varias tablas que cumplen con la condición.
SINTAXIS INNER JOIN
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
ó
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
INNER JOIN es lo mismo
que JOIN.
Ejemplo INNER JOIN
En nuestro ejemplo
combinamos todos los registros de las tablas "publisher" y
"books" cuando se cumple con la condición
books.idpublisher=publisher.idpublisher.
SQL LEFT JOIN
La claúsula LEFT JOIN
devuelve todas los registros de la tabla de la izquierda (table1), con las
correspondientes de la tabla de la derecha (table2). El resultado es NULL en la
parte de la derecha cuando no hay registros que correspondan con la condición.
SINTAXIS SQL LEFT JOIN
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
en algunas bases de
datos LEFT JOIN es LEFT OUTER JOIN;
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
Ejemplo SQL LEFT JOIN
Aquí podemos ver que el
resultado es el mismo que el INNER JOIN pero esto es porque todos los registros
de "books" tienen un "idpublisher" que coincide con un
"idpublisher" de la tabla "publisher". Si insertamos un
nuevo registro en la tabla "books", con un "idpublisher"
que no coincida con ningun "idpublisher" de la tabla
"publisher" (idpublisher=0) entonces;
cuando escribimos
nuestra consulta LEFT JOIN no vamos a obtener ningún registro de la tabla
"publisher";
Claúsula RIGHT JOIN
La instrucción RIGHT
JOIN devuelve todas los registros de la tabla de la derecha (table2), y todas
los registros correspondientes de la tabla de la izquierda (table1). El
resultado será NULL cuando no haya registros correspondientes de la tabla de la
izquierda.
SQL RIGHT JOIN Syntax
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
ó
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
Ejemplo SQL RIGHT JOIN
Podemos cambiar en la
consulta SQL, el orden de las tablas para que veamos que es lo mismo que el
LEFT JOIN pero al revés:
SQL
- INSERT
Video Tutorial 6 SQL. Instrucciones INSERT INTO/INSERT
INTO SELECT con MySql Workbench
Sentencia SQL INSERT INTO
La sentencia INSERT INTO
se utiliza para insertar nuevos registros a una tabla
Sintaxis SQL INSERT INTO
Se puede escribir la
sentencia INSERT INTO de dos maneras.
La primera forma no
especifica los nombres de las columnas en las que se inserta los datos, sólo se
especifican los valores:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
La segunda forma
especifica tanto los nombres de las columnas como los valores a insertar;
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
EJEMPLO SQL INSERT INTO
Insertamos dos nuevos
valores en una nueva tabla "publisher2";
INSERT INTO eli.publisher2 (name, phone) VALUES ('New Store', '555 666');
A
continuación vemos la tabla con los datos insertados después de la operación
SQL INSERT INTO;
Con SQL, podemos copiar
información de una tabla a otra.
Sentencia SQL INSERT
INTO SELECT
La sentencia INSERT INTO
SELECT selecciona datos de una tabla y los inserta en otra tabla ya existente.
Los registros ya existentes de la tabla destino, no se ven afectadas.
Sintaxis SQL INSERT INTO
SELECT
Podemos copiar todas los
registros de una tabla a otra ya existente:
INSERT INTO table2
SELECT * FROM table1;
O podemos copiar de una
tabla a otra, solamente las columnas que queremos:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
Ejemplo SQL INSERT INTO SELECT
Vamos a copiar los
valores de las columnas "name" y "phone" desde la tabla
"publisher" a la tabla "publisher2";
INSERT INTO eli.publisher2 (name, phone) SELECT name, phone from eli.publisher;
A continuación podemos
ver los datos en nuestra tabla después de la operación INSERT INTO SELECT;
Nota: Tanto en el caso
de la sentencia INSERT INTO como de la sentencia INSERT INTO SELECT, no es
necesario escribir las columnas en la consulta SQL, cuando los valores
coincidan en tipo y tamaño con el perfil de la columna donde van a ser
insertados;
INSERT INTO eli.publisher2 VALUES (4, 'Old store', '555 999');
SQL
- UPDATE SET
Sentencia SQL
UPDATE
La sentencia UPDATE se
utiliza para actualizar registros ya existentes de una tabla.
Nos permite elegir los
campos a actualizar y los datos con que actualizarlos.
Sintaxis SQL UPDATE
La sintaxis básica de la
claúsula UPDATE es la siguiente:
UPDATE table_name
SET column_name = value
WHERE condition
Ejemplo SQL UPDATE
Primero vamos a ver que
datos tenemos en la tabla "publisher2";
Actualizamos las
columnas "phone" y "name" cuando el
"idpublisher=4" con la siguente instrucción;
UPDATE eli.publisher2 SET phone='111 111', name='OLD STORE' WHERE idpublisher=4;
Volvemos a mirar los
datos de la tabla "publisher2" y vemos que los datos han sido
actualizados correctamente;
SQL - DELETE y TRUNCATE
Video Tutorial
8 SQL. Instrucción DELETE FROM y TRUNCATE con MySql Workbench
Sentencia SQL DELETE
La sentencia DELETE se
utiliza para borrar registros de una tabla.
Se especifica de que
tabla se quieren borrar los registros y si se necesita, se puede añadir una
claúsula WHERE para especificar qué registros borrar.
Hay que tener en cuenta
que si se omite la claúsula WHERE, se borrarán todos los registros!
Sintaxis SQL DELETE
DELETE FROM table_name
WHERE some_column=some_value;
Ejemplo SQL DELETE
A continuación vemos
nuestra tabla "publisher3", que es la que vamos a usar en nuestro
ejemplo para borrar datos;
Ahora vamos a borrar las
columnas que tengan el idpublisher=4";
DELETE FROM `eli`.`publisher3` WHERE `idpublisher`='4';
Y el resultado es;
Sentencia SQL TRUNCATE
Elimina todas las filas
de una tabla. Es una instrucción DDL; internamente hace un DROP de la tabla y
después hace un CREATE de la misma tabla.
TRUNCATE TABLE es
similar a la sentencia DELETE pero sin la claúsula WHERE. Tiene la desventaja
de que no se puede borrar selectivamente toda la tabla y la ventaja de que
TRUNCATE TABLE es más rápido y utiliza menos recursos.
Sintaxis SQL TRUNCATE
TRUNCATE table_name;
Ejemplo SQL TRUNCATE
Vamos a borrar la tabla
"publisher2";
TRUNCATE eli.publisher2;
Y a continuación vemos
como quedó la tabla "publisher2";
SQL
- Funciones
Funciones: left, substring, concat, upper, lower con
mysql workbench
FUNCIÓN SQL LEFT
Retorna la parte
izquierda de un string a partir del número de caracteres especificado.
SINTAXIS FUNCION SQL LEFT
LEFT ( character_expression , integer_expression )
1.
"Character_expression" es una expressión de caracteres o
de datos binarios. Puede ser una constante, variable o una columna.
2.
"Integer_expression" es un integer positivo que
especifica los caracteres que retornará de "character_expression".
EJEMPLO DE LA FUNCIÓN
SQL LEFT
Como vemos en la tabla
"books", el nombre de los autores no empieza siempre con mayúscula.
Vamos a cambiarlo, para esté bien escrito.
Aquí vemos la columna
"author";
Y a continuación vemos
como, la función LEFT(), retorna la primera letra de la columna
"author", que en este caso es la letra "e";
FUNCIÓN SQL UPPER
La función UPPER()
convierte el valor del campo a mayúscula.
SINXTAXIS DE LA FUNCIÓN
SQL UPPER
SELECT UPPER(column_name) FROM table_name;
Ejemplo de la función
SQL UPPER
Una vez que tenemos la
primera letra del autor, queremos que esté en mayúsculas y esto lo conseguimos
con la siguiente instrucción;
FUNCIÓN SQL SUBSTRING
La función SUBSTRING()
retorna el substring especificado.
SINTAXIS DE LA FUNCIÓN
SQL SUBSTRING
SUBSTRING (string, position, [length])
Donde
"position" y "length" son integers. Esta sintaxis dice;
retornar el substring dado desde el caracter en la posición indicada
(position), con la longitud indicada (length).
En MySQL y Oracle, la
longitud (length) es un argumento opcional. Cuando "length" no se
especifica, se retorna el string completo a partir del caracter en la posición
indicada.
EJEMPLO DE LA FUNCIÓN SQL
SUBSTRING
A continuación vemos
como la función devuelve todo el string, de la columna "author", a
partir de la segunda letra:
FUNCIÓN SQL LOWER
La función LOWER()
retorna una expresión de caracteres convertida de mayúsculas a minúsculas.
SINTAXIS DE LA FUNCIÓN
SQL LOWER
SELECT LOWER(column_name) FROM table_name;
EJEMPLO DE LA FUNCIÓN
SQL LOWER
Desde el principio del
tutorial queremos obtener los nombres de los autores escritos correctamente;
con la primera letra en mayúsculas y las demás en minúsculas. Ya hemos
conseguido la primera letra en mayúscula y ahora vamos a conseguir el resto de
la palabra en minúsculas. Para esto utilizamos la siguiente función LOWER();
FUNCIÓN SQL CONCAT
Retorna un string que es
el resultado de concatenar dos o más valores (strings).
SINTAXIS FUNCIÓN SQL CONCAT
CONCAT ( string_value1, string_value2 [, string_valueN ] );
EJEMPLO DE LA FUNCIÓN
SQL CONCAT
Siguiendo con el ejemplo
queremos unir la primera letra con el resto del nombre del autor. Para esto
utilizaremos la función CONCAT, que unirá la primera letra en mayúscula de la
columna "autor" con el resto de la palabra en minúscula;
SQL - Subselects
Subselects
(Subconsultas) con MySql Workbench SINTAXIS DE LAS SUBCONSULTAS
Los subselects o
subconsultas se utilizan normalmente dentro de una sentencia SELECT.
La sintaxis básica es la
siguiente:
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
EJEMPLO DE UNA
SUBCONSULTA (SUBQUERIES)
A continuación tenemos
nuestra tabla "authors";
Vamos a seleccionar el
autor más joven utilizando la siguiente consulta:
SELECT * FROM eli.authors where birthday= (select max(birthday) from eli.authors);
Y este es el resultado;
Para ejemplos más
complicados no dude en ver el video tutorial al comienzo de esta página.
SQL
- Count y Group By
Video Tutorial SQL 11. Count, Group By con MySql
Workbench
FUNCIÓN SQL COUNT
La FUNCIÓN SQL COUNT
retorna el número de registros de una consulta.
SINTAXIS DE LA FUNCIÓN
SQL COUNT(*)
SELECT COUNT(*)
FROM table_name
EJEMPLO DE LA FUNCIÓN
SQL COUNT(*)
A continuación tenemos
la tabla "authors".
Con la función Count()
podemos ver el número de autores que tenemos en la tabla;
FUNCIÓN SQL GROUP BY
La función SQL GROUP BY es utilizada para agrupar datos idénticos en grupos.
SINTAXIS DE LA FUNCIÓN
SQL GROUP BY
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
EJEMPLO DE LA FUNCIÓN
SQL GROUP BY
Para este ejemplo vamos
a ver primero nuestra tabla "books";
Basándonos en esta
tabla, vamos a escribir una consulta para agrupar a los autores de los libros;
SQL
- AND ,OR
Operadores lógicos SQL AND ,OR con MySql Workbench
OPERADOR LÓGICO SQL AND
El operador AND muestra
un registro cuando la primera condición y la segunda se cumplen.
EJEMPLO DEL OPERADOR SQL
AND
Tenemos la tabla
"books" con la siguiente información;
Y queremos seleccionar
los títulos de los libros que tiene isbn="4444" Y el
author="edu". En este caso sólo nos retornará un libro; "sql in
15 minutes".
Hacemos la selección con
la siguiente consulta;
SELECT TITLE FROM eli.books WHERE isbn='4444' and AUTHOR='edu';
Como podemos ver a
continuación, el resultado es el esperado;
Cuando usamos AND, es
conveniente poner la condición con menor probabilidad de que se cumpla, en
primer lugar. El sistema de la base de datos evalúa las condiciones de
izquierda a derecha. Si tenemos dos o más operadores AND en una condición, el
que está a la izquierda, es el primero en ser evaluado, y sólo si es verdadera,
se evalua la siguiente condición. Si, esa condición también es verdadera, se
evaluará la tercera condición. Si ponemos la condición menos probable en primer
lugar, se ahorra trabajo al sistema de la base de datos, aumentando así la
velocidad.
OPERADOR LÓGICO SQL OR
El operador OR, muestra
los registros cuando se cumple la primera condición Ó la segunda.
EJEMPLO DEL OPERADOR SQL
OR
Con la misma tabla
"books" podemos seleccionar los títulos de los libros que tienen el
"isbn=4444" o el autor="eli":
SELECT TITLE FROM eli.books WHERE isbn='4444' or AUTHOR='ELI';
Hasta ahora hemos
utilizado un sólo operador AND o OR dentro de una claúsula WHERE, pero se
pueden incluir tantas como sean necesarias. También se pueden mezclar los
operadores AND y OR en una misma claúsula.
SQL
- SELECT DISTINCT
TUTORIAL SQL SELECT DISTINCT con MySql Workbench
SQL SELECT DISTINCT
La claúsula DISTINCT nos
devuelve valores únicos. En una tabla, una columna puede contener valores
duplicados; y algunas veces sólo se necesita un listado de los valores
diferentes.
SINTAXIS SELECT DISTINCT
SQL
La claúsula DISTINCT se
añade a las sentencias SELECT , justo después de la palabra clave SELECT.
SELECT DISTINCT column_name,column_name
FROM table_name;
EJEMPLO SELECT DISTINCT SQL
Podemos ver como en
nuestra tabla "books" tenemos duplicados los autores "eli"
y "edu";
Si queremos solamente el
listado de los valores diferentes, podriamos escribir la siguiente consulta
sql;
SELECT DISTINCT AUTHOR FROM eli.books;
Obteniendo este
resultado;
SQL
- LIKE
TUTORIAL SQL operador LIKE con MySql Workbench
OPERADOR SQL LIKE
El operador LIKE permite
utilizar caracteres comodín en la búsqueda de un patrón dentro de una columna.
Un caracter comodín es aquel que no coincide con un caracter específico si no
con cualquier caracter o caracteres.
El operador LIKE selecciona
valores alfanuméricos con un determinado patrón.
SINTAXIS DEL OPERADOR SQL LIKE
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
EJEMPLO SQL LIKE
Usaremos la siguiente
tabla "publisher3" para nuestro ejemplo:
En nuestro ejercicio
queremos seleccionar los nombres de los "publishers" (editores), que
terminan con una "a".
Utilizaremos la
siguiente sentencia SQL:
SELECT * FROM eli.publisher3 where name like '%a';
Utilizando MySQL
Workbench como interfaz gráfica vemos el siguiente resultado;
El símbolo "%"
se utiliza para definir los comodines en el patrón, tanto delante como detrás
de otros caracteres;
Hay que tener en cuenta
que si estamos utilizando MS Access, hay que cambiar el símbolo de porcentaje
(%), por el de un asterisco (*):
SELECT * FROM eli.publisher3 WHERE name like '*a';
En algunas bases de
datos, el operador LIKE es sensible a las mayúsculas y las minúsculas; en otras
no. Oracle, por ejemplo si que lo es y SQL, como vemos a continuación, no;
Podemos utilizar el
operador LIKE junto con el operador NOT, que nos devolverá aquellos registros
que no coincidan con el patrón.
·
Video tutorial
sobre el operador SQL BETWEEN con MySql
OPERADOR SQL BETWEEN
BETWEEN es un operador
muy útil a utilizar dentro de la claúsula WHERE, para especificar un rango de
valores inclusivos. Se utiliza normalmente con fechas pero también se puede usar
con strings y con números.
SINTAXIS DEL OPERADOR SQL BETWEEN
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
EJEMPLO DEL OPERADOR SQL
BETWEEN
Para nuestro ejemplo,
utilizaremos nuestra tabla "authors":
Con la siguiente
sentencia SQL, queremos seleccionar los autores nacidos entre el 2 de febrero
de 1971 y el 1 de enero de 1985:
SELECT * FROM eli.authors WHERE birthday BETWEEN '1971-02-02' AND '1985-01-01';
Obteniendo el siguiente
resultado;
Utilizando el operador
BETWEEN, podemos ver que nos devuelve los mismos resultados que los operadores
"mayor o igual" (>=) y "menor o igual" (<=). Es
importante recordar que el operador BETWEEN es inclusivo.
Se puede utilizar
BETWEEN con más tipos de datos además de fechas, como por ejemplo texto;
A continuación tenemos
la tabla "books", que vamos a usar para este ejemplo;
Queremos seleccionar los
registros que su título empieza con la letra "a" a la "s";
SELECT * FROM eli.books WHERE title BETWEEN 'a' and 's';
Obtendremos en los
resultados los títulos que empiezan con la "a", la "b", etc
hasta la "r", que es la última letra antes de la "s". Sin
embargo no obtendremos resultados que empiecen con la letra "s". Obtendriamos
un registro, en el caso de que hubiera un título compuesto de la letra
"s" solamente. Cualquier título que empiece con la letra
"s" y un sólo caracter más, es mayor que la "s" y está
fuera del rango de valores.
Uso del operador NOT con
el operador BETWEEN:
Podemos utilizar el
operador BETWEEN en conjunción con el operador NOT. En este caso SQL selecciona
el valor que no esté en el rango especificado.
De nuestra tabla
"publisher";
Vamos a seleccionar los
nombres de los editores, que tengan un número de teléfono que no esté dentro
del rango "4999" y "5010";
SELECT name FROM eli.publisher where phone not between '4999' and '5010';
SQL - UNION
Video tutorial
del operador SQL UNION con MySql
OPERADOR SQL UNION
El operador UNION se
utiliza cuando se necesita combinar los resultados de dos consultas diferentes.
Los resultados no tienen que tener ninguna vinculación entre ellos; se quiere
mostrar todos los resultados juntos.
A través del operador
UNION se pueden juntar los resultados de dos o más consultas SELECT.
SINTAXIS DEL OPERADOR SQL UNION
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
El operador UNION se
coloca entre las dos consultas para indicarle a la base de datos que queremos
que los resultados de cada selección se presenten juntos en el resultado.
Los nombres de las
columnas que aparecen en el resultado de una UNION son normalmente iguales al
nombre de las columnas de la primera selección de la UNION.
EJEMPLO SQL UNION
Vamos a unir los
resultados de las tablas "publisher" y "publisher3";
TABLA PUBLISHER
|
TABLA PUBLISHER3
|
|
|
Unimos las columnas
"names" de nuestras tablas con la siguiente sentencia SQL;
SELECT name FROM eli.publisher3
UNION
SELECT name FROM eli.publisher;
Para ver el resultado utilizamos MySql Workbench;
Para utilizar el
operador UNION hay que tener en cuenta las siguientes reglas;
1.
Cada consulta debe producir el mismo número de columnas;
2.
Los tipos de datos de las columnas deben ser los mismos o al menos
la base de datos debe poder convertir esos datos para que sean los mismos.El
tipo de dato de cada columna se determinó en la creación de la tabla. Si no se
está seguro del tipo de dato de una columna, se puede ver en la base de datos.
UNION ALL
En el ejemplo del
operador UNION, vemos que se devuelve sólo los nombres que son únicos. Si
quieres que se devuelvan todos los datos de la base de datos, aunque estén
repetidos, hay que utilizar la claúsula ALL, como vemos en la siguiente
sentencia SQL:
SELECT name FROM eli.publisher3
UNION ALL
SELECT name FROM eli.publisher;
A continuación vemos que aparecen todos los registros, incluidos "eli" y "edu4java", repetido dos veces;
Claúsula ORDER BY
utilizado con UNION
La claúsula ORDER BY se
escribe al final de las sentencias UNION y se refiere a la primera consulta
SELECT.
En DB2 de IBM, la
claúsula ORDER BY se escribe al final solamente si el nombre de la columna que
se ordena aparece en todas las consultas.
En Oracle, la sintaxis
del operador UNION es diferente. No se especifica el nombre del columna a
ordenar, si no la posición donde aparece la columna dentro del SELECT.
SQL - CREATE INDEX
Sentencia SQL
CREATE INDEX con MySql
Los índices en una tabla
son análogos a un catálogo en una biblioteca; si no se tiene un catálogo y hay
que buscar un libro determinado en la Biblioteca Británica de Londres, con más
de 150 millones de ejemplares, hay que buscar libro por libro y eso llevará un
ratito :)
Sin embargo, con un
catálogo, se busca el libro en el catálogo y se va directamente a la estanteria
indicada.
Sin un índice, la base
de datos tiene que buscar en todos y cada uno de los registros de la tabla
(este proceso se llama escaneo de tabla). Si tenemos un índice, la base de
datos recorre el índice, encuentra donde están los datos y los va a buscar.
Esta hace que el proceso sea mucho más rápido.
Un índice guarda un
puntero al registro de la tabla
¿Cómo hace para
encontrar los otros valores que están en ese mismo registro? Los índices de la
base de datos almacenan punteros a
los registros correspondientes de la tabla. Un puntero es una referencia al
espacio en la memoria del disco donde está guardado los datos de los registros
correspondientes en la tabla.
En el índice, por tanto,
se guarda el valor de la columna del índice así como un puntero al registro de
la tabla donde están los demás valores de esa fila.
Imaginemos que nuestra
tabla "books" que tenemos a continuación, tiene miles de registros y
que queremos encontrar el autor del libro "Android in 3 days".
Podemos crear un índice con la columna "title". Este índice será como
este;
|
Index
|
||||||||||||||
|
|
Uno de los valores del
índice para un "title" podría ser algo como (“Android in 3 days”,
0×82829), donde 0×82829 es la dirección en el disco (puntero), donde esta la
fila con los datos para “Android in 3 days”. Si no se tiene el puntero se
tendría un único valor, lo que no tendría valor ya que no se podría encontrar
el resto de los valores para ese registro- como el "autor" del libro.
SINTAXIS
DE LA SENTENCIA SQL CREATE INDEX
La
creación de un índice se hace a través de una sentencia CREATE INDEX, que te
permite nombrar al índice, especificar la tabla y la columnas o columnas para
indexar e indicar si queremos que el indice esté ordenado ascendentemente (ASC)
o descendentemente (DESC).
Esto
varía según la base de datos, en MySQL 5.0 estas palabras se permiten para
extensiones futuras para especificar almacenamiento de índice ascendente o
descendente. Actualmente se parsean pero se ignoran; los valores de índice
siempre se almacenan en orden ascendente.
Si
una columna se pide en orden descendente en una sentencia SELECT, el proceso
será más rápido si esa columna tiene un índice creado, ordenado
descendentemente.
El
formato básico de la sentencia es la siguiente;
CREATE INDEX <index_name>
ON <table_name> (<column_names>)
SQL
CREATE UNIQUE INDEX
Los
índices también pueden ser "únicos". Este tipo de índices previene de
la entrada de valores duplicados en la columna o combinación de columnas en
donde existe índice.
SINTAXIS
DE LA SENTENCIA SQL CREATE UNIQUE INDEX
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
Se
pueden crear índices en cualquier momento; no hay que hacerlo justo después de
ejecutar la sentencia CREATE TABLE. También se puede crear índices en las
tablas que ya tienen datos. Lo que no se puede hacer, es crear un índice único
en una tabla que ya contiene valores duplicados. MySQL lo identifica y no crea
el índice. El usuario tiene que eliminar primero los valores duplicados antes
de crearlo.
La
utilización de los índices tiene un coste asociado. Los índices utilizan un
espacio en el disco y harán que las operaciones INSERT, UPDATE, y DELETE
vayan más lentas, ya que cada vez que una de estas operaciones se lleva a cabo,
se actualizan los índices así como la base de datos.
Nota: La
sintaxis de la creación de los índices puede ser diferente según la base de
datos. Por lo tanto hay que verificar la sintaxis según la que se esté usando.
ELIMINAR
INDICES
La
sentencia DROP INDEX se utiliza para eliminar los índices.
DROP INDEX <index_name> ON <table_name>
No hay comentarios:
Publicar un comentario