0% encontró este documento útil (0 votos)
17 vistas18 páginas

SQL Basico

Cargado por

Gil Apolinario
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas18 páginas

SQL Basico

Cargado por

Gil Apolinario
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

INSTITUTO POLITECNICO NACIONAL

Centro de Estudios Científicos y


Tecnológicos N° 3
“Estanislao Ramírez Ruiz”

Apuntes para la unidad de aprendizaje:


PROYECTO INFORMATICO

Modelado de Bases de Datos


SQL.

P R E S E N T A:

MD. Martín Javier Sánchez Rodríguez

FEBRERO 2022
CONTENIDO
SQL 3
Tipos de Datos 4
Numéricos.
Serial.
Char y varchar.
Arrays.
Data Definition Language (DDL) 6
Create
SQL ALTER TABLE 7
Add columna
Drop columna
Modify columna
Drop database 8
Data Manipulation Languaje 9
Select
Insert 10
Bulk insert 11
Update
Delete
Data control lenguaje 12
Grant 13
Revoke.
Transaction Control Languaje
Implementación de TCL 14
Comandos SQL
SQL

SQL es un lenguaje estructurado de consulta (Structured Query Language, en


inglés). diseñado específicamente para administrar información en sistemas de
gestión de bases de datos de tipo relacional.

Puede considerarse un lenguaje de programación como tal, ya que cuenta con


uso de variables, tipos de datos, elementos condicionales y lógicos. Es el
estándar de facto para la gestión de datos y permite:

• Consultar, actualizar y reorganizar datos


• Crear y modificar la estructura de datos
• Controlar el acceso a los datos

El uso de este lenguaje es altamente imperativo para todo profesional que tenga
por objetivo acceder a altos volúmenes y/o datos complejos.

SQL se creó en los 70s en los laboratorios de IBM como un lenguaje para manejar
los datos de un sistema de gestión de datos llamado System R. Posteriormente
en 1979 Oracle generó su propia versión denominada Oracle v2.

Mapa de visualización de las áreas de uso de SQL.


Tipos de Datos
Los tipos de datos soportados lo son por la mayoría de los sistemas de bases
de datos que soportan SQL, salvo algunas excepciones que son particulares a
un sistema específico. Tomar en cuenta que PostgreSQL utiliza adicionalmente
tipos geométricos y direcciones de redes.

En general los tipos de datos incluyen:

• Numéricos
• Moneda
• Caracter
• Binario
• Fecha/hora
• Lógicos (booleanos)
• Enumerados
• Geometricos
• Redes
• Bit String
• Texto
• UUID
• XML
• JSON
• Arreglos
• Compuestos (Composite)
• Rangos
• Identificadores de objetos

Numericos
SELECT CAST(123 AS DECIMAL(5,2)) --returns 123.00
SELECT CAST(12345.12 AS NUMERIC(10,5)) --returns 12345.12000

Los de tipo numéricos incluyen enteros y decimales con un almacenamiento


desde -32768 a +32767 para “smallint”, hasta +9223372036854775807 para un
“bigint”

Serial
CREATE TABLE person (
id SERIAL
)

Los tipos serial (serial, smallserial, bigserial no son tipos efectivos sino una
convención para anotar un identificador único auto incrementado).
AUTO_INCREMENT en otras bases de datos.
Char y varchar
--
CHARACTER VARYING(n), VARCHAR(n)
CHARACTER (n), CHAR(n)

SELECT CAST('ABC' AS CHAR(10)) -- 'ABC ' (padded with spaces on


the right)
SELECT CAST('ABC' AS VARCHAR(10)) -- 'ABC' (no padding due to
variable character)
SELECT CAST('ABCDEFGHIJKLMNOPQRSTUVWXYZ' AS CHAR(10)) --
'ABCDEFGHIJ' (truncated to 10 characters)

