| advertise add site services publishers database health videos | ![]() | about toolbar stats live show health store more stuff JOIN/LOGIN |
Stanford Center for Biomedical Informatics Research, Publications,... bmir.stanford.edu | Preschool Language Program - Speech-Language Pathology Program -... childrenshospital.org | Hypnotherapy Course : Robert Phipps -Body Language Masterclass, Body... hypnotherapycourse.net |
QUEL is a relational database access language, similar in most ways to SQL. It was created as a part of the Ingres effort at University of California, Berkeley, based on Codd's earlier suggested but not implemented Data Sub-Language ALPHA. QUEL was used for a short time in most products based on the freely-available Ingres source code, most notably Informix.[citation needed] As Oracle and DB2 started taking over the market in the early 1980s, most companies then supporting QUEL moved to SQL instead.[citation needed] QUEL continues to be available as a part of the Ingres DBMS today, although no QUEL-specific language enhancements have been added for many years. [edit] UsageQUEL statements are always defined by tuple variables, which can be used to limit queries or return result sets. Consider this example, taken from the original Ingres paper: range of e is employee retrieve (comp = e.salary/ (e.age - 18)) where e.name = "Jones" e is a tuple, defining a set of data, in this case all the rows in the employee table that have the first name "Jones". An equivalent SQL statement is: select (e.salary/ (e.age - 18)) as comp from employee as e where e.name = "Jones" QUEL is generally more "normalized" than SQL.[citation needed] Whereas every major SQL command has a format that is at least somewhat different from the others, in QUEL a single syntax is used for all commands.[citation needed] For instance, here is a sample of a simple session that creates a table, inserts a row into it, and then retrieves and modifies the data inside it and finally deletes the row that was added (assuming that name is a unique field). create student(name = c10, age = i4, sex = c1, state = c2) range of s is student append to s (name = "philip", age = 17, sex = "m", state = "FL") retrieve (s.all) where s.state = "FL" replace s (age=s.age+1) retrieve (s.all) delete s where s.name="philip" Here is a similar set of SQL statements: create table student(name char(10), age int, sex char(1), state char(2)) insert into student (name, age, sex, state) values ('philip', 17, 'm', 'FL') select * from student where state = 'FL' update student set age=age+1 select * from student delete from student where name='philip' Note that every command uses a unique syntax, and that even similar commands like Another feature of QUEL was a built-in system for moving records en-masse into and out of the system. Consider this command: copy student(name=c0, comma=d1, age=c0, comma=d1, sex=c0, comma=d1, address=c0, nl=d1) I which creates a comma-delimited file of all the records in the student table. The d1 indicates a delimiter, as opposed to a data type. Changing the QUEL has an extremely powerful aggregation capability. Aggregates can be nested, and different aggregates can have independent by-lists and/or restriction clauses. For example: retrieve (a=count(y.i by y.d where y.str = "ii*" or y.str = "foo"),b=max(count(y.i by y.d))) This example illustrates one of the arguably less desirable quirks of QUEL, namely that all string comparisons are potentially pattern matches. [edit] See also
[edit] External links
|
| ↑ top of page ↑ | about thumbshots |