1 什么是关系型数据库管理系统

参考答案

由关系、数据、数据之间的约束三者所组成的数据模型则称为RDBMS,即关系型数据库管理系统。

2 下列关于表的结构说法正确的是

A.表是二维的, 由行和列组成。

B.表的行(Row)是横排数据,也被称作字段(Field)。

C.表的列(Column)是纵列数据,也被称作记录(Record)。

D.表是关系数据库的基本存储结构,一个关系数据库由多个数据表(Table)组成。

参考答案

本题正确答案为AD。

B选项说法不正确,表的行(Row)是横排数据,也被称作记录(Record)。

C选项说法不正确,表的列(Column)是纵列数据,也被称作字段(Field)。

3 简述几种主流的数据库及其厂商

参考答案

主流的数据库及其厂商如下:

1)Oracle数据库是著名的Oracle(甲骨文)公司的数据库产品,Oracle数据库是世界上第一个商品化的关系型数据库管理系统;Oracle数据库采用标准SQL(结构化查询语言),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、WINDOWS、OS/2等多种平台;Oracle公司的产品丰富,包括Oracle服务器、 Oracle开发工具和Oracle应用软件,其中最著名的就是Oracle数据库。

2)DB2是IBM公司的关系型数据库管理系统。DB2有很多不同的版本, 可以运行在从掌上产品到大型机不同的终端机器上;DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分别是单用户和多用户系统, 可以运行在OS/2和Windows上;DB2是Oracle的主要竞争对手。

3)Sybase是美国Sybase公司的关系型数据库系统。Sybase是较早采用C/S技术的数据库厂商;典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统;Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在国内大中型系统中具有广泛的应用;Sybase公司2010年被SAP收购。

4)Microsoft SQL Server是微软的产品,运行在Windows NT服务器上。Microsoft SQL Server的最初版本适用于中小企业,但是应用范围不断扩展,已经触及到大型、跨国企业的数据库管理。

5)MySQL是开放源码的小型关系型数据库管理系统。广泛应用在中小型网站中,成本低、规模较Oracle和DB2小;2008年1月16日,Sun收购MySQL。2009年4月20日,SUN被Oracle公司收购,所以MySQL现在属于Oracle公司。

4 简述结构化查询语言的分类

参考答案

结构化查询语言(SQL)可分为:

1)数据定义语言(DDL):Data Definition Language

2)数据操纵语言(DML):Data Manipulation Language

3)事务控制语言(TCL):Transaction Control Language

4)数据查询语言(DQL):Data Query Language

5)数据控制语言(DCL):Data Control Language

5 关于number类型,下列说法正确的是

A.在Oracle中,number表示数字类型。

B.“salary NUMBER(6,2)“表示salary列中的数据,整数位最大为4位,小数位最大位数是2位,即最大取值:9999.99。

C.“id NUMBER(4)“表示id列中的数据,整数位最大为4位,没有小数。

D.“fee NUMBER(7,2)“表示fee列中的数据,整数最大位数为7位,小数为2位。

参考答案

本题正确答案为ABC。

NUMBER表示数字类型,经常被定义成NUMBER(P,S)形式,其中,P表示数字的总位数;S表示小数点后面的位数,因此本题中的ABC选项说法正确,D选项说法错误。

6 关于char和varchar2,下列说法正确的是

A.char和varchar2都表示字符类型,无区别。

B.char表示固定长度的字符类型,而varchar2表示变长的字符类型。

C.“job VARCHAR2(100)”表示job列中最多可存储长度为100个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100个字节。

D.“ename CHAR(20)”表示ename列中最多可存储20个字节的字符串,并且占用的空间是固定的20个字节。

参考答案

本题正确答案为BCD。

CHAR表示固定长度的字符类型。经常被定义成CHAR(N)形式, N表示占用的字节数最大长度是2000字节。例如在表Emp中的ename列的定义如下:

    ename CHAR(20);

表示Ename列中最多可存储20个字节的字符串,并且占用的空间是固定的20个字节。

VARCHAR2表示变长的字符类型。定义格式是VARCHAR2(N), N表示最多可占用的字节数,最大长度是4000字节。在表Emp中的job列的定义如下:

job VARCHAR2(100);

表示job列中最多可存储长度为100个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100个字节。

7 已知表如下,下列insert语句正确的是:

已知创建student表的SQL语句如下:

CREATE TABLE student(
	id NUMBER(4),
	name VARCHAR2(20),
	gender CHAR(1),
	birth DATE
);

下列对student表实施插入的SQL语句正确的是:()。

A.insert into student(id,name,birth)

values(1001,'smith','1989-01-12');

B.英文环境可以采用如下插入语句实施插入:

insert into student(id,name,birth)

values(1001,'smith','12-JAN-89');

C.中文环境可以采用如下插入语句实施插入:

insert into student(id,name,birth)

values(1001,'smith','12-1月-89');

D.insert into student(id,name,birth)

values(1001,'smith',to_date('1989-01-12','yyyy-mm-dd'));

参考答案