Arrays
-- declarando un arreglo
SELECT INTEGER[];
SELECT INTEGER[3];
SELECT INTEGER[][];
SELECT INTEGER[3][3];
SELECT INTEGER ARRAY;
SELECT INTEGER ARRAY[3];
-- creando un arreglo
SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];

Data Definition Language (DDL)


CREATE
CREATE TABLE person (
person_id BIGINT NOT NULL,
last_name VARCHAR(255) NOT NULL,
first_name VARCHAR(255),
age INT NOT NULL,
PRIMARY KEY (person_id)
);
-- alternativamente define la clave primaria en forma directa
CREATE TABLE person (
person_id BIGINT NOT NULL PRIMARY KEY,
last_name VARCHAR(255) NOT NULL,
first_name VARCHAR(255),
address VARCHAR(255),
city VARCHAR(255)
);
Crear una tabla a partir de otra existente.
-- crea una nueva tabla a partir de los datos de "person" que con
registros que tengan sobre 30 años
CREATE TABLE people_over_30 AS SELECT * FROM person WHERE age >
30;

SQL ALTER TABLE


La instrucción ALTER TABLE es utilizada para agregar, borrar o modificar
columnas en una tabla existente, de igual manera, es utilizada para
agregar o destruir restricciones declaradas en una tabla existente.

ALTER TABLE - ADD Columna


Con el propósito de agregar una columna a una tabla, se utiliza la siguiente
sintaxis:

ALTER TABLE nombre_de_la_tabla


ADD nombre_de_la_columna, tipo_de_dato y longitud;

El ejemplo de código SQL siguiente agrega la columna “Email”, a la tabla


“Customers”:

ALTER TABLE Customers


ADD Email varchar(255);

ALTER TABLE - DROP Columna


Para eliminar una columna, se debe utilizar la sintaxis siguiente (Nota. -
algunos sistemas de bases de datos no permiten la eliminación directa de
las columnas en sus entidades).

ALTER TABLE nombre_de_la_tabla


DROP COLUMN nombre_de_la_columna;

El siguiente ejemplo de SQL elimina la columna Email de la tabla


“Customers”

ALTER TABLE Customers


DROP COLUMN Email;
ALTER TABLE - ALTER/MODIFY COLUMN
Para cambiar el tipo de dato en una columna de una tabla se utiliza la
siguiente sintaxis:

SQL Server / MS Access:

ALTER TABLE nombre_de_la_tabla


ALTER COLUMN nombre_de_la_columna, tipo_de_dato;

My SQL / Oracle (prior version 10G):

ALTER TABLE nombre_de_la_tabla


MODIFY COLUMN nombre_de_la_columna, tipo_de_dato;

Oracle 10G and later:

ALTER TABLE nombre_de_la_tabla


MODIFY nombre_de_la_columna, tipo_de_dato;

SQL ALTER TABLE Ejemplo


Analice la tabla Personas:

ID LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Ahora vamos a agregar la columna “DateOfBirth” en la tabla “Personas”,


para hacerlo, vamos a utilizar la siguiente instrucción SQL:

ALTER TABLE Persons


ADD DateOfBirth date;

Nótese que la columna “DateOfBirth” es de tipo date y se entiende que esta


columna va a almacenar este tipo de dato (date). Recordemos que al
especificar el tipo de dato en una columna se está especificando que tipo de
información va a almacenarse en dicha columna.

La tabla “Personas” ahora presenta el siguiente aspecto:


ID LastName FirstName Address City DateOfBirth

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Cambiando el tipo de dato, Ejemplo


Ahora vamos a cambiar el tipo de dato de la columna “DateOfBrith” de la
tabla “Personas”, para esto, utilizaremos la siguiente instrucción SQL:

ALTER TABLE Personas


ALTER COLUMN DateOfBirth year;

Nótese que la columna “DateOfBirth” ahora es del tipo de dato year, y


ahora va a almacenar el valor del año en formato de dos o cuatro dígitos.

DROP COLUMN Ejemplo


Ahora vamos a eliminar la columna denominada “DateOfBirth” de la table
“Personas”, para esto, utilizaremos la siguiente sentencia SQL:

ALTER TABLE Personas


DROP COLUMN DateOfBirth;

Ahora, la tabla “Personas” muestra el siguiente aspecto:

ID LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

La instrucción SQL DROP DATABASE


La instrucción DROP DATABASE es utilizada para eliminar cualquier base de
datos en SQL.
Syntaxis

DROP DATABASE nombre_de_la_base_de_datos;

Nota: ¡Se debe ser muy cuidadoso al eliminar una base de datos, eliminar
la base de datos, puede resultar en la pérdida total de la información
almacenada en la base de datos!

DROP DATABASE Ejemplo

La siguiente instrucción SQL elimina una base de datos existente.

DROP DATABASE testDB;

Tip: Hay que asegurarse de tener privilegios de administrador para eliminar


cualquier base de datos, una vez que se ha eliminado, es posible verificar en
el directorio de bases de datos si esta continúa existiendo, para esto se utiliza
la instrucción SQL SHOW DATABASES.

Data manipulation Language (DML)


Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en
inglés) es una parte del lenguaje SQL que incluido por el sistema de gestión de
base de datos permite a los usuarios llevar a cabo las tareas de consulta o
manipulación de los datos, organizados por el modelo de datos adecuado.

DML está orientado por tanto a la interacción con los datos propiamente tales
dentro de la base de datos. Esta interacción incluye la selección, inserción,
actualización y eliminación de datos (registros dentro de una BD).

SELECT

SELECT permite recuperar registros desde cero o más tablas. WHERE filtra los
registros antes del agrupamiento y HAVING filtra los grupos creados por GROUP
BY.

SELECT en PostgreSQL

[ WITH [ RECURSIVE ] with_query [, ...] ]


SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name
] [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ]
[ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ]
[ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ]
{ ROW | ROWS } ONLY ]
[ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]column2, ...
FROM table_name;
SELECT f.title, f.did, d.name, f.date_prod, f.kind
FROM distributors d, films f
WHERE f.did = d.did

SELECT kind, sum(len) AS total


FROM films
GROUP BY kind
HAVING sum(len) < interval '5 hours';

select * from T_CLIENTES;


select * from T_PEDIDOS;
SELECT * from T_PRODUCTOS;

INSERT

Realiza operaciones de tipo INSERT, UPDATE y/o SELECT sobre una tabla
destino basado en los resultados de un JOIN con una tabla en una transacción.

INSERT INTO table_name VALUES (value1, value2, value3,…);


table_name: name of the table.
value1, value2,.. : value of first column, second column,…
INSERT INTO table_name (column1, column2, column3,..) VALUES ( value1, value2,
value3,..);
table_name: name of the table.
column1: name of first column, second column …
value1, value2, value3 : value of first column, second column,…
insert into UTILES (codigo, descripcion, fecalta) values (1,'Lapiz',sysdate);
insert into UTILES (codigo, descripcion, fecalta) values (2,'Goma',sysdate);
insert into UTILES (codigo, descripcion, fecalta) values (3,'Sacapuntas',null);
insert into UTILES values (4,'regla',sysdate);
insert into UTILES values (5,'escuadra',null);
insert into UTILES (codigo, descripcion) values (6,'transportador');
insert into UTILES (descripcion, codigo) values ('compas',7);
insert into UTILES (fecalta, codigo, descripcion ) values (sysdate, 8, 'estuche');
BULK INSERT

Realiza operaciones de tipo INSERT, UPDATE y/o SELECT sobre una tabla
destino basado en los resultados de un JOIN con una tabla en una transacción.

SQL Server 2016 en adelante

BULK INSERT TableName FROM 'filePath’


WITH ( FORMAT = ‘CSV’, FIELDTERMINATOR = ‘,’,
ROWTERMINATOR = '\n’,
ROWS_PER_BATCH = 10000, FIRSTROW = 2, TABLOCK );

