------------------------
Dyalog DataBase Examples
------------------------
⍝ Table with simple rows ------------------------------------------------------
'mytab' ddb.create 'name' 80 10 ⍝ simple 10-character rows.
'mytab' ddb.append 'John' ⍝ append a row.
'mytab' ddb.append 2 6⍴'Paul George' ⍝ append more rows.
'mytab' ddb.append 'Ringo' ⍝ append another row.
display 'mytab' ddb.get 'name' ⍝ retrieve all 10-char rows.
┌→─────────┐
↓John │
│Paul │
│George │
│Ringo │
└──────────┘
ddb.remove'mytab' ⍝ remove table.
⍝ Table with nested rows ------------------------------------------------------
'mytab' ddb.create 'name' 80 ¯10 ⍝ nested ≤10 char rows.
'mytab' ddb.append 'John' ⍝ append a row.
'mytab' ddb.append 'Paul' 'George' 'Ringo' ⍝ append more rows.
display 'mytab' ddb.get 'name' ⍝ retrieve all nested rows.
┌→───────────────────────────────┐
│ ┌→───┐ ┌→───┐ ┌→─────┐ ┌→────┐ │
│ │John│ │Paul│ │George│ │Ringo│ │
│ └────┘ └────┘ └──────┘ └─────┘ │
└∊───────────────────────────────┘
ddb.remove'mytab' ⍝ remove table.
⍝ Table with two fields -------------------------------------------------------
'mytab' ddb.create ('name' 80 ¯10)('age' 83) ⍝ table with two fields.
'mytab' ddb.append 'Mick' 61 ⍝ append a row.
'mytab' ddb.append ('Brian' 'Keith') (62 60) ⍝ append more,
'mytab' ddb.append ('Charlie' 'Bill') (63 67) ⍝ and more rows.
display 'mytab' ddb.get 'age' ⍝ retrieve single field.
┌→─────────────┐
│61 62 60 63 67│
└~─────────────┘
display 'mytab' ddb.get 'age' 'name' ⍝ retrieve many fields.
┌→─────────────────────────────────────────────────────────────┐
│ ┌→─────────────┐ ┌→────────────────────────────────────────┐ │
│ │61 62 60 63 67│ │ ┌→───┐ ┌→────┐ ┌→────┐ ┌→──────┐ ┌→───┐ │ │
│ └~─────────────┘ │ │Mick│ │Brian│ │Keith│ │Charlie│ │Bill│ │ │
│ │ └────┘ └─────┘ └─────┘ └───────┘ └────┘ │ │
│ └∊────────────────────────────────────────┘ │
└∊─────────────────────────────────────────────────────────────┘
⍝ Select field values ---------------------------------------------------------
display 'mytab' ddb.get 'age' ⍝ get all age rows.
┌→─────────────┐
│61 62 60 63 67│
└~─────────────┘
display 'mytab' ddb.get (1 0 1 0 1) 'age' ⍝ get alternate rows.
┌→───────┐
│61 60 67│
└~───────┘
'mytab' ddb.put (0 0 1 0 1) 'age' (61 68) ⍝ update some age values.
display 'mytab' ddb.get 'age' ⍝ check update.
┌→─────────────┐
│61 62 61 63 68│
└~─────────────┘
'mytab' ddb.get (62>'mytab' ddb.get 'age') 'name' ⍝ compound selection.
Mick Keith
⍝ Use a _handle_ for better performance ---------------------------------------
mytab ← ddb.open 'mytab' ⍝ use handle for speed.
mytab ddb.get (62>mytab ddb.get 'age') 'name' ⍝ compound selection.
Mick Keith
⍝ Remove table rows -----------------------------------------------------------
mytab ddb.retain 1 0 1 0 1 ⍝ retain alternate rows.
display mytab ddb.get 'age' 'name' ⍝ retrieve all fields.
┌→─────────────────────────────────────┐
│ ┌→───────┐ ┌→──────────────────────┐ │
│ │61 60 68│ │ ┌→───┐ ┌→────┐ ┌→───┐ │ │
│ └~───────┘ │ │Mick│ │Keith│ │Bill│ │ │
│ │ └────┘ └─────┘ └────┘ │ │
│ └∊──────────────────────┘ │
└∊─────────────────────────────────────┘
⍝ Miscellaneous ---------------------------------------------------------------
display ddb.defs mytab ⍝ show field definitions.
┌→───────────────────────────────┐
│ ┌→──────────────┐ ┌→─────────┐ │
│ │ ┌→───┐ │ │ ┌→──┐ │ │
│ │ │name│ 80 ¯10 │ │ │age│ 83 │ │
│ │ └────┘ │ │ └───┘ │ │
│ └∊──────────────┘ └∊─────────┘ │
└∊───────────────────────────────┘
display mytab.names ⍝ field names.
┌→─────────────┐
│ ┌→───┐ ┌→──┐ │
│ │name│ │age│ │
│ └────┘ └───┘ │
└∊─────────────┘
ddb.remove mytab ⍝ remove table.
⍝ Finished --------------------------------------------------------------------
See also: →ReadMe← →RefCard←
Back to: Contents