购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 SQL语言概述

SQL是一种针对关系数据库的数据操作语言,它允许用户对关系数据库进行数据操作处理。在使用SQL语句操作数据库时,用户无须指定数据存取方法,也不需要了解具体的数据存储方式,用户仅仅使用简单的SQL语句即可完成数据库的操作访问。此外,SQL语句还可以嵌套在许多程序设计编程语言中,实现应用程序对数据库的操作访问功能,从而实现灵活、强大的数据处理功能。

3.1.1 SQL语言标准

20世纪70年代,IBM公司在研制数据库产品System R的过程中,开发出一种Sequel语言,用于关系数据库的操作。1980年,IBM公司将其改名为SQL。1986年,该语言被美国国家标准学会(ANSI)进行规范化处理,被制定为关系数据库的操作语言标准,命名为ANSI X3.135-1986。1987年,它又被国际标准化组织(International Organization for Standardization,ISO)采纳,成为关系数据库操作语言的国际标准。

此后,国际标准化组织对SQL标准一直进行修订与完善,陆续推出SQL-89、SQL-92、SQL:1999、SQL:2003、SQL:2006、SQL:2008、SQL:2011、SQL:2016等版本。正是由于SQL的标准化,所有关系数据库系统都支持SQL。SQL已经发展成为跨不同关系数据库平台,进行数据操作访问的标准语言。

3.1.2 SQL语言特点

SQL是关系数据库操作访问的标准语言,适用于各类关系数据库的操作。它具有如下特点:

1)一体化操作。SQL语句集可以完成关系数据库中的所有操作,包括数据定义、数据操纵、数据查询、数据库控制、数据库管理等。

2)使用方式灵活。SQL语句既可以用命令行交互方式操作数据库,也可以嵌入高级程序设计语言(如C、C++、Java、Python、VB、PB等)中编程操作数据库。

3)非过程化。不像程序设计语言的过程操作,SQL语句对数据库的操作直接将操作命令提交DBMS执行。SQL语句只需要告诉DBMS“做什么”,而不需要告诉它“怎么做”。

4)语言语法简单。SQL语言的操作语句不多,其语句命令的语法也较简单。语句命令接近英语,用户容易理解与使用。

3.1.3 SQL语句类型

使用SQL,用户可以对关系数据库进行各类操作。SQL语言由数据定义、数据操纵、数据查询、数据控制、事务处理和游标控制等类型语言组成。

(1)数据定义语言

数据定义语言(Data Definition Language,DDL)类型语句用于创建与维护数据库对象,如数据库、数据库表、视图、索引、触发器、存储过程等。该类语句包括创建对象、修改对象和删除对象等语句。例如,在数据库中创建新表或删除表(CREATE TABLE或DROP TABLE)、创建或删除索引(CREATE INDEX或DROP INDEX)。

(2)数据操纵语言

数据操纵语言(Data Manipulation Language,DML)类型语句用于对数据库中的数据表或视图进行数据插入、数据删除、数据更新等处理。例如,使用INSERT、UPDATE和DELETE语句,分别在数据表中添加、更新或删除数据行。

(3)数据查询语言

数据查询语言(Data Query Language,DQL)类型语句用于从数据库表中查询或统计数据,但该语句不会改变数据库中的数据。例如,使用SELECT语句可从数据库表中查询数据。

(4)数据控制语言

数据控制语言(Data Control Language,DCL)类型语句用于对数据库对象的访问权限控制。例如,使用GRANT语句授权用户或角色对指定数据库对象的访问权限。

(5)事务处理语言

事务处理语言(Transaction Process Language,TPL)类型语句用于数据库事务的编程处理。例如,使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句控制事务开始、事务提交、事务回退等处理。

(6)游标控制语言

游标控制语言(Cursor Control Language,CCL)类型语句用于数据库游标结构的使用。例如,DECLARE CURSOR、FETCH INTO和CLOSE CURSOR用于数据库游标对象声明、提取游标所指向的缓冲区数据、关闭游标对象等。

本章只介绍前3类SQL语句,后3类SQL语句分别在第5章、第6章中介绍。

3.1.4 SQL数据类型

在定义关系数据库表结构时,需要指定关系表中各个属性列的取值数据类型。SQL支持如下几种基本数据类型。

(1)字符串型varchar( n )、char( n

字符串型为若干字符编码构成的字节数据。参数 n 定义字符串的字节长度。如果长度为零,则该字符串被称为空字符串。varchar( n )型是可变长度字符串,char( n )为固定长度字符串。varchar( n )型字段的一个特点是它可以比char( n )型字段占用更少的内存和硬盘空间,但其检索速度不如char( n )型字段快。

(2)整数型int、smallint

整数型为整数数值。int为整数类型,其值范围与CPU字长有关,CPU字长为16位时,其int整数范围为-32768~32767;smallint为小整数,通常为8位,表示范围为-128~127。

(3)定点数型numeric( p , d

numeric( p , d )为定点数, p 为定点数的总位数, d 为定点数的小数位数。该数据类型可以表示带小数的数值。

(4)浮点数型real、double( n , d

real为单精度浮点数,double( n , d )为双精度浮点数。

(5)货币型money

money为货币数据类型,专门用于货币数据表示。

(6)逻辑型bit

bit型只能取两个值(0或1),用于表示逻辑“真”和“假”。

(7)日期型date

date用于表示日期数据的年/月/日。

关系DBMS除了支持基本SQL数据类型外,还支持一些扩展的数据类型。例如,PostgreSQL数据库软件支持的主要数据类型见表3-1。

表3-1 PostgreSQL数据库软件支持的主要数据类型

(续)

课堂讨论:本节重点与难点知识问题

1)SQL是一种什么类型语言?它与Java语言有什么区别?

2)SQL有哪些类型语句,每类语句可完成什么操作处理?

3)DBMS内部如何执行SQL语句?

4)PostgreSQL数据库软件除支持SQL固有数据类型外,还支持哪些数据类型?

5)在PostgreSQL数据库软件中,如何自定义对象数据类型?

6)PostgreSQL数据库软件在哪些方面拓展了SQL功能? P5jGKrsmZTr4N55aUfeSA8xuiD+I04EaARxHHWh/3tMIzSPIALvIeAR3Mx3hRUsd

点击中间区域
呼出菜单
上一章
目录
下一章
×