sql >> Base de Datos >  >> RDS >> Database

Hoja de trucos SQL:¿Qué es SQL, los comandos SQL y la inyección SQL?

Usar el lenguaje de consulta estructurado (SQL) puede parecer complicado al principio, pero luego se volverá más fácil y mucho más conveniente. Solo necesitas práctica.

Si está buscando mejores formas de administrar los datos en su base de datos o si simplemente tiene curiosidad acerca de las posibilidades que SQL le abre, ¡entonces ha venido al lugar correcto!

¿Por qué SQL?

La mayoría de las personas han oído hablar de SQL, pero es posible que no estén completamente familiarizadas con su funcionamiento. Puedes pensar en SQL como un lenguaje especial para hablar con bases de datos. Dado que las computadoras no entienden idiomas naturales como el inglés, necesita una forma de traducir. Y aquí tenemos SQ para ordenar a las bases de datos que presenten algunos datos o que almacenen nuevos datos. Varias bases de datos, como Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, etc. lo utilizan.

SQL nos permite recuperar, insertar, actualizar y eliminar datos de bases de datos con la ayuda de consultas SQL. Una consulta SQL usa palabras llamadas Cláusulas. Las cláusulas consisten en varios elementos que trabajan juntos para llevar a cabo alguna acción en la base de datos. Las tres cláusulas más comunes son SELECT, UPDATE y DELETE. Los encontrará en casi todas las sentencias de SQL.

Tomemos la sintaxis de consulta más básica:

SELECT * FROM table_name;

Esta consulta seleccionará todos los datos almacenados en la tabla en particular. El asterisco (*) indica que se deben devolver todas las columnas de esa tabla, sin importar cuántas de ellas tenga la tabla.

Hoja de referencia de consulta SQL:¿Qué comandos hay?

Aquí le presentamos una selección de los comandos y cláusulas SQL más utilizados que necesitará mientras trabaja con bases de datos. Empecemos.

SQL CREAR BASE DE DATOS

No puede hacer mucho en SQL sin una base de datos, por lo que es mejor eliminarlo primero.

CREAR BASE DE DATOS es un comando para crear nuevas bases de datos en su servidor. Por ejemplo, desea un nuevo comienzo sin tablas ni datos existentes. La sintaxis es la siguiente:

CREATE DATABASE testDB;

CREAR TABLA SQL

Las bases de datos relacionales almacenan los datos en tablas. Por lo tanto, para hacer uso de nuestras bases de datos, necesitamos crear tablas en ellas. Esta operación está estrechamente relacionada con el cambio de estructuras de tablas, por ejemplo, renombrar columnas, agregar nuevas columnas, eliminar columnas, etc.

Pero la modificación de la tabla solo es posible para una existente. Por lo tanto, tendrá que CREAR TABLA primero. Otro comando relacionado es AGREGAR COLUMNA, que le permitirá agregar columnas adicionales a una tabla existente.

CREATE TABLE [dbo].[Students](
	[Name] [nvarchar](100) NOT NULL,
	[Bio] [ntext] NULL,
	[DateOfBirth] [datetime] NOT NULL,
);

TABLA DE BOTA SQL

Hay un momento y un lugar para eliminar tablas, y nunca es una buena idea hacerlo por capricho. DROP TABLE elimina una tabla completa con todos sus registros, índices y restricciones de la base de datos.

No hay forma de recuperar una tabla una vez que la has soltado. Asegúrese de que necesita y desea eliminar esta tabla en particular. De lo contrario, la única opción para recuperar los datos es restaurarlos desde la copia de seguridad.

DROP TABLE [dbo].[Students];

SELECCIÓN SQL

Quizás la función más utilizada en SQL es Seleccionar. Su propósito es recuperar datos de una o más tablas para su posterior manipulación y análisis. Esta funcionalidad permite a los usuarios aislar y analizar subconjuntos de datos (tablas) especificando varios atributos (filtros).

Para seleccionar un grupo de filas, escriba una consulta que identifique qué filas deben devolverse, según uno o más filtros. Los filtros se especifican mediante cualquier número de funciones o expresiones diferentes combinadas con otras operaciones de acuerdo con sus objetivos.

SELECT TOP (1000) [Name]
      ,[Phone]
      ,[Website]
      ,[Address]
      ,[City]
      ,[State]
      ,[Country]
      ,[Description]
      ,[Employees]
FROM [test].[dbo].[company]

INSERTAR SQL

La función INSERT inserta filas de datos en una tabla en SQL. La estructura básica de esta instrucción especifica la tabla para agregar datos y las columnas para incluir esos datos. A continuación, define cada valor que debe colocarse en cada columna dentro de esa fila. Si recién está aprendiendo a usar SQL, puede parecer confuso, pero con un poco de práctica, se vuelve mucho más fácil.

INSERT INTO [dbo].[company]
           ([Name]
           ,[Phone]
           ,[Website]
           ,[Address]
           ,[City]
           ,[State]
           ,[Country]
           ,[Description]
           ,[Employees])
     VALUES(
           'NameValue'
           ,'PhoneValue'
           ,'WebsiteValue'
           , 'AddressValue'
           , 'CityValue'
           , 'StateValue'
           , 'CountryValue'
           , 'DescriptionValue'
           , 2 ) 

ACTUALIZACIÓN SQL

La instrucción UPDATE es necesaria cuando queremos cambiar los datos almacenados en las tablas. También es una de las sentencias SQL más utilizadas, aplicable tanto a una fila simple como a varios registros.