本题正确答案为:BCD

如果插入的列有日期字段,需要考虑日期的格式,默认的日期格式‘DD-MON-RR’,中文系统和英文系统略有不同,例如B选项和C选项的用法。

可以自定义日期格式,用TO_DATE函数转换为日期类型的数据,例如D选项的用法。

8 创建账务账户表(Account)

帐务帐户表的信息如表-1所示:

表-1 帐务帐户表信息

请根据上述表信息创建账务账户表Account。

参考答案

创建账务账户表的SQL如下所示:

create table ACCOUNT
(
  ID              NUMBER(9) not null,
  RECOMMENDER_ID  NUMBER(9),
  LOGIN_NAME      VARCHAR2(30) not null,
  LOGIN_PASSWD    VARCHAR2(8) not null,
  STATUS          CHAR(1),
  CREATE_DATE     DATE default SYSDATE,
  PAUSE_DATE      DATE,
  CLOSE_DATE      DATE,
  REAL_NAME       VARCHAR2(20) not null,
  IDCARD_NO       CHAR(18) not null,
  BIRTHDATE       DATE,
  GENDER          CHAR(1),
  OCCUPATION      VARCHAR2(50),
  TELEPHONE       VARCHAR2(15) not null,
  EMAIL           VARCHAR2(50),
  MAILADDRESS     VARCHAR2(50),
  ZIPCODE         CHAR(6),
  QQ              VARCHAR2(15),
  LAST_LOGIN_TIME DATE,
  LAST_LOGIN_IP   VARCHAR2(15)
);

9 修改账务账户表(Account)

修改账务账户表,详细要求如下:

1)修改account表的表名为t_account;

2)向t_account表增加一列bak,其数据类型为varchar2,长度为50;

3)修改t_account表中的bak列的长度为40,并增加默认值的设置,默认值为“login”;

4)删除t_account表中的bak列。

参考答案

实现此案例需要按照如下步骤进行。

步骤一:修改表名

将account表的表名修改为t_account,使用如下SQL语句:

RENAME account TO t_account;

步骤二:增加列

给t_account表增加一列bak,其数据类型为varchar2,长度为50,使用的SQL语句如下:

ALTER TABLE t_account ADD (bak varchar2(50));

步骤三:修改列

修改t_account表中的bak列的长度为40,并增加默认值的设置,默认值为“login”,使用的SQL语句如下:

ALTER TABLE t_account
MODIFY(bak VARCHAR2(40) DEFAULT 'login' );

步骤四:删除列

删除表t_account中的bak列,使用的SQL语句如下:

ALTER TABLE t_account DROP (bak);

10 插入账务账户数据

向t_account表中插入一条记录,该条记录的数据如表-2所示。

表- 2

参考答案

插入数据的SQL语句如下:

--中文环境
INSERT INTO T_ACCOUNT(ID,LOGIN_NAME,LOGIN_PASSWD,CREATE_DATE,
     REAL_NAME,IDCARD_NO,TELEPHONE)
VALUES(1,'shiyl','256528',
'28-1月-08','shiyuanli','410381194302256523',13669351234);
--英文环境
INSERT INTO T_ACCOUNT(ID,LOGIN_NAME,LOGIN_PASSWD,CREATE_DATE,
     REAL_NAME,IDCARD_NO,TELEPHONE)
VALUES(1,'shiyl','256528',
'28-JAN-08','shiyuanli','410381194302256523',13669351234);

11 更改账务账户数据

将账务账户表ID为1的账务账户的密码更改为801206。

参考答案

更新数据的SQL语句如下:

update  t_account set login_passwd='801206' where id=1;

12 删除账务账户数据

删除账务账户表中ID为1的账务账户信息。

参考答案

删除数据的SQL语句如下:

delete from t_account where id=1;

13 创建示例表emp和dept

创建职员表 emp,表结构如表-3所示:

表-3职员表emp 信息

创建部门表 dept,表结构如表-4所示:

表-4 部门表 dept 信息

参考答案

参考答案:

创建dept表的代码如下:

CREATE TABLE dept
       (deptno NUMBER(2),
	dname VARCHAR2(14) ,
	loc VARCHAR2(13) ) ;

创建emp表的代码如下:

CREATE TABLE emp(
empno NUMBER(4),
	ename VARCHAR2(10),
	job VARCHAR2(9),
	mgr NUMBER(4),
	hiredate DATE,
	sal NUMBER(7,2),
	comm NUMBER(7,2)
);

14 为示例表emp和dept插入示例数据

为职员表 emp插入示例数据,示例数据如图-1所示:

图-1

为部门表 dept插入示例数据,示例数据如图-2所示:

图-2

参考答案

为dept表插入示例数据的代码如下:

INSERT INTO dept VALUES
	(10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES 
   (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES
	(30,'SALES','CHICAGO');
INSERT INTO dept VALUES
	(40,'OPERATIONS','BOSTON');

为emp表插入示例数据的代码如下:

INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,to_date('19-4-87','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,to_date('23-5-87','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);