数据库资料
来源:互联网 发布:网络邮箱广告投放 编辑:程序博客网 时间:2024/06/05 23:57
1、第一范式:(1NF)每一列不能再分割,如电话可以分为手机和座机,显然不是第一范式。
第二范式:属性完全依赖于主键(唯一主键和联合主键),消除部分依赖。
如学生,性别,学号,课程,课程成绩。如F = { {S#, C#}→ G,C#→TN,TN → D}
对于成绩而言,是学生的课程的成绩,表述不清,因为一个学生有多个课程,因此是联合主键。
但是对于性别,学号又只是部分依赖于学生。因此要消除。
拆分成学生、性别、学号。(学生为主键,完全依赖)。以及学生、课程、成绩(学生、课程为联合主键,完全依赖)
第三范式:属性不依赖于其它非主属性(消除传递依赖)。
如学号,姓名,年龄,性别,所在院校,院校地址,院校电话。任何一项,都是完全依赖于主键的,(对于主键来说都是有意义的)因此是第二范式。但是,他们又是从院校传递过来的。表述为,F={S→D,D→M}
对于院校电话而言,其由学生的院校电话显然有意义,但是本身是电话,但是中间加上了院校,所以是一个传递关系。因此要消除。
(学号,姓名,年龄,性别,所在院校)--(所在院校,地址,电话)
区分第二范式和第三范式的要点是:第三范式完全依赖于主键,不存在联合主键(学生的课程的成绩,课程有多个)。且不存在传递关系(只有学生的性别,而不是学生的院校的电话)。
第二范式就是,完全依赖于联合主键,或者完全依赖于主键,不存在部分关系。
BCNF更加严格
2、存储过程和函数的区别是什么?
存储过程是用户定义的,sql语句集合,用户可以调用。而函数是数据库已定义的方法,接收参数并返回特定的值。
3、数据库事务
是系列操作,特性为:
原子性,要么不操作,要么全部操作。
一致性,若原来有约束,如a+b=10,则a变了b也要变。
独立性,不存在两个事务交错操作。
持久性,操作的结果是持久保持的。
4、 游标的作用是什么, 如何知道游标已经到了 最后?
游标用于定位结果集的行。 通过判断全局变量@@FETCH_ STATUS可不等于0表示出错或到了 最后。
5、触发器分为事前触发和事后触发, 这两种触发有何区别? 语句级触发和行级触发有何区别?
事前触发器运行于触发事件发生之前, 而事后触发器运行于触发事件发生之后。
语句级触发器可以在语句执行前或后执行, 而行级触发在触发器所影响的每一行触发一次。
6、什么叫做SQL注入式攻击, 如何防范?
攻击者把SQL语句插入到表单的请求字符串中,进行攻击。
防范方法:
检查数据的输入合法性
将单独出现的单引号改成两个单引号
设置权限
对返回数据进行检查,如只要一个记录,但是返回多行。
7、解释聚集索引和非聚集索引之间的区别?
聚集索引的顺序就是数据的物理存储顺序, 而对非聚集索引的解释是索引顺序与数据物理排列顺序无关。 正是因为如此, 所以一个表最多只能有一个聚集索引。
在SQL Server中, 索引是通过二叉树的数据结构来描述的, 我们可以这么理解聚集索引: 索引的叶节点就是数据节点。 而非聚集索引的叶节点仍然是索引节点, 只不过有一个指针指向对应的数据块。
另外,有索引不一定比没有索引快,如一些数据比较少时。因为索引需要维护一些东西。
8、SQL语言
1、找出表ppp里面num最小的数, 不能使用 min函数。
select *from ppp where num<= all(select num from ppp)
2、找出表ppp里面num最小的数, 可以使用 min函数。
select *from ppp where num in(select min(num) from ppp)
3、选择表ppp2中 num重复的记录。
select * from ppp where num in(select num from ppp group by num having (count(num))>1)
4、写出复制表、 拷贝表和四表联查的SQL语句。
复制表(只拷贝结构)
select * into B from A where 1=0
拷贝表(拷贝数据)
select * into B from A
四表联查
select * from A,B,C,D where ...
5、在SQL Server中如何用 SQL语句建立一张临时表?
create table #tmp(name vchar(5) not null,,,)
6、有数据表A, 有一个字段LASTUPDATETIME, 是最后更新的时间, 如果要查最新更新过的记录, 如何写SQL语句?
select * from A where LASTUPDATETIME>= all(select LASTUPDATETIME from A)
7、找出第5到第7行的数据
select userid from(select top 3 userid from (select top 7 userid from A order by userid )B order by userid desc)C order by userid
这里要注意from一个数据集的时候要用一个名字。
先升序取7,后降序取三个,再升序排列一下就可以。
8、要查数据表中第30到40条记录, 有字段ID, 但是ID并不连续。 如何写SQL语句?
也就是说ID是说可以根据ID来查
select * from A where ID in(select ID from (select top 10 ID from (select top 40 ID from A )B order by ID desc )C order by ID )
9、查错
update A set name=(select name from ...)这样返回的是一个结果集,是不能设置的。必须要用游标
10、orderby 出现在所有关键字之后
select a,b from C order by b
select a,b from C order by 2 asc
意思是一样的
11、 select to_char(sydate,'yy-mm-dd hh24:mi:ss')from dual;
12、 一个表(表a), 里面有10条数据, 这10条数据都是相同的, 现要删除其中 9条
select distinct * into b from a
go
drop table a
go
exec sp_rename 'b', 'a'
13、name为 a的数据共有n条, name为 b的数据共有m条, 请问怎么写SQL语句, 使查询a时能够统计a的数量?
select name,count(name) from A group by name
14、将列中的数按照行来显示
select revtime
max(case chanal 1 then val end) as channal1data,
max(case chanal 2 then val end) as channal2data,
max(case chanal 3 then val end) as channal3data
from A group by revtime 因为这里面用到了max进行聚合
其中 va为通道对应的值。
15、SQL Server只能实现在本地备份, 怎么才能方便地实施异地备份?
CREATE CLUSTERED INDEX 索引名ON dbo.TestTable (TestCol1);非聚集索引为nonclustered
聚集索引其索引的逻辑顺序和磁盘上数据的物理顺序相同。而非聚集索则不同。
作用:可以加快查询的速度。缺点,创建和维护索引耗费时间,且每一个索引还耗费空间。
一个表只能有一个聚集索引,但是可以有多个非聚集索引。
聚集索引的叶节点就是数据节点,而非聚集索引的叶节点仍然是索引节点,只是指向另一个数据块。
聚集索引对于范围性查找以及重复个数有限的数据来讲是比较快的,但是插入速度比较慢。
当数据量很大时,两者之间的区别就不是很明显了。
索引的另外一种分类:
普通索引和唯一索引
普通索引允许索引的列插入重复的值和空值。
唯一索引的值必须唯一但也允许为空值。如果为组合索引则组合必须唯一,组合索引只有在条件查询中使用了这些字段的左边字段时,索引才会失效。
索引失效:
多列索引没有使用多列索引的第一个字段会失效。
没有查询条件,或者查询条件没有建立索引。
对索引列进行运算等。
主键:
可以为一列或多列,非空,默认会建立唯一索引。
多字段联合主键:
对于不同部门有两个相同人名,将两个字段联合起来,这样就不重复了。
外键:
有外键的表示从表,只有当主表中有对应记录时,从表才能插入。
只有当从表删除时,主表记录才能删除。
- 数据库资料
- 数据库资料
- 数据库资料
- Oracle数据库资料收藏
- Oracle数据库资料收藏
- 数据库资料生成excel
- 数据库常用资料
- SQL数据库资料整理
- Oracle数据库资料收藏
- NoSQL数据库资料
- oracle数据库备份资料
- 数据库学习资料大全
- 数据库学习资料大全
- 数据库学习资料大全
- 数据库学习资料大全
- 数据库方面资料
- Redis 数据库资料汇总
- 数据库范式资料
- C#操作word文档
- 惠普—新的起点
- 关于分布式系统的数据一致性问题(二)
- 【J2SE】配置JDK环境变量
- 分支结构练习-3.switch结构判断成绩
- 数据库资料
- iOS学习总结之UI框架UIWindow和UIView(附带计时器学习)
- Visual Studio 2010 error C2065: '_In_opt_z_' : undeclared identifier 编译错误
- 第三周工作总结及计划表
- 2 JavaWeb之Mac下配置Tomcat
- 关于分布式系统的数据一致性问题(三)
- poj 2503 Babelfish(字典树·翻译)
- 2015—年度总结
- C++ 堆排序算法 分治法(递归)