UPDATE

La sentencia UPDATE es usada para actualizar los datos de una tabla existente
dentro de la base de datos.

Se pueda actualizar desde una a varias columnas según se requiera. Si se


omite la cláusula WHERE, el comando afecta a todos los registros de la tabla.

UPDATE estudiantes SET NAME = 'PRATIK' WHERE id = 20;


UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;

dónde: + table_name: nombre de la tabla + columnN: nombre de la columna +


valueN: nuevo valor de la columna + condición: condición requerida para
seleccionar las filas que deben ser actualizadas.

UPDATE nombre_tabla
SET nombre_columna = valor
[ WHERE condición [ AND condición] ]

UPDATE UTILES SET descripcion = ‘Regla 30 cm’ WHERE codigo= 4


UPDATE UTILES SET fecalta = sysdate;
UPDATE utiles SET fecalta = sysdate, descripcion=‘regla 30 cm.’ WHERE código = 4;

DELETE

Realiza operaciones de eliminación de registros desde las tablas.

DELETE FROM nombre_tabla


WHERE nombre_columna = valor
DELETE FROM personas
WHERE nombre = 'LUIS' AND apellido1 = 'LOPEZ' AND apellido2 = 'PEREZ'
DELETE nombre_tabla
[ WHERE condición [ AND condición] ]

delete UTILES WHERE codigo= 7;


delete UTILES;
Ejemplos

En el primer ejemplo de código, se devuelven todas las filas (no se especifica la


cláusula WHERE) y todas las columnas (con *) de la tabla Product de la base de
datos AdventureWorks2012.

USE AdventureWorks2012;
GO
SELECT *
FROM Production.Product
ORDER BY Name ASC;
USE AdventureWorks2012;
GO
SELECT p.*
FROM Production.Product AS p
ORDER BY Name ASC;
GO

Data Control Language (DCL)


Lenguaje de control de datos o DCL en SQL

No cualquiera puede acceder a la base de datos, y de los usuarios que pueden


ver la base de datos, no todos deberían tener los mismos privilegios para ver o
modificar la información. El Lenguaje de Control de Datos o DCL aglomera a los
comandos que se utilizan en las bases de datos relacionales para otorgar o quitar
permisos a los usuarios.

Los permisos que se pueden otorgar a los usuarios son de dos tipos
principalmente:

Permisos de sistema. Incluye permisos para crear sesiones, crear estructuras


