Sentencias Básicas en SQL

Para los “tiquismiquis” ¿qué es un compendio?

Compendio (del latín compendĭum) es el nombre que recibe una breve pero detallada y precisa compilación de un área determinada deĺ conocimiento humano. En la mayoría de los casos el área de conocimiento se referirá a un cierto campo delimitado de interés (en este caso SQL). A veces puede ser un resumen de una obra mayor. Dentro de la brevedad de la exposición, el compendio puede contener materia complicada y extensa.

Conectarse a mysql

CODE:

  1. mysql -h localhost -u root -p pruebas

albertjh@portatil:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.51a-3ubuntu5 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Crear una base de datos

SQL:

  1. CREATE DATABASE pruebas;

Usar una base de datos

SQL:

  1. USE pruebas;

mysql> use prueba;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Ver estructura de una tabla de datos

SQL:

  1. DESCRIBE Alumnos ;

mysql> describe alumnos;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Id        | int(11)     | YES  |     | 0       |       |
| nombre    | varchar(10) | YES  |     | NULL    |       |
| apellidos | varchar(30) | YES  |     | NULL    |       |
| tlfn      | int(10)     | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>

Ver tablas de datos

SQL:

  1. SHOW TABLES;

mysql> show tables;
+------------------+
| Tables_in_prueba |
+------------------+
| Notas            |
| alumnos          |
| mascotas         |
+------------------+
3 rows in set (0.00 sec)

Borrar tabla de datos

SQL:

  1. DROP Notas;

Crear una tabla de datos

SQL:

  1. CREATE TABLE Alumnos(
  2. id INT NOT NULL,
  3. nombre VARCHAR (10) NOT NULL,
  4. apellido VARCHAR (10) NOT NULL,
  5. telefono LONG,
  6. CONSTRAINT alumnosPk1 PRIMARY KEY (id)
  7. );
  8. CREATE TABLE Notas(
  9. id INT NOT NULL,
  10. modulo VARCHAR (10) NOT NULL,
  11. parcial INT NOT NULL,
  12. nota INT NOT NULL CHECK (VALUE BETWEEN 1 AND 10),
  13. CONSTRAINT notasPk1 PRIMARY KEY (id, modulo),
  14. CONSTRAINT notasfk1 FOREIGN KEY (id) REFERENCES Alumnos(id)
  15. );

Insertar datos en una tabla de datos

SQL:

  1. INSERT INTO Alumnos VALUES(‘1’,‘juan’,‘garcia’,‘949494949’);
  2. INSERT INTO Alumnos VALUES(‘2’,‘maria’,‘alvarez’,);
  3. INSERT INTO Alumnos VALUES(‘3’,‘carlos’,‘perez’,‘6458544’);
  4. INSERT INTO Alumnos VALUES(‘4’,‘alberto’,‘jimenez’,);
  5. INSERT INTO Alumnos VALUES(‘5’,‘vanesa’,‘galera’,‘912552522’);
  6. INSERT INTO Alumnos VALUES(‘6’,‘sergio’,‘molina’,‘5464465656’);
  7. INSERT INTO Alumnos VALUES(‘1’,‘juan’,‘garcia’,‘94949’);
  8. INSERT INTO Alumnos VALUES(‘2’,‘maria’,‘alvarez’,‘0’);
  9. INSERT INTO Alumnos VALUES(‘3’,‘carlos’,‘perez’,‘6454’);
  10. INSERT INTO Alumnos VALUES(‘4’,‘alberto’,‘jimenez’,‘0’);
  11. INSERT INTO Alumnos VALUES(‘5’,‘vanesa’,‘galera’,‘9125’);
  12. INSERT INTO Alumnos VALUES(‘6’,‘sergio’,‘molina’,‘5464’);

Visualizar datos en una tabla de datos

SQL:

  1. SELECT * FROM Alumnos;

Visualizar datos seleccionados en una tabla de datos

Usamos la sentencia WHERE:

SQL:

  1. SELECT * FROM Alumnos
  2. WHERE (id> 5 AND (nombre=‘alberto’);

mysql> SELECT * FROM alumnos WHERE id < 5 AND nombre="Alberto";
+------+---------+-------------------+-----------+
| Id   | nombre  | apellidos         | tlfn      |
+------+---------+-------------------+-----------+
|    1 | Alberto | Jimenez********** | 67922**** |
+------+---------+-------------------+-----------+
1 row in set (0.00 sec)

Visualizar datos seleccionados en una tabla de datos, por orden

Usamos la sentencia ORDER BY, si no indicamos parámetros es ascendente, el contrario es DESC

SQL:

  1. SELECT apellido, nombre
  2. FROM Alumnos
  3. ORDER BY apellido, nombre
  4. ;

Visualizar datos seleccionados en una tabla de datos:
AND Y OR

Ejemplo con AND y OR:

SQL:

  1. SELECT Alumnos.id, nombre, apellido, telefono, modulo, parcial, nota
  2. FROM Alumnos,Notas
  3. WHERE ((Alumnos.id = Notas.id) AND (modulo LIKE ‘sistemas’)) OR ((modulo LIKE “analisis”) AND (nota&gt; 5))
  4. ORDER BY Alumnos.id,modulo;

Visualizar datos seleccionados en una tabla de datos sin repetirse

Usamos la sentencia DISTINCT:

SQL:

  1. SELECT DISTINCT modulo
  2. FROM Notas
  3. WHERE nota&gt; 5;

Visualizar datos seleccionados en una tabla de datos contándolos

Usamos la sentencia COUNT:

SQL:

  1. SELECT COUNT(nota)
  2. FROM Notas;

mysql> select count(nota) FROM Notas;
+-------------+
| count(nota) |
+-------------+
|           8 |
+-------------+
1 row in set (0.03 sec)

Renombrar nombre de tablas “alias”

Usamos la sentencia AS:

SQL:

  1. SELECT modulo,avg(nota) AS media
  2. FROM Notas AS n
  3. WHERE n.id=3 OR n.id=1 OR n.id=2
  4. GROUP BY modulo
  5. ORDER BY media DESC;

+--------+--------+
| modulo | media  |
+--------+--------+
| ASI    | 9.0000 |
| DAI    | 7.7143 |
+--------+--------+
2 rows in set (0.05 sec)

Visualizar datos seleccionados en una tabla de datos,  su máximo, mínimo, media y suma

Usamos las sentencias MAX, MIN ,AVG y SUM:

SQL:

  1. SELECT MAX(nota)
  2. FROM Notas
  3. WHERE id=1;
  4. SELECT AVG(nota)
  5. FROM Notas
  6. WHERE id=1;
  7. SELECT MIN(nota)
  8. FROM Notas;
  9. SELECT AVG(nota) AS media
  10. FROM Notas
  11. WHERE modulo = “analisis”;
  12. SELECT SUM(nota) AS Suma
  13. FROM Notas;

Borrar datos de una tabla

SQL:

  1. DELETE * FROM Notas WHERE condicion;
SQL:

  1. DELETE * FROM Notas WHERE condicion;
  2. SELECT a.id, a.nombre, n.modulo, n.nota
  3. FROM Alumnos a ,Notas n
  4. WHERE a.id = n.id ;

Sentencia LIKE

En entornos no unix los operandos especiales son: * y ?
* Una o varias apariciones
? Una o ninguna apariciones
En entornos unix: % y _
% Una o varias apariciones
_ Una o ninguna apariciones

SQL:

  1. SELECT *
  2. FROM Alumnos,Notas
  3. WHERE Alumnos.id = Notas.id AND modulo LIKE “%sistemas” OR modulo LIKE “00_%Diurno”
  4. ORDER BY apellido;


mysql> select nombre from Personas where nombre like "%, J%";
+---------------------+
| nombre              |
+---------------------+
| HERRERO, JOSE       |
| DE LA ROSA, JULIAN  |
| FERNANDEZ, JUAN     |
| MOTOS, JUAN         |
| ARNAZ, JOSE ANTONIO |
+---------------------+
5 rows in set (0.02 sec)

Operando básicos

< Menor que
>
Mayor que
>=
Mayor o igual
<=
Menor o igual
!=
Distinto de

Sentencia SubStr e InStr

SubStr se usa para seleccionar una determinada cadena de texto, por el contrario InStr devuelve un número entero donde encuentra el caracter buscado dentro de una cadena de texto.

SQL:

  1. SELECT SUBSTR(nombre, INSTR(nombre, ‘,’)+2) Nombre
  2. FROM Personas;


mysql> SELECT SUBSTR(nombre, INSTR(nombre, ',')+2) Nombre
-> FROM Personas;
+--------------+
| Nombre       |
+--------------+
| CARLOS       |
| ALVARO       |
| GUILLERMO    |
| SANTIAGO     |
...
| JOSE ANTONIO |
| PABLO        |
+--------------+
47 rows in set (0.40 sec)

Sentencia Between

Para evitar hacer repeticiones tales como:
… AND ((nota >= 5) AND (nota <= 8));
Se usa between:

SQL:

  1. SELECT nombre, apellido, modulo, nota
  2. FROM Alumnos, Notas
  3. WHERE (Notas.id = Alumnos.id) AND (nota BETWEEN 5 AND 8);

Sentencia Round

Sirve para redondear, le podemos indicar cuantos decimales incluiremos.

SQL:

  1. SELECT ROUND(AVG(importe), 2)
  2. FROM Multas;


mysql> select ROUND(AVG(importe),2) REDONDEO from Multas;
+----------+
| REDONDEO |
+----------+
|   199.09 |
+----------+
1 row in set (0.00 sec)

Sentencia Count

Sirve para contar. Podemos usar el * para que el motor nos escoja la opción o ponerlos nosotros mismos.

SQL:

  1. SELECT count(*) “NUMERO DE MULTAS”
  2. FROM Multas;


mysql> select count(ref) "NUMERO DE MULTAS" from Multas;
+------------------+
| NUMERO DE MULTAS |
+------------------+
|               35 |
+------------------+
1 row in set (0.00 sec)

Subselects con IN o NOT IN

Podemos hacer subselects en una misma línea pudiendo restringir mucho más los datos a seleccionar:

SQL:

  1. SELECT DISTINCT nombre, apellido
  2. FROM Alumnos
  3. WHERE id IN ( SELECT DISTINCT id
  4. FROM Notas
  5. WHERE nota&gt;=5 ) ;
SQL:

  1. SELECT nombre,apellido
  2. FROM Alumnos AS A, Notas AS N
  3. WHERE (A.id = N.id) AND (N.nota&gt; ( SELECT AVG(nota) FROM Notas ) ) ;

Si necesitamos hacer muchas selecciones como IN solo devuelve un campo tenemos que hacer GROUP BY:

SQL:

  1. SELECT MAX(resultado.Suma) AS Maximo
  2. FROM (SELECT modulo, SUM(nota) AS Suma
  3. FROM Notas
  4. GROUP BY modulo) resultado ;
About these ads

3 comments

Deja un comentario

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s