1.存储过程和函数的区别
答:存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
——————————————————————
2.事务是什么?
答:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:
1) 原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
2)一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构 (如 B 树索引或双向链表)都必须是正确的。
3)隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
4)持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
——————————————————————
3.游标的作用?如何知道游标已经到了最后?
答:游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。
——————————————————————
4.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别
答:事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。
语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。
——————————————————————
5. 数据库设计原则、范式
答:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余
总的来说:消除了数据冗余、更新异常、插入异常和删除异常
——————————————————————
6. 数据库常用的编码方式有哪几种
答:UTF-8、GB2312、GBK、ISO8859
——————————————————————
7. 如果有10万条学生成绩信息,怎么获取成绩最高的那一条数据,怎么获取成绩第三的那一条数据,列举你认为性能最好的方式
答:语法:limit begin,count 第一条的 begin 是0 count 是取多少条
①这个是获得第一的那个数据
select * from 成绩单 order by 成绩 desc limit 0,1
第三的
select * from 成绩单 order by 成绩 desc limit 2,1
②如果这个查询频繁使用,还是给成绩加上一个字段,代表排名,然后做成索引好了
select * from 成绩单 where 排名=3 这样就行了。
——————————————————————
8.StrudentScoreInfo表
id Subject score
1 语文 73
1 数学 86
1 英语 90
2 语文 86
2 数学 51
2 英语 60
3 语文 76
3 数学 59
3 英语 83
查询出总分大于200的id
id score
1 249
请在下面写出sql语句:
select id,sum(score) as allscore
from StrudentScoreInfo s
group by id
having sum(score)>200
-------------------------
1. SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)以及数据控制语言(DCL)
2. DML(Data Manipulation Language)是数据操作语言 :insert、update、delete
DDL(Data Definition Language)是数据库定义语言:create database、create table/view、alter table/view、 truncate table
DCL(Data Control LanguageData Manipulation Language)是数据库控制语言,是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句
DQL(Data Query Language)是数据查询语言:select
以下是我精心整理的文章: