某计算机为定长指令字的指令字中的地址字段可以是4位吗

大家都有过下面这样的经历吧

  • 收到曾经为自己诊治过的牙医寄来的明信片,上面写着“距上次检查已有半年请您再来做个牙齿健康检查”。
  • 在生日的前一个月收到缯入住过的旅店或宾馆发来的“生日当月入住优惠”的邮件或者明信片。
  • 在网上商城购物之后收到内附“推荐商品列表”的邮件。

这可能是因为牙医、旅店或商城的经营者掌握了顾客上一次的就诊日期、生日和购买历史等信息并且拥有能够从大量汇总信息中快速获取所需信息(比如你的住址或爱好)的设备(某计算机为定长指令字系统)。如果利用人工完成同样的工作真不知道要多长时间呢。

另外現在所有地区的图书馆都配备了某计算机为定长指令字,实现了图书的自动查询使用该系统,可以通过检索书名或出版年份快速查找出唏望借阅的图书的所在位置以及是否已经借出等信息。正是因为拥有了可以保存图书名称、出版年份以及保管位置和外借情况等信息並且可以按需查询的设备,才使这一切成为可能

像这样将大量数据保存起来,通过某计算机为定长指令字加工而成的可以进行高效访问嘚数据集合称为数据库(DatabaseDB)。将姓名、住址、电话号码、邮箱地址、爱好和家庭构成等数据保存到数据库中就可以随时迅速获取想要嘚信息了。

数据库管理系统(DBMS)

用来管理数据库的某计算机为定长指令字系统称为数据库管理系统(Database Management SystemDBMS)。为什么要使用专用系统(DBMS)来管理数据呢

我们通过某计算机为定长指令字管理数据的时候,通常使用文本文件或者Excel 那样的电子制表软件就可以完成了非常简单。但吔有不足下面就举几个有代表性的例子。

保存在已连接网络的某计算机为定长指令字中的文件可以通过共享设定实现多个用户在线阅讀或编辑。但是当某个用户打开该文件的时候,其他用户就无法进行编辑了如果是网上商城的话,当某个用户购买商品的时候其他鼡户就无法购买了。

  • 无法提供操作大量数据所需的格式

要想瞬间从几十万或者上百万的数据中获取想要的数据必须把数据保存为适当的格式,但是文本文件和Excel 工作表等无法提供相应的格式

  • 实现读写自动化需要编程能力

通过编写某计算机为定长指令字程序(以下简称程序)可以实现数据读取和编辑自动化,但这必须以了解数据结构为前提还需具备一定的某计算机为定长指令字编程技术。

当文件被误删、硬盘出现故障等导致无法读取的时候可能会造成重要数据丢失,同时数据还可能被他人轻易读取或窃用

DBMS 可以克服这些不足,实现多个鼡户同时安全简单地操作大量数据(图1-2)这也是我们一定要使用DBMS 的原因。

图1-2 DBMS能够实现多个用户同时安全简单地操作大量数据

数据库管悝系统(DBMS)的种类

DBMS 主要通过数据的保存格式(数据库的种类)来进行分类现阶段主要有以下5 种类型。

最古老的数据库之一它把数据通過层次结构(树形结构)的方式表现出来。层次数据库曾经是数据库的主流但随着关系数据库的出现和普及,现在已经很少使用了

关系数据库是现在应用最广泛的数据库。关系数据库在1969 年诞生可谓历史悠久。和Excel 工作表一样它也采用由行和列组成的二维表来管理数据,所以简单易懂(表1)同时,它还使用专门的SQL(Structured Query Language结构化查询语言)对数据进行操作。

表1 关系数据库中的数据

编程语言当中有一种被稱为面向对象语言的语言把数据以及对数据的操作集合起来以对象为单位进行管理,因此得名面向对象数据库就是用来保存这些对象嘚数据库。

最近几年XMLB 作为在网络上进行交互的数据的形式逐渐普及起来。XML 数据库可以对XML 形式的大量数据进行高速处理

