Giter Club home page Giter Club logo

sqlike's Introduction

SQLike, version 1.02, demo & short reference

http://www.thomasfrank.se/SQLike/

Keywords are case-insensitive and insensitive to underscores. This means GroupBy can be written GROUP_BY , groupby etc. Where clauses are written as functions. You can also use a function instead of a field name in Select and Set statements. In these functions the this -keyword points to the current row.

Please note:

  • The queries below are run in sequence.
  • The test data is random generated and differs each time you load this page.
  • JavaScript debuggers (like Firebug) can slow down SQLike [JavaScript].

SQLike, version 1.02, demo & short reference 1

Some test data: dataArray 2

More test data: dataArray2 2

Unpack 3

Select (+ order by) 4

Select, example 2 (using "as" and a function instead of a field name) 4

Select Distinct 5

Group By (+ aggregate functions) 6

Join (implicit) 6

Join 7

Join Using 7

Natural Join 8

Left Join 8

Right Join 9

Full Join 10

Cross Join (+ use of "limit") 11

Union 13

Union All 14

Intersect 15

Intersect All 16

Except 16

Except All 17

Update 18

Insert into 18

Select into 19

Delete from 20

Pack 21

Some test data: dataArray

This is the first part of our test data that we store in an array called "dataArray" (an array of arrays until it is unpacked, see below).

0 1 2 3
Susanna Peterson 55 66000
Anette Irons 26 31000
Anette Steele 62 72000
Anette Steele 50 70000
John Green 27 80000
Debbi Jones 58 93000
George Green 63 40000
Anette Jones 22 76000
Susanna Black 58 52000
Debbi Jones 44 54000

JSON :

[["Susanna", "Peterson", 55, 66000], ["Anette", "Irons", 26, 31000], ["Anette", "Steele", 62, 72000], ["Anette", "Steele", 50, 70000], ["John", "Green", 27, 80000], ["Debbi", "Jones", 58, 93000], ["George", "Green", 63, 40000], ["Anette", "Jones", 22, 76000], ["Susanna", "Black", 58, 52000], ["Debbi", "Jones", 44, 54000]]

Rows: 10

More test data: dataArray2

This is the second part of our test data that we store in an array called "dataArray2" (an array of objects).

firstName lastName favColor
Susanna Peterson green
Anette Irons green
Strange Mike red

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "favColor":"green"}, {"firstName":"Strange", "lastName":"Mike", "favColor":"red"}]

Rows: 3

Unpack

If your data is an array of arrays you need to unpack it into an array of objects, before querying it.

Please note: Unpack changes the orginal array.

SQLike.q( { Unpack: dataArray, Columns: ['firstName','lastName','age','salary'] } )

firstName lastName age salary
Susanna Peterson 55 66000
Anette Irons 26 31000
Anette Steele 62 72000
Anette Steele 50 70000
John Green 27 80000
Debbi Jones 58 93000
George Green 63 40000
Anette Jones 22 76000
Susanna Black 58 52000
Debbi Jones 44 54000

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":66000}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":72000}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":70000}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":93000}, {"firstName":"George", "lastName":"Green", "age":63, "salary":40000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":52000}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":54000}]

Rows: 10 Time taken: JS 31 ms

Select (+ order by)

Selecting tuples where the salary>50000. Note that the where condition is in the form of a function that returns true or false. Also note the syntax "|desc|" for sorting in descending order.

SQLike.q( { Select: ['*'], From: dataArray, Where: function(){return this.salary>50000}, OrderBy: ['salary','|desc|'] } )

firstName lastName age salary
Debbi Jones 58 93000
John Green 27 80000
Anette Jones 22 76000
Anette Steele 62 72000
Anette Steele 50 70000
Susanna Peterson 55 66000
Debbi Jones 44 54000
Susanna Black 58 52000

JSON :

[{"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":93000}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":72000}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":70000}, {"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":66000}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":54000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":52000}]

Rows: 8 Time taken: JS 2 ms

Select, example 2 (using "as" and a function instead of a field name)

Still selecting tuples where the salary>50000. Note the use of a function in the select statement as well as the use of "|as|".

SQLike.q( { Select: [function(){return this.firstName+" "+this.lastName},'|as|','name'], From: dataArray, Where: function(){return this.salary>50000}, OrderBy: ['salary','|desc|'] } )

name
Debbi Jones
John Green
Anette Jones
Anette Steele
Anette Steele
Susanna Peterson
Debbi Jones
Susanna Black

JSON :

[{"name":"Debbi Jones"}, {"name":"John Green"}, {"name":"Anette Jones"}, {"name":"Anette Steele"}, {"name":"Anette Steele"}, {"name":"Susanna Peterson"}, {"name":"Debbi Jones"}, {"name":"Susanna Black"}]