La sintaxis predeterminada incluye los componentes SET y WHERE. CONFIGURAR define cómo se deben actualizar los registros y DÓNDE determina qué registro(s) debe(n) actualizarse. Sin la cláusula WHERE, el comando actualizará todos los registros de la tabla.

UPDATE [dbo].[company]
   SET [Name] = <Name, nvarchar(max),>
      ,[Phone] = <Phone, nvarchar(max),>
      ,[Website] = <Website, nvarchar(max),>
      ,[Address] = <Address, nvarchar(max),>
      ,[City] = <City, nvarchar(max),>
      ,[State] = <State, nvarchar(max),>
      ,[Country] = <Country, nvarchar(max),>
      ,[Description] = <Description, nvarchar(max),>
      ,[Employees] = <Employees, int,>
 WHERE <Search Conditions,,>

PROMEDIO DE SQL

La función AVG devuelve el promedio de valores numéricos en una columna como un número entero o de punto flotante. Como con la mayoría de las funciones de SQL, puede ser parte de una instrucción SELECT o una instrucción INSERT. Cuando se usa dentro de la instrucción SELECT, debe estar entre paréntesis. A continuación puede ver el ejemplo de consulta con AVG() que debe devolver la edad promedio de todos los empleados:

SELECT avg(age) FROM employee;

SUMA SQL

La función SUMA devuelve la suma de todos los valores de una columna. Esto es muy útil cuando se trata de varias columnas. El resultado sería una descripción general de esa tabla que suma todos los datos que contiene.

SELECT  Sum(Employees) as Sum, 
		AVG(Employees) as AVG,
		MAX(Employees) as Max, 
		MIN(Employees) as Min
FROM [test].[dbo].[company]

ORDEN SQL POR

SQL tiene muchos operadores, pero uno de los más utilizados es ORDER BY. Ordena los datos según la expresión especificada. Por lo tanto, si su conjunto de datos contiene varios registros con valores similares, se ordenarán según sus preferencias.

En otras palabras, el operador ORDER BY en SQL es un operador de comparación. Le permite comparar valores de una columna con valores de otra columna y devolver los resultados tal como están ordenados por esta comparación.

La sintaxis es ORDER BY nombre-columna . Puede ser útil si necesita encontrar información ordenada. Por ejemplo, cuando busca filas que tienen el mismo valor o cuando determina qué filas son las más populares.

SELECT * FROM Readers
ORDER BY City;

SQL GRUPO POR

El operador GROUP BY es una herramienta muy importante y útil en SQL. Se puede utilizar para agrupar las filas de datos que comparten algún tipo de característica o propiedad común. Por lo tanto, ordena las filas por una o más columnas especificadas en la consulta. Esta cláusula generalmente se coloca al final de la instrucción SQL después de que se ejecutan todas las demás cláusulas.

Un caso típico es usar GROUP BY para resumir datos en su base de datos. La instrucción SELECT usa la cláusula WHERE para filtrar registros no deseados del conjunto de resultados y luego usa la cláusula GROUP BY para agrupar registros relacionados según alguna característica que especifique.

SELECT * FROM Readers
GROUP BY Country;

Inyección SQL

Cualquier programador web ha oído hablar de los ataques de inyección SQL. Son el flagelo de Internet y dejan heridas profundas en muchos sitios web y aplicaciones populares que pueden tardar años en sanar. Si desea evitar ser víctima de estos ataques, es importante comprender qué son, cómo funcionan y qué puede hacer para protegerse contra ellos en el futuro.

Si no está familiarizado con los ataques de inyección SQL, su aplicación web puede ser vulnerable a ellos. La amenaza es lo suficientemente grave como para generar una nueva tecnología para detectar tales ataques. Sin embargo, confiar en la tecnología no es suficiente. Para ayudar a los profesionales de la seguridad, hemos elaborado una práctica hoja de trucos que explica cómo funciona una inyección SQL en un lenguaje sencillo.

Los atacantes ejecutan consultas no autorizadas para obtener acceso a datos confidenciales, modificar una base de datos existente o eliminar datos. De esta forma, la inyección SQL es una técnica de inyección de código que ataca las aplicaciones basadas en datos donde se insertan declaraciones SQL maliciosas en un campo de entrada para su ejecución (generalmente a través de una solicitud HTTP).

Un ataque exitoso le da al atacante acceso a todos los servidores de bases de datos de ese sitio web. Una vez dentro, un atacante puede recuperar los contenidos de las bases de datos, cambiarlos o incluso destruirlos. Por eso es tan importante que los desarrolladores web entiendan cómo su lenguaje de programación hace que las inyecciones de SQL sean más fáciles o más difíciles para los posibles atacantes.

Hay dos tipos principales de ataques de inyección SQL:basados ​​en errores y ciego .

Un ataque basado en errores ocurre cuando un desarrollador no desinfecta la entrada del usuario. Esto da como resultado pasar datos incorrectos a un intérprete y causar errores (o comportamiento inesperado) para los usuarios legítimos. La causa del ataque basado en errores suele ser fácil de ver. Se registrará en los registros de errores o aparecerá como un error durante la prueba.

Este tipo de ataques también ocurren debido a un proceso de revisión de código deficiente:si un programador deja el código de depuración en el script, otros lo ejecutarán sin conocer los posibles problemas.

Si nota errores en la base de datos u otro comportamiento extraño en su sitio web, ¡es posible que tenga un problema de inyección SQL!

Conclusión

Por supuesto, cualquier especialista en bases de datos que utilice SQL en el trabajo debe conocer todos estos comandos de memoria. Aún así, tenerlos a mano como una simple hoja de trucos también es útil. ¡Siéntase libre de compartir sus consideraciones y trucos profesionales en la sección de Comentarios a continuación!