zoukankan      html  css  js  c++  java
  • 数据库的语言——SQL

    DBMS 是一种系统软件,我们要与它交互的时候就必须使用某种语言,在数据库发展初期每一种DBMS 都有自己的特有的语言,不过逐渐的SQL 成为了所有DBMS 都支持的主流语言。SQL 是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。

    SQL的英文全称是Structured Query Language,它是1974 年由Boyce和Chamberlin提出的,并且首先在IBM的关系数据库原型产品R系统(SYSTEM R)上实现。它的前身是1972 提出的SQUARE(Specifying Queries As Relational Expressesion)语言,在1974 年做了修改,并且改名为SEQUEL(Structured English Query Language)语言,后来SEQUEL简化为SQL。

    SQL 是高级的非过程化编程语言,允许用户在高层数据结构上工作。使用它,用户无需指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL 语言作为数据输入与管理的接口。它以记录集合作为操纵对象,所有SQL 语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL 语句的输出作为另一条SQL 语句的输入,所以SQL 语言可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的一个单

    独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。

    SQL 具有下面4个主要的功能:创建数据库并定义表的结构;查询需要的数据;更新或者删除指定的数据;控制数据库的安全。使用SQL我们可以完成和DBMS的几乎所有交互任务。

    比如我们要查找年龄小于18 岁的员工信息,那么我们只要执行下面的SQL就可以:

    SELECT * from Employees where age<18

    比如我们要将所有职位为“名誉总裁”的员工删除,那么就可以执行下面的SQL:

    DELETE from Employees where position=’ 名誉总裁’

    可以看到我们只是描述了我们要做什么,至于怎么去做则由DBMS 来决定。可以想想如果要是自己编程去实现类似的功能,则需要编写非常复杂的算法才能完成,而且性能也不一定会非常好。

    我们可以通过三种方式执行SQL:

    1,在工具中执行。各个DBMS几乎都提供了工具用于执行SQL语句,比如Microsoft SQL,Server 的Management Studio、DB2 的命令中心、Oracle的SqlPlus 或者MySQL的Query Browser。在这些工具中我们只要输入要执行的SQL然后点击【执行】按钮就可以得到执行结果。

    2,以编译的方式嵌入到语言中。在这种方式中我们可以把SQL 直接写到代码中,在编译的时候由编译器来决定和数据库的交互方式。比如PowerBuild、C等就采用这种方式。

    3,以字符串的形式嵌入到语言中。在这种方式中SQL 语句只是以字符串的形式写到代码中,然后由代码将其提交到DBMS,并且分析返回的结果。目前这是大部分支持数据

    库操作的语言采用的方式,比如C#、Java、Python、Delphi 和VB等。

    由于嵌入到语言中的执行方式是严重依赖宿主语言的,而本书不假定用户使用任何编程语言,为了能够使得使用任何语言的读者都能学习本书中的知识点,本书将主要以在工具中执行的方式来执行SQL语句,读者可以根据自己使用的编程语言来灵活运用这些知识点。

    IBM 是SQL 语言的发明者,但是其他的数据库厂商都在IBM 的SQL 基础上提出了自己的扩展语法,因此形成了不同的SQL 语法,对于开发人员来说,使用这些有差异的语法是非常头疼的时候。因此在1986年美国国家标准化协会(ANSI)为SQL 制定了标准,并且在1987年国际标准化组织(ISO)也为SQL 指定了标准,迄今为止已经推出SQL-86、SQL-89、SQL-92、SQL-99、SQL-2003等版本的标准。

    虽然已经有了国际标准,但是由于种种原因,各个数据库产品的SQL 语法仍然有着很大差异,在数据库A上能成功执行的SQL放到数据库B上就会执行失败。为了方便使用不同数据库产品的读者都能成功运行本书中的例子,我们会介绍各种数据库SQL 的差异性,并且给出解决方案,而且本书将会安排专门章节讲解跨数据库程序开发的技术。

  • 相关阅读:
    fn project 试用之后的几个问题的解答
    fn project 扩展
    fn project 生产环境使用
    fn project 对象模型
    fn project AWS Lambda 格式 functions
    fn project 打包Function
    fn project Function files 说明
    fn project hot functions 说明
    fn project k8s 集成
    fn project 私有镜像发布
  • 原文地址:https://www.cnblogs.com/yuyu666/p/9819963.html
Copyright © 2011-2022 走看看