Rows: 8 Time taken: JS 2 ms

Select Distinct

Selecting distinct first names.

SQLike.q( { SelectDistinct: ['firstName'], From: dataArray, OrderBy: ['firstName'] } )

firstName
Anette
Debbi
George
John
Susanna

JSON :

[{"firstName":"Anette"}, {"firstName":"Debbi"}, {"firstName":"George"}, {"firstName":"John"}, {"firstName":"Susanna"}]

Rows: 5 Time taken: JS 2 ms

Group By (+ aggregate functions)

SQLike.q( { Select: ['firstName','|count|','firstName','|sum|','salary','|min|','salary','|max|','salary','|avg|','salary'], From: dataArray, GroupBy: ['firstName'], Having: function(){return this.count_firstName>1}, OrderBy: ['sum_salary','|desc|'] } )

firstName count_firstName sum_salary min_salary max_salary avg_salary
Anette 4 249000 31000 76000 62250
Debbi 2 147000 54000 93000 73500
Susanna 2 118000 52000 66000 59000

JSON :

[{"firstName":"Anette", "count_firstName":4, "sum_salary":249000, "min_salary":31000, "max_salary":76000, "avg_salary":62250}, {"firstName":"Debbi", "count_firstName":2, "sum_salary":147000, "min_salary":54000, "max_salary":93000, "avg_salary":73500}, {"firstName":"Susanna", "count_firstName":2, "sum_salary":118000, "min_salary":52000, "max_salary":66000, "avg_salary":59000}]

Rows: 3 Time taken: JS 2 ms

Join (implicit)

SQLike.q( { Select: ['*'], From: {t1:dataArray,t2:dataArray2}, Where: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )

t1_firstName t1_lastName t1_age t1_salary t2_firstName t2_lastName t2_favColor
Susanna Peterson 55 66000 Susanna Peterson green
Anette Irons 26 31000 Anette Irons green

JSON :

[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}]

Rows: 2 Time taken: JS 3 ms

Join

SQLike.q( { Select: ['*'], From: {t1:dataArray}, Join: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )

t1_firstName t1_lastName t1_age t1_salary t2_firstName t2_lastName t2_favColor
Susanna Peterson 55 66000 Susanna Peterson green
Anette Irons 26 31000 Anette Irons green

JSON :

[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}]

Rows: 2 Time taken: JS 2 ms

Join Using

SQLike.q( { Select: ['*'], From: {t1:dataArray}, Join: {t2:dataArray2}, Using: ['firstName','lastName'] } )

firstName lastName t1_age t1_salary t2_favColor
Susanna Peterson 55 66000 green
Anette Irons 26 31000 green

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_favColor":"green"}]

Rows: 2 Time taken: JS 1 ms

Natural Join

SQLike.q( { Select: ['*'], From: {t1:dataArray}, NaturalJoin: {t2:dataArray2}, Where:function(){return this.t1.firstName!='Vicki'} } )

firstName lastName t1_age t1_salary t2_favColor
Susanna Peterson 55 66000 green
Anette Irons 26 31000 green

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_favColor":"green"}]

Rows: 2 Time taken: JS 0 ms

Left Join

Same as LeftOuterJoin.

SQLike.q( { Select: ['*'], From: {t1:dataArray}, LeftJoin: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )

t1_firstName t1_lastName t1_age t1_salary t2_firstName t2_lastName t2_favColor
Susanna Peterson 55 66000 Susanna Peterson green
Anette Irons 26 31000 Anette Irons green
Anette Steele 62 72000 undefined undefined undefined
Anette Steele 50 70000 undefined undefined undefined
John Green 27 80000 undefined undefined undefined
Debbi Jones 58 93000 undefined undefined undefined
George Green 63 40000 undefined undefined undefined
Anette Jones 22 76000 undefined undefined undefined
Susanna Black 58 52000 undefined undefined undefined
Debbi Jones 44 54000 undefined undefined undefined

JSON :

[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000}]

Rows: 10 Time taken: JS 2 ms

Right Join

Same as RightOuterJoin.

SQLike.q( { Select: ['*'], From: {t1:dataArray}, RightJoin: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )

t1_firstName t1_lastName t1_age t1_salary t2_firstName t2_lastName t2_favColor
Susanna Peterson 55 66000 Susanna Peterson green
Anette Irons 26 31000 Anette Irons green
undefined undefined undefined undefined Strange Mike red

JSON :

[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}]

Rows: 3 Time taken: JS 3 ms

Full Join

Same as FullOuterJoin.

SQLike.q( { Select: ['*'], From: {t1:dataArray}, FullJoin: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName}, Where:function(){return this.t1.firstName!="George"} } )

