SQL - INSERT
The INSERT command creates a new record in the database. Records can be schema-less or follow rules specified in your model.
Syntax:
INSERT INTO [CLASS:]<class>|CLUSTER:<cluster>|INDEX:<index>
[(<field>[,]*) VALUES (<expression>[,]*)[,]*]|
[SET <field> = <expression>|<sub-command>[,]*]|
[CONTENT {<JSON>}]
[RETURN <expression>]
[FROM <query>]
CONTENTDefines JSON data as an option to set field values.RETURNDefines an expression to return instead of the number of inserted records. Valid expressions are:@ridReturns the Record ID of the new record.@thisReturns the entire new record.
FROMDefines where you want to insert the result-set. Introduced in version 1.7.
Examples:
Inserts a new record with the name
Jayand surnameMiner.As an example, in the SQL-92 standard, such as with a Relational database, you might use:
orientdb>INSERT INTO Profile (name, surname) VALUES ('Jay', 'Miner')Alternatively, in the OrientDB abbreviated syntax, the query would be written as,
orientdb>INSERT INTO Profile SET name = 'Jay', surname = 'Miner'In JSON content syntax, it would be written as this,
orientdb>INSERT INTO Profile CONTENT {"name": "Jay", "surname": "Miner"}Insert a new record of the class
Profile, but in a different cluster from the default.In SQL-92 syntax:
orientdb>INSERT INTO Profile CLUSTER profile_recent (name, surname) VALUES ('Jay', 'Miner')Alternative, in the OrientDB abbreviated syntax:
orientdb>INSERT INTO Profile CLUSTER profile_recent SET name = 'Jay', surname = 'Miner'Insert several records at the same time:
orientdb>INSERT INTO Profile(name, surname) VALUES ('Jay', 'Miner'), ('Frank', 'Hermier'), ('Emily', 'Sout')Insert a new record, adding a relationship.
In SQL-93 syntax:
orientdb>INSERT INTO Employee (name, boss) VALUES ('jack', #11:09)In the OrientDB abbreviated syntax:
orientdb>INSERT INTO Employee SET name = 'jack', boss = #11:99Insert a new record, add a collection of relationships.
In SQL-93 syntax:
orientdb>INSERT INTO Profile (name, friends) VALUES ('Luca', [#10:3, #10:4])In the OrientDB abbreviated syntax:
orientdb>INSERT INTO Profiles SET name = 'Luca', friends = [#10:3, #10:4]Inserts using
SELECTsub-queriesorientdb>INSERT INTO Diver SET name = 'Luca', buddy = (SELECT FROM Diver WHERE name = 'Marko')Inserts using
INSERTsub-queries:orientdb>INSERT INTO Diver SET name = 'Luca', buddy = (INSERT INTO Diver SET name = 'Marko')Inserting into a different cluster:
orientdb>INSERT INTO CLUSTER:asiaemployee (name) VALUES ('Matthew')However, note that the document has no assigned class. To create a document of a certain class, but in a different cluster than the default, instead use:
orientdb>INSERT INTO CLUSTER:asiaemployee (@class, content) VALUES ('Employee', 'Matthew')That inserts the document of the class
Employeeinto the clusterasiaemployee.Insert a new record, adding it as an embedded document:
orientdb>INSERT INTO Profile (name, address) VALUES ('Luca', { "@type": "d", "street": "Melrose Avenue", "@version": 0 })Insert from a query.
To copy records from another class, use:
orientdb>INSERT INTO GermanyClient FROM SELECT FROM Client WHERE country = 'Germany'This inserts all the records from the class
Clientwhere the country is Germany, in the classGermanyClient.To copy records from one class into another, while adding a field:
orientdb>INSERT INTO GermanyClient FROM SELECT *, true AS copied FROM Client WHERE country = 'Germany'This inserts all records from the class
Clientwhere the country is Germany into the classGermanClient, with the addition fieldcopiedto the valuetrue.
For more information on SQL, see SQL commands.