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 的差异性,并且给出解决方案,而且本书将会安排专门章节讲解跨数据库程序开发的技术。

数据库的语言——SQL的更多相关文章

  1. 数据库语言——SQL——基础部分——初篇

    概述 SQL全称为Structured Query Language,是关系型数据库的语言标准,它并不与特定的数据库商品类型有关,例如Mysql,Oracle,DB2等等都可以使用SQL语言,它与特定 ...

  2. 数据库语言sql

    数据库语言SQL SQL的形式 交互式SQL 一般DBMS都提供联机交互工具 用户可直接键入SQL命令对数据库进行操作 由DBMS来进行解释 嵌入式SQL 能将SQL语句嵌入到高级语言(宿主语言) 使 ...

  3. 【数据库】优化SQL语言

    第1章数据模型设计 第1条:确保所有表都有主键 [1]当表缺少主键时,会出现各种问题,所有表都必须有一列(或多列)设置为主键. [2]主键应当具备的特征 唯一性,值非空,不可变,尽可能简单 [3]不要 ...

  4. sqlite嵌入式数据库C语言基本操作(2)

    :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...

  5. sqlite嵌入式数据库C语言基本操作(1)

    sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...

  6. Oracle数据库多语言文字存储解决方案

    一.关于字符集 字符集(也称字元集,Character Set)就是字符编码表(codepage),一个字符不论英文.中文.韩文等在计算机系统内存或硬盘中通过二进制的字节(Byte)保存,这个二进制的 ...

  7. Oracle数据库之PL/SQL包

    Oracle数据库之PL/SQL包 1. 简介 包(PACKAGE)是一种数据对象,它是一组相关过程.函数.变量.常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来 ...

  8. JAVA-Unit01: 数据库原理 、 SQL(DDL、DML)

    Unit01: 数据库原理 . SQL(DDL.DML) SQL语句是不区分大小写的,但是行业里习惯将关键字与分关键字用大小写岔开以提高可读性. SELECT SYSDATE FROM dual DD ...

  9. 数据库入门-基本sql语句及数据类型

    一.基本sql语句 SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发.SQL语言分为3种类型: #.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储 ...

随机推荐

  1. BZOJ 3224 Tyvj 1728 普通平衡树 | Splay 板子+SPlay详细讲解

    下面给出Splay的实现方法(复杂度证明什么的知道是 nlogn 就可以啦) 首先对于一颗可爱的二叉查找树,是不能保证最坏nlogn的复杂度(可以想象把一个升序序列插入) (二叉查找树保证左子树元素大 ...

  2. inflate

    LayoutInflater是用 来找res/layout/下的xml布局文件,并且实例化 https://www.cnblogs.com/savagemorgan/p/3865831.html

  3. Good Substrings CodeForces - 271D

    You've got string s, consisting of small English letters. Some of the English letters are good, the ...

  4. 使用MAT分析内存泄露

    使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题.随着单机内存越来越大,应用heap也开得越来越大,动辄十 ...

  5. js密码的匹配正则

    匹配的密码是 数字大写或者小写的字母.符号. if(pwd.match(/[\d]/) && pwd.match(/[A-Za-z]/) && pwd.match(/[ ...

  6. JAVA路线

    [转]Java自学之路——by马士兵 作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机. ...

  7. 2017年上海金马五校程序设计竞赛:Problem B : Sailing (广搜)

    Description Handoku is sailing on a lake at the North Pole. The lake can be considered as a two-dime ...

  8. 卡片选项页面 JTabbedPane 的使用

    package first; import javax.swing.*; import java.awt.*; import java.awt.event.*; class TtpDemo exten ...

  9. R的农场

    R的农场 题目描述 最近,R 终于获得了一片他梦寐以求的农场,但如此大的一片农场,想要做好防卫工作可不是一件容易的事.所以 R 购买了 N 个守卫,分别让他们站在一定的位置上(守卫不可移动,同一位置上 ...

  10. 对象是否拥有某个属性,in和for in以及object.hasOwnProperty('×××')的异同,以及Object.defineProperty(),Object.keys(),Object.getOwnPropertyNames()的用法

    1.在某个对象是否拥有某个属性,判断的方法有很多,常用的方法就是object.hasOwnProperty('×××'),这个方法是不包括对象原型链上的方法的,举个例子: var obj = { na ...