为了弄清楚客户端程序与数据库服务器是如何通信的,我们就必须认识到SQL可以表现为不同的形式,并且可以用在程序设计抽象的不同层次上。
SQL接口可以分为五个层次:
第1层SQL用作数据定义语言DDL,定义了数据库模式的规格说明,主要用户是数据库设计者和DBA。
第2层SQL用作数据操纵语言DML,执行增删改查,这层的SQL是交互式的,用户可以在应用程序环境之外构造查询并让它立即在数据库上运行。
第3层SQL被嵌入在C语言等常规的程序设计语言中,借助一个预编译器来将SQL语句翻译成对DBMS供应商提供的DB库函数的调用,程序员直接使用ODBC、JDBC等进行编程。这里ODBC、JDBC的一个缺点是只具有SQL的最小公共特性,即客户端应用程序不能利用任何特殊的SQL特性或由特定DBMS供应商所支持的任何扩展。
第4层SQL被嵌入到客户端程序中,提供了比第3层更强的程序设计环境:应用生成器或第四代语言4GL。
第5层SQL中的部分可以从客户端移动到动态可编程的服务器端数据库,客户端程序可以调用服务器端程序,SQL作为程序设计语言来使用,如Oracle中的PL/SQL。