GomorraSQL

GomorraSQL is an interpreted SQL language that replaces the standard keywords with Neapolitan Language. It's available as a Java library or an executable shell.
== Syntax ==
Likewise standard SQL, GomorraSQL allows performing data manipulation. Here's a list of supported operations:
=== Retrieving data ===
To retrieve data, you can use the ripigliammo command. Here's the command syntax:
ripigliammo (<comma_separated_column_names> || tutto chillo ch'era 'o nuostro) mmiez 'a <table_name> [pesc e pesc <table_name>...] [arò <condition>]
The first argument for the ripigliammo command is the columns to retrieve. They can be specified either as a list of comma-separated values or with the tutto chillo ch'era 'o nuostro which will return all the columns.
After the columns, the following parameter is the name of the table where to fetch the data with mmiez 'a. Data can be fetched from multiple tables by using the optional join operator pesc e pesc followed by another table name. Currently, there's no limit on the number of pesc e pesc that can be applied to a single ripigliammo. The join condition is specified in the arò clause, along with the row filtering.
Finally, you can filter the rows using the optional arò clause, followed by one or more conditions. The conditions work exactly like in SQL, with a slightly different syntax for some operators (check the [Language Reference](#language-reference) section).
==== Sample queries ====
Retrieve all users' data: 
ripigliammo tutto chillo ch'era 'o nuostro mmiez 'a user 
Retrieve all the emails of the users with id 6 or null name:
ripigliammo email mmiez 'a user arò id = 6 o name è nisciun
Retrieve the data of the user with id 6 along joined with his birth city and his account data:
ripigliammo email mmiez 'a user pesc e pesc city pesc e pesc account arò user.id = 6 e user.birth_city = city.id e user.account_id = account.id
=== Deleting data ===
Data deletion can be performed using the facimm na' strage command which supports a subset of options from the ripigliammo command. Here's the syntax:
facimm na' strage mmiez 'a <table_name> [arò <condition>]
==== Sample queries ====
Delete all users' data:
facimm na' strage mmiez 'a user
Delete the users with name not null or with deleted = true:
facimm na' strage mmiez 'a user arò name nun è nisciun o deleted è true
=== Updating data ===
The command rifacimm is used to update data in a table. The syntax is:
rifacimm <table_name> accunza <column_1> accussì <value_1>, <column_2> accussì <value_2>, ... [arò <conditions>]
The accunza operator marks the begin of a list of column/values assignments using the assignment operator accussì.
==== Sample queries ====
Set the name "Pippo" for all the users:
rifacimm user accunza name accussì "Pippo"
Set the name to "Pinco" and surname to "Pallo" for all users with null name:
rifacimm user accunza name accussì "Pinco", surname accussì "Pallo" arò name è nisciun
=== Inserting data ===
Data insertion can be performed using the nzipp 'ngoppa operator as following:
nzipp 'ngoppa <table_name> (<column_1>, <column_2>...) chist <value_1>, <value_2>...
After the table name, you can specify a list of columns whose data are being inserted. If not present, GomorraSQL will default to all columns. The chist keyword marks the beginning of a comma-separated list of values to insert. Each insert statement can only add one row.
==== Sample queries ====
Insert a new user with all his data:
nzipp 'ngoppa user chist 1, "Pinco", "Pallo"
Insert a new user with only his name set:
nzipp 'ngoppa user name chist "Pinco"
== Transaction support ==
Being a fully ACID compliant language, GomorraSQL offers basic transaction management. To begin a transaction, you can issue the command ua uagliò. You can then commit the transaction with the command iamme bello ia' or perform rollback with the command sfaccimm.
== Keywords ==
GomorraSQL syntax is mapped to standard SQL according to the following table:
GomorraSQL keyword 	SQL equivalent 	Valid in...
ripigliammo 	SELECT 	SELECT
rifacimm 	UPDATE 	UPDATE
nzipp 	INSERT 	INSERT
'ngoppa 	INTO 	INSERT
facimm na' strage 	DELETE 	DELETE
pesc e pesc 	INNER JOIN 	SELECT
mmiez 'a 	FROM 	SELECT, DELETE
tutto chillo ch'era 'o nuostro	* 	SELECT
arò 	WHERE 	SELECT, UPDATE, DELETE
e 	AND 	ANY WHERE CLAUSE
o 	OR 	ANY WHERE CLAUSE
nisciun 	NULL 	ANY WHERE CLAUSE
è 	IS 	ANY WHERE CLAUSE
nun è 	IS NOT 	ANY WHERE CLAUSE
chist 	VALUES 	INSERT
accunza 	SET 	UPDATE
accussì 	= (assignment) 	UPDATE
> 	> 	ANY WHERE CLAUSE
< 	< 	ANY WHERE CLAUSE
= (comparison) 	= (comparison) 	ANY WHERE CLAUSE
!= 	!= 	ANY WHERE CLAUSE
<> 	<> 	ANY WHERE CLAUSE
<= 	<= 	ANY WHERE CLAUSE
>= 	>= 	ANY WHERE CLAUSE
sfaccimm 	ROLLBACK 	TRANSACTION
iamme bello ia' 	COMMIT 	TRANSACTION
ua uagliò 	BEGIN TRANSACTION	TRANSACTION
== Supported Database ==
GomorraSQL has been tested with MySQL and H2 and other databases may not work properly.
Category:Languages
Category:Declarative paradigm
Category:2021
Category:Implemented
Category:High-level
Category:Thematic