惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News and Events Feed by Topic
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
Security Affairs
SecWiki News
SecWiki News
T
Tenable Blog
C
CERT Recently Published Vulnerability Notes
Forbes - Security
Forbes - Security
Google Online Security Blog
Google Online Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
PCI Perspectives
PCI Perspectives
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
Cyberwarzone
Cyberwarzone
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
V
Vulnerabilities – Threatpost
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
V
Visual Studio Blog
T
Threatpost
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
I
InfoQ
G
Google Developers Blog
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
TaoSecurity Blog
TaoSecurity Blog
O
OpenAI News
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tor Project blog
Schneier on Security
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
Security Latest
Security Latest
Attack and Defense Labs
Attack and Defense Labs
aimingoo的专栏
aimingoo的专栏
H
Heimdal Security Blog

博客园 - 震

关于反射中方法指针中我遇到的问题 使用ORACLE和MYSQL的简单心得 出来混总有一天要还的 Java中的访问修饰符 Java中的static、final、this、super xslt学习简单笔记 XML schema学习笔记 DOM中对象的方法(转贴) 学习JavaScript的开源好东东 关于CSS中的一些问题 - 震 - 博客园 web标准的悄然袭来 替换字符性能测试 在JAVA中调用外部可执行程序 - 震 - 博客园 一小练习 - 震 - 博客园 Java中的String类和StringBuffer类 将Java对象转为String的几种方法剖析(转贴) java 中的随机数用法 两种特殊的Java容器类List和Set分析[转贴] java.util.list初体验
一些关于数据库的问题
· 2006-08-08 · via 博客园 - 震

Q:SQL语句含有哪些类别,每一个类别的作用,以及包含哪些语句?
A:sql语句分为三个类别:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)。
   1)数据定义语言包括创建和删除数据库,创建,修改,重命名,删除表,创建和删除索引
   2)数据操作语言包括数据的查询,插入,更改和删除
   3)数据控制语言包括用户的访问权限的管理

Q:简述ORACLE体系架构
A:ORACLE数据库分二个部分:ORACLE实例和ORACLE数据库文件。ORACLE实例(ORACLE INSTANCE)也是ORACLE数据库引擎,包括系统全局区和后台处理程序。ORACLE数据库文件分为逻辑结构和物理结构。逻辑结构包括结构表空间、段、区、块,物理结构包括数据文件,日志文件和口令文件等。

Q:简述范式理论
A:在一个规范化的数据库中,表是按照规范化规则来构造,这原则就称为范式。如今有的数据库已经尊从第五范式,而我们只需要理解前三个范式。
   1)第一范式:一个行的每个列必须是原子性的,任何给定行的列只能包含一个值;表的每一行必须包行相同       数量的列。一个表的所有行必须是不同的。
   2)第二范式:表必须符合第一范式,表中的所有非主键列必须依赖于整个主键列
   3)第三范式:表必须符合第二范式,表中的所有非主键列必须依赖于主键,并且必须相互独立
     由上面的可以看出,第一范式是最基础的,他是提供建立其他范式的基础,并且代表了表的核心特性。

Q:数据库建模的一般实现步骤
A:1).从业务规则中找出对象列出实体
   2).实体规范化
   3).列出表之间的关系
   4).改变关系(多对多-连接表)
   5).画出概念模型
   6).将概念模型转换为物理模型
   7).导入SQL脚本

Q:数据完整型的方法,每一部方法如何实现?
A:根据数据完整性实施的方法,我们可以将其分为四类:实体完整性、域完整性、引用完整性以及自定义的完整性。
   1)实体完整性是强制表的标识符列和主键的完整性
   2)域完整性用来限制数据类型,格式或可能值的范围
   3)引用完整性是在输入或删除记录时,引用完整性保持表与表已定义的关系
   4)自定义的完整性使我们定义不属于其他任何完整性分类的特定业务规则(存储过程,触发器)

Q:索引分哪些类型,如何使用索引优化数据库性能?
A:索引分类可以分为直接创建索引和间接创建索引,普通索引和唯一性索引,单个索引和复合索引,聚簇索引和非聚簇索引。
优化:
    1)当字段数据更新频率较低,查询使用频率较高并且存在大量重复值是建议使用聚簇索引
    2)经常同时存取多列,且每列都含有重复值可考虑建立组合索引
    3)复合索引的前导列一定要控制好,否则无法起到索引的效果。如果查询时前导列不在查询条件中则该复合索引不会被使用。前导列一定是使用最频繁的列
    4)多表操作在被实际执行前,查询优化器会根据连接条件,列出几组可能的连接方案并从中找出系统开销最小的最佳方案。连接条件要充份考虑带有索引的表、行数多的表;内外表的选择可由公式:外层表中的匹配行数*内层表中每一次查找的次数确定,乘积最小为最佳方案
    5)where子句中对列的任何操作结果都是在sql运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被sql优化器优化,使用索引,避免表搜索(例:select * from record where substring(card_no,1,4)=’5378’
&& select * from record where card_no like ’5378%’)任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边
    6)where条件中的’in’在逻辑上相当于’or’,所以语法分析器会将in ('0','1')转化为column='0' or column='1'来执行。我们期望它会根据每个or子句分别查找,再将结果相加,这样可以利用column上的索引;但实际上它却采用了"or策略 ",即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉重复行,最后从这个临时表中计算结果。因此,实际过程没有利用 column上索引,并且完成时间还要受tempdb数据库性能的影响。in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引
    7)要善于使用存储过程,它使sql变得更加灵活和高效

Q:TRUNACTE与DELETE的区别
A:TRUNCATE TABLE和DELETE都可以删除表的所有行,他们的区别主要在于TRUNCATE TABLE操作是不能回滚的,数据不能被恢复,而且不会触发触发器,但TRUNCATE TABLE效率要比DELETE高。

Q:说说SQL分页
A:这个话题范围很广,不同的项目有不同的情况。一般来说如果select * ,再进行分页的话,在大数据中速度是很慢的,其实我们可以只取出我们每页需要显示的记录,用聚集索引来快速确定我们需要取出的记录数的位置,速度会提高

Q:说说Group By 和HAVING
A:GROUP BY 是对数据分组。如果不想通过数据表中的实际值,而是通过聚合函数的结果来过滤查询结果集就要使用HAVING而不是WHERE,where的作用时间是在计算之前就完成的,而having就是在计算后才起作用的。

Q:相关与非相关子查询的区别
A:非相关子查询是独立于外部查询的子查询。子查询总共执行一次,执行完毕后将值传递给外部查询;相关子查询的执行依赖于外部查询的数据。外部查询返回一行,子查询就要执行一次。

Q:子查询运算符有哪些
A: 1)EXISTS运算符:EXISTS允许我们查找满足条件的行,EXISTS后面总跟着一个子查询,只要子查询返回了行,EXISTS的值就为真。
   2)ALL运算符:ALL运算符与比较运算符一起使用(=、>或则>=),如果子查询所有的值都为真那么返回值为真如果有一行为假就返回假。
   3)ANY运算符:ANY运算符与ALL运算符工作方式相同,不同的是在所有条件中只要有一行满足比较运算符那么比较的值就为真;

Q:UNION组合查询应注意的事项
A:1)UNION的结果集列名与UNIO运算符中的第一个SELECT语句的结果集中的列名相同。
  2)当使用UNION,为使用列数据匹配,要包含数据列或者数据类型转化。

Q:UNION与UNION ALL的区别
A:UNION:重复计数数据集联合后将包含每个数据集的每个成员,但是每个成员只计数一次。
  UNION ALL:保留重复行运算符返回数据集所有成员。