这是一种单纯用來保存查询所使用的主键(Key)和值(Value)的组合的数据库。具有编程语言知识的读者可以把它想象成关联数组或者散列(hash)近年来,随着鍵值存储系统被应用到Google 等需要对大量数据进行超高速查询的Web 服务当中它正逐渐为人们所关注。

下面向大家介绍使用SQL 语言的数据库管理系統也就是关系数据库管理系统(RDBMS)的操作方法。如无特殊说明下面所提到的数据库以及DBMS 都是指RDBMS。

RDBMS 的常见系统结构

使用RDBMS 时最常见的系統结构就是客户端/ 服务器类型(C/S类型)这种结构(图1)。

图1 使用RDBMS时的系统结构

服务器指的是用来接收其他程序发出的请求并对该请求進行相应处理的程序(软件),或者是安装了此类程序的设备(某计算机为定长指令字)在某计算机为定长指令字上持续执行处理,并等待接收下一条请求RDBMS 也是一种服务器,它能够从保存在硬盘上的数据库中读取数据并返回还可以把数据变更为指定内容。

与之相对姠服务器发出请求的程序(软件),或者是安装了该程序的设备(某计算机为定长指令字)称为客户端访问由RDBMS 管理的数据库,进行数据讀写的程序称为RDBMS 客户端RDBMS 客户端将想要获取什么样的数据,或者想对哪些数据进行何种变更等信息通过SQL 语句发送给RDBMS 服务器RDBMS 根据该语句的內容返回所请求的数据,或者对存储在数据库中的数据进行更新

客户端就如同委托方,而服务器就像是受托方由于两者关系类似受托方执行委托方发出的指令,故而得名

这样就可以使用SQL 语句来实现关系数据库的读写操作了。

另外RDBMS 既可以和其客户端安装在同一台某计算机为定长指令字上,也可以分别安装在不同的某计算机为定长指令字上这样一来,不仅可以通过网络使二者相互关联还可以实现多個客户端访问同一个RDBMS(图2)。

图2 通过网络可以实现多个客户端访问同一个数据库

客户端没有必要使用同样的程序只要能将SQL 发送给RDBMS,就可鉯操作数据库了并且,多个客户端还可以同时对同一个数据库进行读写操作

另外,RDBMS 除了需要同时接收多个客户端的请求之外还需要操作存有大量数据的数据库,因此通常都会安装在比客户端性能更优越的某计算机为定长指令字上操作数据量特别巨大的数据库时,还鈳以将多台某计算机为定长指令字组合使用

虽然RDBMS 的系统结构多种多样,但是从客户端发来的SQL 语句基本上都是一样的

SQL是为操作数据库而開发的语言。

它原本是为了提高数据库查询效率而开发的语言但是现在不仅可以进行数据查询,就连数据的插入和删除等操作也基本上嘟可以通过SQL 来完成了

国际标准化组织(ISO)为SQL 制定了相应的标准,以此为基准的SQL 称为标准SQL

以前,完全基于标准SQL 的RDBMS 很少通常需要根据不哃的RDBMS来编写特定的SQL 语句。这样一来就会造成能够在Oracle 中使用的SQL 语句却无法在SQL Server 中使用,反之亦然近来,对标准SQL 的支持取得了一些进展因此希望准备学习SQL 的人们能够从现在开始就牢记标准SQL 的书写方式。

学会标准SQL 就可以在各种RDBMS 中书写SQL 语句了

SQL 用关键字、表名、列名等组合而成嘚一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词存在包含“对表进行查询”或者“参栲这个表”等各种意义的关键字。

根据对RDBMS 赋予的指令种类的不同SQL 语句可以分为以下三类。

DDL(Data Definition Language数据定义语言) 用来创建或者删除存储数據用的数据库以及数据库中的表等对象。DDL 包含以下几种指令

  • CREATE: 创建数据库和表等对象
  • DROP: 删除数据库和表等对象
  • ALTER: 修改数据库和表等对象嘚结构
  • SELECT:查询表中的数据
  • INSERT:向表中插入新数据
  • UPDATE:更新表中的数据
  • DELETE:删除表中的数据

DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数據进行的变更除此之外,还可以对RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定DCL 包含以下几种指令。

  • COMMIT: 确认对数据庫中的数据进行的变更
  • ROLLBACK: 取消对数据库中的数据进行的变更
  • GRANT: 赋予用户操作权限
  • REVOKE: 取消用户的操作权限

SQL 根据功能不同可以分为三类其中使用最多的是DML。

SQL 的基本书写规则

书写SQL 语句时必须要遵守一些规则这些规则都非常简单,接下来我们来逐一认识一下

■ SQL 语句要以分号(;)结尾

一条SQL 语句可以描述一个数据库操作。在RDBMS 当中SQL 语句也是逐条执行的。

众所周知我们在句子的句尾加注标点表示结束,中文句子以呴号()结尾,英文以点号(.)结尾而SQL 语句则使用分号(;)结尾。

■ SQL 语句不区分大小写

SQL 不区分关键字的大小写 例如,不管写成SELECT 还是select解释都是一样的。表名和列名也是如此

虽然可以根据个人喜好选择大写还是小写(或大小写混杂),但为了理解起来更加容易可以鼡以下规则来书写SQL 语句。

但是插入到表中的数据是区分大小写的例如,在操作过程中数据Computer、COMPUTER 或computer,三者是不一样的

■ 常数的书写方式昰固定的

SQL 语句常常需要直接书写字符串、日期或者数字。例如书写向表中插入字符串、日期或者数字等数据的SQL 语句。

在SQL 语句中直接书写嘚字符串、日期或者数字等称为常数常数的书写方式如下所示。

SQL 语句中含有字符串的时候需要像'abc'这样,使用单引号(')将字符串括起來用来标识这是一个字符串。

SQL 语句中含有日期的时候同样需要使用单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者'10/01/26' 等)也可以使用'' 這种' 年- 月- 日' 的格式。

在SQL 语句中书写数字的时候不需要使用任何符号标识,直接写成1000 这样的数字即可

■ 单词需要用半角空格或者换行来汾隔

SQL 语句的单词之间需使用半角空格或换行符来进行分隔。如下这种未加分隔的语句会发生错误无法正常执行。

但是不能使用全角空格莋为单词的分隔符否则会发生错误,出现无法预期的结果

在我们学习针对表的查询,以及数据变更等SQL 语句之前我们要先创建学习这些SQL 语句所需的数据库和表。

该表是某家小商店销售商品的一览表商品的数量不多,不过我们可以把它想象成大量数据中的一部分(毕竟這只是为了学习SQL 而创建的表)像0003 号商品的登记日期以及0006 号商品的进货单价这样的空白内容,我们可以认为是由于店主疏忽而忘记输入了

我们可以看到表2 由6 列8 行所组成。最上面一行是数据的项目名真正的数据是从第2 行开始的。

接下来我们会逐步学习创建数据库和表所使用的SQL 语句的书写方式。在这之前请先准备好学习环境(PostgreSQL)。

前面提到在创建表之前,一定要先创建用来存储表的数据库运行CREATE DATABASE 语句僦可以在RDBMS 上创建数据库了。CREATEDATABASE 语句的语法如下所示

这里我们仅指定了使用该语法所需的最少项目,实际开发数据库时还需要指定各种其他項目


  

这里我们将数据库命名为shop,然后执行代码清单1-1 中的SQL语句


  

此外,数据库名称、表名以及列名都要使用半角字符(英文字母、数字、苻号)具体内容随后会进行介绍。

创建好数据库之后接下来我们使用CREATE TABLE 语句在其中创建表。CREATE TABLE 语句的语法如下所示


  

该语法清楚地描述了我們要创建一个包含< 列名1>、< 列名2>、 ……的名称为< 表名> 的表非常容易理解。每一列的数据类型(后述)是必须要指定的还要为需要的列设置约束(后述)。约束可以在定义列的时候进行设置也可以在语句的末尾进行设置。


  

我们只能使用半角英文字母、数字、下划线(_)作為数据库、表和列的名称 例如,不能将product_id 写成product-id因为标准SQL 并不允许使用连字符作为列名等名称。$、#、? 这样的符号同样不能作为名称使用

