Main Page | See live article | Alphabetical index

QUEL

QUEL is a relational database access language, similar in most ways to SQL, but somewhat better arranged and easier to use. It was created as a part of the groundbreaking Ingres effort at University of California, Berkeley, and was used for a short time in most products based on the freely-available Ingres source code, most notably Informix. As Oracle and DB2 started taking over the market in the early 1980s, most companies supporting QUEL moved to SQL instead.

QUEL was generally more "normalized" than SQL. Whereas every major SQL command has a format that is at least somewhat different than the others, in QUEL a single syntax was used for all commands.

For instance, here is a sample of simple session that creates a table, inserts a row into it, and then retrieves and modifies the data inside it.

create student(name = c10, age = i4, sex = c1, state = c2)
append to student(name = "philip", age = 17, sex = "m", state = "FL")
range of s is student retrieve (s.all) where s.state = "FL"
print s
range of s is student replace s(age=s.age+1)
print s

Note that QUEL commands that operate over several rows always use a rowset variable defined with the range command, which can be used inside the statements themselves.

Here is a similar set of SQL instructions:

create table student(name char(10), age int, sex char(1), state char(2))
insert student (name, age, sex, state) values ("philip", 17, "m", "FL")
select * from student where state = "FL"
update student set age=age+1

Note that every command uses a unique syntax, and that even similar commands like INSERT and UPDATE use completely different styles.

Another advantage 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)
into "/student.txt"

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 into to a from reverses the process. Similar commands are available in many SQL systems, but almost always as external tools, as opposed to being internal to the SQL language. This makes them unavailable to stored procedures.

With these differences, however, the two languages are largely the same.