填空题
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 '北京%';