问:查询视图和查询基表的主要区别是什么?
基表也就是数据表,用于存储数据库中的数据,它由行(记录)和列(字段)组成。
视图:是虚拟表,它可以包含来自多个表的数据。
区别:1)视图是已经编译好的SQL语句,而基本表不是。
2)视图没有实际的物理记录,而基本表有。
3)基本表是内模式,而视图是外模式
4)视图的建立和修改只影响视图本身,不影响对应的基本表
5)基本表占用物理空间,而视图不占用物理空间。
问:使用视图对数据进行操作时需要注意的主要原则是什么?
1)MySQL必须能够明确地解析对视图所引用基表中的特定行所做的修改操作。不能在一个语句中对多个基本使用数据修改语句。因此,在update或insert语句中的字段必须属于视图定义中的同一个基表。
2)对基表中需要更新而又不允许空值的所有字段,它们的值在insert语句或default定义中指定。
3)在基表的字段中修改的数据必须符合对这些字段的约束。
问:什么是存储过程?
存储过程是一种数据库对象,它由一组预先编译好的SQL语句组成。
问:调用存储过程有哪几种方式?
1)调用无参数存储过程 ——call s1_proc();
2)调用带输入参数的存储过程——在调用时需要向存储过程传递in参数——call s1_proc('我是大帅哥');
3)调用带输入、输出参数的存储过程——此类型存储过程有in和out参数,调用时把out参数的结果传递给用户会话变量。使用select输出变量的值。——
call s1_proc('1906010835',@a);
select @a;$$
4)调用inout参数的的存储过程
set @a='1906010835';
call s2_proc(@a);
select @a;$$
问:使用触发器有哪些优点?
1)触发器是自动执行的,它可以通过数据库中的相关表实现级联更新,实习多个表之间数据的一致性和完整性。
2)触发器可以实现比check约束更为复杂的数据完整性约束。
3)触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。
问:触发器有哪些类型?
MySQL的触发事件有三种:
1)insert:将新记录插入表时激发触发程序
2)update:更改某一行记录时激活触发程序
3)delete:从表中删除某一行记录时激活触发程序
问:游标的作用是什么?
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
扩展:游标的概念包括两个部分,它们是 游标结果集 和 游标位置
问:什么是事务?事务有哪些特性?
事务是由一系列SQL语句组成的一个数据库操作序列,而这些操作是一个不可分割的逻辑工作单元。
事务具有原子性、一致性、隔离性、持久性。
问:简要说明事务的原子性、一致性、隔离性和持久性。
原子性:事务必须是原子工作单元;事务中的更新操作要么都执行,要么都不执行,称为事务的原子性。
一致性:事务的一致性保证了事务完成后,数据库能够处于一致性状态。
隔离性:同一个时刻执行多个事务,称为并发事务。这些事务在执行过程中互不干扰,即一个事务的执行不能被其他事务干扰。
持久性:持久性意味着事务一旦成功执行,在系统中产生的所有变化将是永久的。
问:结束事务的标志是什么?
事务的提交和事务的回滚。
问:事务中的提交和回滚是什么意思?
事务的提交是指事务里的所有操作都正常完成。
事务的回滚是指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。
问:什么是事务的并发控制?
并发控制是指两个事务同时对数据库中的数据进行操作时,不会因为事务的先后顺序而导致数据存在问题。
问:锁有哪些类型?共享锁与排他锁有什么区别?
共享锁和排他锁;
共享锁表示对数据进行读操作,因此多个事务可以同时为一个对象加共享锁,但不允许对数据进行任何“写”。
排他锁,也叫写锁。排他锁对数据进行写操作,如果一个事务对对象加了排他锁,其他事务就不能再给它加任何锁了。