数据库复习题

填空题

26、在insert语句中添加( )可在主键冲突时,利用更新的方法完成数据插入

on duplicate key update;

32、函数( )可以获取通过MySQL服务器验证的账户

current_user();

33、MySQL提供的( )可用于刷新用户权限

flush privileges;

34、在mysql数据库中,列权限的所有信息存储在( )表中。 

columns_priv;

44、显式开启事务的语句是( )

start transcation;

45、事务的自动提交通过( )变量来控制。 

autocommit

46、事务的4个隔离级别中安全级别最高的是( ) 

serializable

52、MySQL提供的( )可自定义新的语句结束符号 

delimiter

简答题

2.数据库系统阶段的特点是什么?

1.数据结构化            2.数据的共享性高、冗余度低、易扩充

3.数据独立性高        4.由DBMS统一运行管理和控制

3.数据库管理系统从三个层次来管理数据,请简述三级模式和二级映像

三级模式:

1.外模式:用户能够看见和使用        局部数据的逻辑结构和特征的描述

2.模式:数据的逻辑结构和特征的描述,是所有用户的公共视图

3.内模式:内部的表示        物理结构和存储方式的描述。

两级映像:

1.外模式/模式映像:模式改变        映像        外模式不变        逻辑独立性。

2.模式/内模式映像:存储结构改变        映像        模式不变        物理独立性。

5.什么是数据模型?数据库发展过程中出现了哪3种主要的数据模型?最常用的数据模型是什么?

1.数据模型:数据特征的抽象

2.3种数据模型:概念模型、逻辑模型、物理模型(按不同的应用层次)

3.最常用的数据模型:层次模型、网状模型、关系模型

6.从关系模型角度理解,数据建模大致分为哪几个阶段?作用分别是什么?

概念建模:描述世界的概念化结构,它是数据库的设计人员在设计的初始阶段。

逻辑建模:具体的DBMS所支持的数据模。

物理建模:计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关

7.关系模型的完整性包括哪些?其核心内容分别是什么?

1.实体的完整性:若属性A是基本关系R的主属性,则A不能取空值。

2.参照完整性规则:若F是基本关系R的外码,与基本关系S的主码KS相对应,则对于R中每个元组在F上的值必须为下面两者之一:(1)或者取空值(2)或者等于S中某个元组的主码值

3.用户定义的完整性:针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。

8.关系代数的常用运算(要求:给定关系,能够写出正确结果):

1.传统的集合操作:并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除)
2.专门的关系运算:除法、垂直分割(投影)、水平分割(选择)、关系的结合(连接)
3.五种基本操作:选择、投影、并、差、笛卡尔积------其他的交、差、除均可以用这五种基本运算表示

9.常见的关系数据库有哪些(列举3-5个)?MYSQL和它们使用一样的标准化语言是什么?

关系数据库有Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access

标准化语言:SQL

10.数据库设计包括哪几个阶段?

需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施、数据库的运行和维护

11.数据库设计的规范化的必要性是什么?为了规范化,常用的范式有哪些?请分析数据库范式1NF、2NF、3NF的区别。

规范化的必要性:避免数据的冗余,导致数据的异常。

1.范式:规范化的关系,符合某一种级别的关系模式的集合
2.1NF:若关系模式R的每一个分量都是不可分的数据项,则关系模式R属于第一范式。(原子性)
3.2NF:若关系模式R属于1NF,且每一个非主属性都完全函数依赖于码,则关系模式属于2NF。
4.3NF:若关系模式R属于2NF,且每一个非主属性既不部分依赖也不传递依赖于码,则关系模式属于3NF。

12.视图的概念和作用是什么?优点是什么?

视图的概念:视图是一个虚拟表

视图的作用(优点)

(1)简化用户操作
(2)使用户能以多个角度看待同一数据
(3)对重构数据库提供了一定的逻辑独立性
(4)对机密数据提供安全保护
(5)适当利用视图可以更清晰地表达查询

13.什么是事务?事务的基本特征是什么?请简述什么是事务的ACID特性

什么是事务:事务是用户定义的一个数据库操作系列,这些操作要么全做,要么全不做。

事务具有四个特性,即ACID特性:

(1)原子性:都做,要么都不做。
(2)一致性:一致性状态变到另一个一致性状态。
(3)隔离性:一个事物的执行不能被其他事务干扰。
(4)持续性:事务一旦提交,对数据库的改变是永久性的。

22.请简述存储过程和函数的区别。

1.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

2.对于存储过程来说可以返回参数(output),而函数只能返回值或者表对象。

3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

25.存储过程有哪些优点?

存储过程增强了SQL语言的功能和灵活性

存储过程能实现较快的执行速度

存储过程允许标准组件是编程

存储过程能够减少网络流量

存储过程可被作为一种安全机制来充分利用。

26.查看存储函数状态的方法有哪些?

通过show status语句

如果要查看存储过程或函数的详细信息,要使用show create语句

27.请阐述游标在存储过程中的作用

游标是一个被select语句检索出来的结果集。在存储了游标后,应用程序或用户就可以根据需要滚动或浏览其中的数据。

28.什么是触发器

触发器是一种特殊的存储过程,它在试图更改触发器所保护的数据时自动执行。它被定义为在对表或视图发出update、insert或 delete语句时自动执行,在有数据修改时自动强制执行其业务规则。