(comandos DDL o incluso ejecutar código contenido dentro de la base de datos.

Permisos sobre objetos. Son aquellos permisos que dejan a los usuarios ver
información o incluso modificarla.

Las buenas prácticas de seguridad en bases de datos -implementadas con ayuda


de los administradores de bases de datos o DBAs- deben incluir la definición de
diversos usuarios, que tengan diversos privilegios, de tal manera que cada
usuario solo vea los datos que requiere y nunca se exponga información a
usuarios que no sean los permitidos.

Para implementar los permisos o privilegios en la base de datos se utilizan dos


comandos principalmente, GRANT y REVOKE.
GRANT

Es el comando de DCL para otorgar o dar permisos a un usuario de algo en


particular (permisos de sistema o sobre objetos). Obviamente, para dar permisos,
el usuario que los otorga debe tener, a su vez, permisos para dar permisos. Es
por ello que estas actividades están restringidas casi siempre a los DBAs en las
organizaciones.

REVOKE

Es el complemento del comando GRANT, ya que el comando REVOKE elimina o


quita privilegios al usuario de que se trate en el comando.

Al igual que el comando anterior, para poder quitar permisos a un usuario, el


usuario que ejecute REVOKE deberá tener privilegios de hacerlo.

Transaction Control Language (TCL)


El Lenguaje de control de transacción es, o TCL, son comandos de SQL
(COMMIT, ROLLBACK, etc.) que permiten manejar transacciones en una base de
datos relacional, por lo que es importante primeramente aclarar el concepto de
transacción.

Transacciones en una base de datos relacional

Imaginémonos por un momento las operaciones que se deben realizar en un


banco cuando se transfiere dinero de una cuenta a otra:

• Extraer (restar) la cantidad a transferir de la cuenta de origen.


• Ir a la cuenta destino y agregar (sumar) la cantidad transferida.
Las dos operaciones se deberán realizar en una base de datos (específicamente
se implementarían con dos comandos UPDATE que es el comando de DML que
permite modificar registros en una tabla); pero ¿qué sucede si por alguna razón
se le envían las dos operaciones a la base de datos, pero solo se pudiera realizar
la primera? (por que se produce una falla en las comunicaciones, fallas de energía
eléctrica, error de sintaxis en el segundo comando y no en el primero, etc.).

El problema que se presentaría sería que se le restaría el monto de la operación


a la cuenta origen, pero no se sumaría a la cuenta destino y se le perdería el
rastro al dinero y habría inconsistencias en la información.

Una situación más compleja, pero más común en el día a día, es una operación
de compra de productos en cualquier supermercado. Si el cliente se lleva 3
productos, por poner un ejemplo, las operaciones que se tienen que realizar en la
base de datos son:

• Registrar la venta (regularmente en al menos dos tablas).


• Disminuir existencias en el inventario, para cada uno de los 3 productos.
• Registrar la entrada de dinero para el corte de caja final del cajero.
• Realizar la operación bancaria si el pago se realiza con alguna tarjeta de
crédito o débito.

Para resolver estos conflictos, las bases de datos relacionales manejan el


concepto de transacción, que no es más que agrupar todas las operaciones en
un solo concepto, de tal manera que se le indica a la base de datos que haga
todas las operaciones o ninguna (o todo o nada), de tal manera que siempre,
todas las transferencias de dinero consten de dos operaciones, la de restar a la
cuenta de origen y la de sumar el saldo a la cuenta de destino.

Implementación de TCL

Para hacer lo anterior es que SQL define diversos comandos para crear una
transacción y luego grabar todos los datos o deshacer todas las operaciones de
la transacción. Estos comandos están agrupados bajo el concepto de TCL. En
este sentido es más difícil encontrar que todos los motores de bases de datos
ocupen los mismos comandos, pero en general existen:

• BEGIN TRANSACTION – Para comenzar una transacción.


• COMMIT – Para grabar todos los cambios en la base de datos.
• ROLLBACK – Para deshacer los cambios de toda la transacción.

Cada motor implementa de una manera ligeramente diferente las transacciones,


pero el concepto es el mismo:

1. Se define el inicio de una transacción (BEGIN TRANS, BEGIN


TRANSACTION).
2. Se realizar todas las operaciones necesarias. (UPDATEs, INSERTs,
DELETEs, etc.).
3. Se intentan grabar todas las actualizaciones del punto anterior (COMMIT).
4. Si hay un error se deshace todo lo que se haya actualizado para dejar la
información tal y como estaba antes del punto 1 (ROLLBACK).

Comandos SQL
Palabras claves en SQL (selección)

Keyword Detail

ADD Adds a column in an existing table

ADD CONSTRAINT Adds a constraint after a table is already created

Adds, deletes, or modifies columns in a table, or


ALTER
changes the data type of a column in a table

ALTER COLUMN Changes the data type of a column in a table


Palabras claves en SQL (selección)

Keyword Detail

ALTER TABLE Adds, deletes, or modifies columns in a table

ALL Returns true if all of the subquery values meet the


condition

AND Only includes rows where both conditions is true

Returns true if any of the subquery values meet the


ANY
condition

AS Renames a column or table with an alias

ASC Sorts the result set in ascending order

BACKUP DATABASE Creates a back up of an existing database

BETWEEN Selects values within a given range

CASE Creates different outputs based on conditions

A constraint that limits the value that can be placed in a


CHECK
column

Changes the data type of a column or deletes a column


COLUMN
in a table

CONSTRAINT Adds or deletes a constraint

CREATE Creates a database, index, view, table, or procedure

CREATE DATABASE Creates a new SQL database

CREATE INDEX Creates an index on a table (allows duplicate values)

CREATE OR REPLACE VIEW Updates a view

CREATE TABLE Creates a new table in the database

CREATE PROCEDURE Creates a stored procedure

CREATE UNIQUE INDEX Creates a unique index on a table (no duplicate values)

Creates a view based on the result set of a SELECT


CREATE VIEW
statement

DATABASE Creates or deletes an SQL database

DEFAULT A constraint that provides a default value for a column

DELETE Deletes rows from a table


Palabras claves en SQL (selección)

Keyword Detail

DESC Sorts the result set in descending order

DISTINCT Selects only distinct (different) values

Deletes a column, constraint, database, index, table, or


DROP
view

DROP COLUMN Deletes a column in a table

Deletes a UNIQUE, PRIMARY KEY, FOREIGN KEY, or


DROP CONSTRAINT
CHECK constraint

DROP DATABASE Deletes an existing SQL database

DROP DEFAULT Deletes a DEFAULT constraint

DROP INDEX Deletes an index in a table

DROP TABLE Deletes an existing table in the database

DROP VIEW Deletes a view

EXEC Executes a stored procedure

EXISTS Tests for the existence of any record in a subquery

A constraint that is a key used to link two tables


FOREIGN KEY
together

FROM Specifies which table to select or delete data from

Returns all rows when there is a match in either left


FULL OUTER JOIN
table or right table

Groups the result set (used with aggregate functions:


GROUP BY
COUNT, MAX, MIN, SUM, AVG)

HAVING Used instead of WHERE with aggregate functions

IN Allows you to specify multiple values in a WHERE clause

INDEX Creates or deletes an index in a table

INNER JOIN Returns rows that have matching values in both tables

INSERT INTO Inserts new rows in a table

INSERT INTO SELECT Copies data from one table into another table

IS NULL Tests for empty values


Palabras claves en SQL (selección)

Keyword Detail

IS NOT NULL Tests for non-empty values

JOIN Joins tables

Returns all rows from the left table, and the matching
LEFT JOIN
rows from the right table

LIKE Searches for a specified pattern in a column

Specifies the number of records to return in the result


LIMIT
set

NOT Only includes rows where a condition is not true

A constraint that enforces a column to not accept NULL


NOT NULL
values

OR Includes rows where either condition is true

ORDER BY Sorts the result set in ascending or descending order

Returns all rows when there is a match in either left


OUTER JOIN
table or right table

A constraint that uniquely identifies each record in a


PRIMARY KEY
database table

PROCEDURE A stored procedure

Returns all rows from the right table, and the matching
RIGHT JOIN
rows from the left table

Specifies the number of records to return in the result


ROWNUM
set

SELECT Selects data from a database

SELECT DISTINCT Selects only distinct (different) values

SELECT INTO Copies data from one table into a new table

Specifies the number of records to return in the result


SELECT TOP
set

Specifies which columns and values that should be


SET
updated in a table

Creates a table, or adds, deletes, or modifies columns in


TABLE
a table, or deletes a table or data inside a table
Palabras claves en SQL (selección)

Keyword Detail

Specifies the number of records to return in the result


TOP
set

TRUNCATE TABLE Deletes the data inside a table, but not the table itself

Combines the result set of two or more SELECT


UNION
statements (only distinct values)

Combines the result set of two or more SELECT


UNION ALL
statements (allows duplicate values)

A constraint that ensures that all values in a column are


UNIQUE
unique

UPDATE Updates existing rows in a table

VALUES Specifies the values of an INSERT INTO statement

VIEW Creates, updates, or deletes a view

Filters a result set to include only records that fulfill a


WHERE
specified condition

También podría gustarte