t1_firstName t1_lastName t1_age t1_salary t2_firstName t2_lastName t2_favColor
Susanna Peterson 55 66000 Susanna Peterson green
Anette Irons 26 31000 Anette Irons green
Anette Steele 62 72000 undefined undefined undefined
Anette Steele 50 70000 undefined undefined undefined
John Green 27 80000 undefined undefined undefined
Debbi Jones 58 93000 undefined undefined undefined
Anette Jones 22 76000 undefined undefined undefined
Susanna Black 58 52000 undefined undefined undefined
Debbi Jones 44 54000 undefined undefined undefined
undefined undefined undefined undefined Strange Mike red

JSON :

[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000}, {"t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}]

Rows: 10 Time taken: JS 1 ms

Cross Join (+ use of "limit")

SQLike.q( { Select: ['*'], From: {t1:dataArray}, CrossJoin: {t2:dataArray2}, Limit: 100 } )

t1_firstName t1_lastName t1_age t1_salary t2_firstName t2_lastName t2_favColor
Susanna Peterson 55 66000 Susanna Peterson green
Anette Irons 26 31000 Susanna Peterson green
Anette Steele 62 72000 Susanna Peterson green
Anette Steele 50 70000 Susanna Peterson green
John Green 27 80000 Susanna Peterson green
Debbi Jones 58 93000 Susanna Peterson green
George Green 63 40000 Susanna Peterson green
Anette Jones 22 76000 Susanna Peterson green
Susanna Black 58 52000 Susanna Peterson green
Debbi Jones 44 54000 Susanna Peterson green
Susanna Peterson 55 66000 Anette Irons green
Anette Irons 26 31000 Anette Irons green
Anette Steele 62 72000 Anette Irons green
Anette Steele 50 70000 Anette Irons green
John Green 27 80000 Anette Irons green
Debbi Jones 58 93000 Anette Irons green
George Green 63 40000 Anette Irons green
Anette Jones 22 76000 Anette Irons green
Susanna Black 58 52000 Anette Irons green
Debbi Jones 44 54000 Anette Irons green
Susanna Peterson 55 66000 Strange Mike red
Anette Irons 26 31000 Strange Mike red
Anette Steele 62 72000 Strange Mike red
Anette Steele 50 70000 Strange Mike red
John Green 27 80000 Strange Mike red
Debbi Jones 58 93000 Strange Mike red
George Green 63 40000 Strange Mike red
Anette Jones 22 76000 Strange Mike red
Susanna Black 58 52000 Strange Mike red
Debbi Jones 44 54000 Strange Mike red

JSON :

[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}]

Rows: 30 Time taken: JS 2 ms

Union

SQLike.q( { Union:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )

firstName lastName
Susanna Peterson
Anette Irons
Anette Steele
John Green
Debbi Jones
George Green
Anette Jones
Susanna Black
Strange Mike

JSON :

[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Anette", "lastName":"Steele"}, {"firstName":"John", "lastName":"Green"}, {"firstName":"Debbi", "lastName":"Jones"}, {"firstName":"George", "lastName":"Green"}, {"firstName":"Anette", "lastName":"Jones"}, {"firstName":"Susanna", "lastName":"Black"}, {"firstName":"Strange", "lastName":"Mike"}]

Rows: 9 Time taken: JS 2 ms

Union All

SQLike.q( { UnionAll:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )

firstName lastName
Susanna Peterson
Anette Irons
Anette Steele
Anette Steele
John Green
Debbi Jones
George Green
Anette Jones
Susanna Black
Debbi Jones
Susanna Peterson
Anette Irons
Strange Mike

JSON :

[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Anette", "lastName":"Steele"}, {"firstName":"Anette", "lastName":"Steele"}, {"firstName":"John", "lastName":"Green"}, {"firstName":"Debbi", "lastName":"Jones"}, {"firstName":"George", "lastName":"Green"}, {"firstName":"Anette", "lastName":"Jones"}, {"firstName":"Susanna", "lastName":"Black"}, {"firstName":"Debbi", "lastName":"Jones"}, {"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Strange", "lastName":"Mike"}]

Rows: 13 Time taken: JS 2 ms

Intersect

SQLike.q( { Intersect:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )

firstName lastName
Susanna Peterson
Anette Irons

JSON :

[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}]

Rows: 2 Time taken: JS 0 ms

Intersect All

SQLike.q( { IntersectAll:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )

firstName lastName
Susanna Peterson
Anette Irons
Susanna Peterson
Anette Irons

JSON :

[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}]

Rows: 4 Time taken: JS 1 ms

Except

Except can also be written as Minus.

SQLike.q( { Except:[ { Select: ['firstName','lastName'], From: dataArray2 }, { Select: ['firstName','lastName'], From: dataArray } ] } )

firstName lastName
Strange Mike

JSON :

[{"firstName":"Strange", "lastName":"Mike"}]

Rows: 1 Time taken: JS 1 ms

Except All

SQLike.q( { ExceptAll:[ { Select: ['firstName','lastName'], From: dataArray2 }, { Select: ['firstName','lastName'], From: dataArray } ] } )

firstName lastName
Strange Mike

JSON :

[{"firstName":"Strange", "lastName":"Mike"}]

Rows: 1 Time taken: JS 0 ms

Update

Raising the salary with 5% for everyone over 40 years old. Note that the update condition is in the form of a function that changes a field/property.

Please note: Update changes the orginal array.

SQLike.q( { Update: dataArray, Set: function(){this.salary*=1.05}, Where: function(){return this.age>40} } )

firstName lastName age salary
Susanna Peterson 55 69300
Anette Irons 26 31000
Anette Steele 62 75600
Anette Steele 50 73500
John Green 27 80000
Debbi Jones 58 97650
George Green 63 42000
Anette Jones 22 76000
Susanna Black 58 54600
Debbi Jones 44 56700

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}]

Rows: 10 Time taken: JS 1 ms

Insert into

Insert a new post into a table.

Please note: Changes the orginal array.

SQLike.q( { InsertInto: dataArray, Values: {firstName:"Michael",lastName:"Arvidson",age:55,salary:100000} } )

firstName lastName age salary
Susanna Peterson 55 69300
Anette Irons 26 31000
Anette Steele 62 75600
Anette Steele 50 73500
John Green 27 80000
Debbi Jones 58 97650
George Green 63 42000
Anette Jones 22 76000
Susanna Black 58 54600
Debbi Jones 44 56700
Michael Arvidson 55 100000

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}, {"firstName":"Michael", "lastName":"Arvidson", "age":55, "salary":100000}]

Rows: 11 Time taken: JS 1 ms

Select into

Insert the posts selected into a table.

Please note: Changes the array specified by into.

SQLike.q( { Select: ['*'], From: dataArray2, Into: dataArray } )

firstName lastName age salary favColor
Susanna Peterson 55 69300 undefined
Anette Irons 26 31000 undefined
Anette Steele 62 75600 undefined
Anette Steele 50 73500 undefined
John Green 27 80000 undefined
Debbi Jones 58 97650 undefined
George Green 63 42000 undefined
Anette Jones 22 76000 undefined
Susanna Black 58 54600 undefined
Debbi Jones 44 56700 undefined
Michael Arvidson 55 100000 undefined
Susanna Peterson undefined undefined green
Anette Irons undefined undefined green
Strange Mike undefined undefined red

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}, {"firstName":"Michael", "lastName":"Arvidson", "age":55, "salary":100000}, {"firstName":"Susanna", "lastName":"Peterson", "favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "favColor":"green"}, {"firstName":"Strange", "lastName":"Mike", "favColor":"red"}]

Rows: 14 Time taken: JS 1 ms

Delete from

Delete posts from a table.

Please note: Changes the array.

SQLike.q( { DeleteFrom: dataArray, Where:function(){return this.salary===undefined} } )

firstName lastName age salary
Susanna Peterson 55 69300
Anette Irons 26 31000
Anette Steele 62 75600
Anette Steele 50 73500
John Green 27 80000
Debbi Jones 58 97650
George Green 63 42000
Anette Jones 22 76000
Susanna Black 58 54600
Debbi Jones 44 56700
Michael Arvidson 55 100000

JSON :

[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}, {"firstName":"Michael", "lastName":"Arvidson", "age":55, "salary":100000}]

Rows: 11 Time taken: JS 1 ms

Pack

Repack an array of objects into an array of arrays - this saves some space if you want to send it as JSON via AJAX.

Please note: Pack changes the orginal array.

SQLike.q( { Pack: dataArray, Columns: ['firstName','lastName','age','salary'] } )

0 1 2 3
Susanna Peterson 55 69300
Anette Irons 26 31000
Anette Steele 62 75600
Anette Steele 50 73500
John Green 27 80000
Debbi Jones 58 97650
George Green 63 42000
Anette Jones 22 76000
Susanna Black 58 54600
Debbi Jones 44 56700
Michael Arvidson 55 100000

JSON :

[["Susanna", "Peterson", 55, 69300], ["Anette", "Irons", 26, 31000], ["Anette", "Steele", 62, 75600], ["Anette", "Steele", 50, 73500], ["John", "Green", 27, 80000], ["Debbi", "Jones", 58, 97650], ["George", "Green", 63, 42000], ["Anette", "Jones", 22, 76000], ["Susanna", "Black", 58, 54600], ["Debbi", "Jones", 44, 56700], ["Michael", "Arvidson", 55, 100000]]

Rows: 11 Time taken: JS 0 ms

sqlike's People

Contributors

girvo avatar myfoundation avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.