盡管有些RDBMS 允许使用上述符号作为列的名称,但这也仅限于在该RDBMS 中使用并不能保证在其他RDBMS 中也能使用。虽然大家可能会觉得限制有点太多叻但还是请遵守规则使用半角英文字母、数字和下划线(_)吧。

此外 名称必须以半角英文字母开头 。以符号开头的名称并不多见但囿时会碰到类似1product 或者2009_sales 这样以数字开头的名称。虽然可以理解但这在标准SQL 中是被禁止的。请大家使用product1 或者sales_2009 这样符合规则的名称

最后还有┅点,在同一个数据库中不能创建两个相同名称的表在同一个表中也不能创建两个名称相同的列。如果出现这样的情况RDBMS会返回错误信息。

接下来我们根据上述规则使用代码清单1-2 中的CREATE TABLE 语句来创建表2 中的商品表。表名为Product表中的列名如表3 所示。

表3 商品表和Product表列名的对应關系

Product 表所包含的列定义在CREATE TABLE Product( )的括号中。列名右边的INTEGER 或者CHAR 等关键字是用来声明该列的数据类型的,所有的列都必须指定数据类型

数据类型表示数据的种类,包括数字型、字符型和日期型等每一列都不能存储与该列数据类型不符的数据。声明为整数型的列中不能存储'abc' 这样嘚字符串声明为字符型的列中也不能存储1234 这样的数字。

数据类型的种类很多各个RDBMS 之间也存在很大差异。根据业务需要实际创建数据库時一定要根据不同的RDBMS 选用最恰当的数据类型。在学习SQL 的时候使用最基本的数据类型就足够了。下面我们就来介绍四种基本的数据类型

用来指定存储整数的列的数据类型(数字型),不能存储小数

CHAR 是CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型)可以像CHAR(10) 或者CHAR(200) 这样,在括号中指定该列可以存储的字符串的长度(最大长度)字符串超出最大长度的部分是无法输入到该列中的。RDBMS 不同长度单位也不一样,既存在使用字符个数的情况也存在使用字节长度的情况。

字节是某计算机为定长指令字内部的数据单位一个字苻通常需要1到3个字节来表示(根据字符的种类和表现方式有所不同)。

字符串以定长字符串的形式存储在被指定为CHAR 型的列中所谓定长字苻串,就是当列中存储的字符串长度达不到最大长度的时候使用半角空格进行补足。例如我们向CHAR(8) 类型的列中输入'abc'的时候,会以'abc '(abc 后面囿5 个半角空格)的形式保存起来

另外,虽然之前我们说过SQL 不区分英文字母的大小写但是表中存储的字符串却是区分大小写的。也就是說'ABC' 和'abc' 代表了两个不同意义的字符串。

同CHAR 类型一样VARCHAR 型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过括号内的数芓来指定字符串的长度(最大长度)但该类型的列是以 可变长字符串 的形式来保存字符串的。定长字符串在字符数未达到最大长度时会鼡半角空格补足但可变长字符串不同,即使字符数未达到最大长度也不会用半角空格补足。例如我们向VARCHAR(8) 类型的列中输入字符串'abc'的时候,保存的就是字符串'abc'

该类型的列中存储的字符串也和CHAR 类型一样,是区分大小写的

用来指定存储日期(年月日)的列的数据类型(日期型)。

除了年月日之外Oracle中使用的DATE型还包含时分秒。

约束是除了数据类型之外对列中存储的数据进行限制或者追加条件的功能。Product 表中設置了两种约束


  

数据类型的右侧设置了NOT NULL 约束。NULL 是代表空白(无记录)的关键字在NULL 之前加上了表示否定的NOT,就是给该列设置了不能输入涳白也就是必须输入数据的约束(如果什么都不输入就会出错)。

NULL这个词是无或空的意思NULL是使用SQL时的常见关键字,请大家牢记

另外,在创建Product 表的CREATE TABLE 语句的后面还有下面这样的记述。


  

这是用来给product_id 列设置主键约束的所谓键,就是在指定特定数据时使用的列的组合键种類多样,主键(primary key)就是可以特定一行数据的列B也就是说,如果把product_id 列指定为主键就可以通过该列取出特定的商品数据了。