29.请阐述事件与触发器的区别:

事件调度器时间周期触发

触发器事件触发

30.在mysql中可以授予的权限有哪些?

列权限、表权限、数据库权限和用户权限。

31.事务的隔离性级别有哪些?

序列化、可重复读、提交读、未提交读

32.如果没有并发控制会出现什么问题?

若对并发操作不加控制可能会存取和存储不正确的数据,就会出现数据的不一致问题。

(1)丢失更新问题

(2)脏读问题

(3)不可重复读 问题

(4)幻读问题

写命令

1.创建一个名称为mydb的数据库的命令是什么?

create database mydb;

2.查看MySQL服务器中已经存在的数据库命令是什么?

show databases;

3.查看创建mydb数据库的语句的语句是什么?

show create database mydb;

4.选择mydb数据库

use mydb;

6.查看当前数据库中的数据表

show tables;

7.查看goods数据表结构

describe goods;

8.查看goods数据表详细结构信息

show full columns from goods;

9.向数据表goods中添加一条数据

insert  into goods values (1, 'notebook', 4998, 'High cost performance');

10.修改goods表中name和description字段的字符集为utf8

alter table goods

modify name varchar(32) character set utf8,

modify description varchar(255) character set utf8;

11.向数据表goods中添加一条含有中文的商品数据

insert  into goods values(2, '笔记本', 9998, '续航时间超过10个小时');

13.查询表中商品编号和商品名

select id,name from goods;

14.查询商品编号等于1数据

select * from goods where id=1;

15.将goods表中商品编号为2的商品价格由9998元修改为5899元

update goods set price = 5899 where id = 2;

16.删除goods表中编号等于3的商品数据

delete from goods where id = 3;

17.假定goods表中有足够多的记录,请查询该表中商品的最高价和最低价

select max(price),min(price) from goods;

18.查询goods表中价格最贵的商品

select id,name,price from goods

        order by price desc limit 1;

19.在goods表上创一个视图view_goods,要求以后通过该视图能够查询商品的编号、名称、原价和打八折后的价格等信息

create view view_goods AS

                select id,name.price,price*0.8 from goods;

20.通过查询view_goods视图返回商品的前三条信息

select * from view_goods limit 3;

21.修改view_goods视图,通过该视图仅可查询商品编号

alter view view_goods as select id from sh_goods;

22.通过view_goods视图修改商品编号为17的商品名称为家电

update view_category set name = '家电' where id = 17;

23.通过view_goods视图删除商品编号为17的数据

delete from view_category where id = 17;

例一

假设有一个staffinfo数据库,并在其中定义department表和worker表,完成两表之间的完整性约束。

(2)创建worker表

create table worker(

id int(4) not null unique primary key auto_increment,

num int(10) not null unique,

d_id int(4),

name varchar(20) not null,

set varchar(4) not null,

birthday date,

address varchar(250),

foreing key(d_id) references department(d_id)

);

2、请按部门查询工人的部门号、员工号、姓名等信息。

select d_id,num,name from worker group by d_id;

3.请查询员工号为17的员工的姓名、性别和部门名。

select name,sex,d_name from worker

natural join department

where num=17

 4、创建视图查询员工的姓名、性别和部门名,查询结果的字段名用中文。

create view view_worker(姓名,性别,部门名)

as

select name,sex,d_name  from worker

natural join department

例二

假设在公司的部门员工管理数据库company_DB中有bumen表和yuangong表。Bumen表和yuangong表的定义如下所示。

 已经用图形化方式或者命令方式插入如下数据:

bumen表的数据:

1001,'人事部','人事管理','北京'

1002,'科研部','研发产品','北京'

1003,'生产部','产品生产','天津'

1004,'销售部','产品销售','上海'

yuangong表的数据:

8001,'韩鹏','男',25,1002,4000,'北京市海淀区'

8002,'张峰','男',26,1001,2500,'北京市昌平区'

8003,'欧阳','男',20,1003,1500,'湖南省永州市'

8004,'王武','男',30,1001,3500,'北京市顺义区'

8005,'欧阳宝贝','女',21,1002,3000,'北京市昌平区'

8006,'呼延','男',28,1003,1800,'天津市南开区'

(2)查询yuangong表的第四条到第五条记录。

select id,name,sex,age,d_id,salary,address from yuangong limit 3,2;

(5)count()

select d_id,count(id) from yuangong group by d_id;

(6)max()工资

select d_id,max(salary) from yuangong group by d_id;

(7)sum()工资

select d_id,sum(salary) from yuangong group by d_id;

(8)用左连接的方式查询bumen表和yuangong表。使用 left joinon来实现左连接

select bumen.d_id,d_name,function,bumen.address,id,name,age,sex, salary,yuangong.address

from bumen left join yuangong on yuangong.d_id=bumen.d_id;

(9)查询yuangong表,按照工资从高到低的顺序排列。

select * from yuangong order by salary desc;

(10)从bumen表和yuangong表中查询出部门号,然后使用union合并查询结果。

select d_id from yuangong union select d_id from bumen;

(11)查询家是北京市员工的姓名、年龄、家庭住址。这里使用like关键字。

select name,age,address from yuangong where address like '北京%';

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值