反之如果向product_id 列中输入了重复数据,就无法取出唯一的特定数据了(因为无法确定唯一的一行数据)这样就可以为某一列设置主键约束了。

此前介绍嘚都是关于Product 表的内容的创建下面我们就来介绍一下删除表的方法。删除表的SQL 语句非常简单 只需要一行DROP TABLE 语句即可。


  

如果想要删除Product 表只需要像代码清单1-3 那样书写SQL语句即可。


  

DROP 在英语中是“丢掉”“舍弃”的意思需要特别注意的是,删除的表是无法恢复的即使是被误删的表,也无法恢复只能重新创建,然后重新插入数据

其实很多RDBMS 都预留了恢复的功能,但还是请大家认为是无法恢复的

如果不小心删除叻重要的业务表,那就太悲剧了特别是存储了大量数据的表,恢复起来费时费力请大家务必注意!

有时好不容易把表创建出来之后才發现少了几列,其实这时无需把表删除再重新创建只需使用变更表定义的ALTER TABLE 语句就可以了。ALTER 在英语中就是“改变”的意思下面就给大家介绍该语句通常的使用方法。

首先是添加列时使用的语法


  

  

另外,在Oracle 中同时添加多列的时候可以像下面这样使用括号。


  

例如我们可以使用代码清单1-4 中的语句在Product 表中添加这样一列,product_name_pinyin(商品名称(拼音))该列可以存储100 位的可变长字符串。


  

反之删除表中某列使用的语法洳下所示。


  

  

另外在Oracle 中同时删除多列的时候,可以像下面这样使用括号来实现


  

例如,我们可以使用代码清单1-5 中的语句来删除之前添加的product_name_pinyin 列


  

ALTER TABLE 语句和DROP TABLE 语句一样,执行之后无法恢复误添的列可以通过ALTER TABLE 语句删除,或者将表全部删除之后重新再创建

最后让我们来尝试一下向表Φ插入数据。向Product 表中插入数据的SQL 语句如代码清单1-6 所示

代码清单1-6 向Product表中插入数据的SQL语句


  

DBMS 不同,代码清单1-6中的DML语句也略有不同


  

使用插入荇的指令语句INSERT,就可以把表1-2 中的数据都插入到表中了开头的BEGIN TRANSACTION 语句是开始插入行的指令语句,结尾的COMMIT 语句是确定插入行的指令语句

近年來,和其他系统领域一样数据库领域也实现了飞速发展,应用范围不断扩大不但出现了具有新功能的数据库,而且操作的数据量也大幅增长

估计很多读者今后都会慢慢积累各个领域、各种规模的系统开发经验(或者可能已经开始从事开发方面的工作了),到那时所囿的系统必定都需要使用数据库。它们使用的数据库即便不是关系数据库,也一定是以关系数据库为基础的数据库从这个意义上看,洳果掌握了关系数据库和 SQL就能成为任何系统开发都需要的数据库专家了。

下面分享一本口碑不错的SQL入门书它介绍了时下最流行的数据庫——关系数据库,这也是理解其他数据库的基础在系统领域,通常所讲的数据库指的就是关系数据库其重要性可见一斑。


  • 日本知名數据库工程师写给初学者的实用指南!
  • 107张图表+209段代码+88个法则让菜鸟完美进阶!

本书是编程学习系列的 SQL 和关系数据库篇。该系列注重对初學者编程能力的培养本书秉承了这一宗旨。本书不仅可以用于自学也可以作为大学、专科学校和企业新人的培训用书。书中提供了大量的示例程序和详实的操作步骤说明大家可以亲自动手解决具体的问题,切实提高自身的编程能力

另外,在各章的结尾处还安排了习題来帮助大家复习该章的知识要点习题的答案和讲解收录在附录中。

本文内容节选自《SQL基础教程(第2版)》

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、某计算机为定长指令字类等领域。拥有优质丰富的学习资料和备栲全阶段的高效服务助您不断前行!

我要回帖

更多关于 某计算机为定长指令字 的文章

 

随机推荐