数据库常见的基础问题
1. SQL语⾔包括哪些类型?
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index
数据操纵:Select ,insert,update,delete
数据控制:grant,revoke
基本的sql语句有哪些2. 内联接,外联接区别?
内连接是保证两个表中所有的⾏都要满⾜连接条件,⽽外连接则不然。
在外连接中,某些不满条件的列也会显⽰出来,也就是说,只限制其中⼀个表的⾏,⽽不限制另⼀个表的⾏。分左连接、右连接、全连接三种。
等连接(内连接)、⾮等连接、⾃连接、外连接(左、右、全) Or hash join/merge join/nest loop(cluster join)/index join
1)内连接:只连接匹配的⾏ select A.c1,B.c2 from A join B on A.c3 = B.c3;
2)左外连接:包含左边表的全部⾏(不管右边的表中是否存在与它们匹配的⾏)以及右边表中全部匹配的⾏ select A.c1,B.c2 from A left join B on A.c3 = B.c3;
3)右外连接:包含右边表的全部⾏(不管左边的表中是否存在与它们匹配的⾏)以及左边表中全部匹配的⾏ select A.c1,B.c2 from A right join B on A.c3 = B.c3;
4)全外连接:包含左、右两个表的全部⾏,不管在另⼀边的表中是否存在与它们匹配的⾏ select A.c1,B.c2 from A full join B on A.c3 =
B.c3;
5)(theta)连接:使⽤等值以外的条件来匹配左、右两个表中的⾏ select A.c1,B.c2 from A join B on A.c3 != B.c3;
6)交叉连接:⽣成笛卡尔积——它不使⽤任何匹配或者选取条件,⽽是直接将⼀个数据源中的每个⾏与另⼀个数据源的每个⾏⼀⼀匹配select A.c1,B.c2 from A,B;
3. 什么是存储过程?⽤什么来调⽤?
存储过程是⼀个预编译的SQL语句, 简单的说存储过程是为了完成某个中的特定功能⽽编写的语句集,
该语句集包括SQL语句(对数据的增删改查)、条件语句和循环语句等。优点是允许模块化的设计,就是说只需创建⼀次,以后在该程序中就可以调⽤多次。如果某次操作需要执⾏多次SQL,使⽤存储过程⽐单纯SQL语句执⾏要快。可以⽤⼀个命令对象来调⽤存储过程(CALL)。
4.触发器的作⽤?
触发器是⼀中特殊的存储过程,主要是通过事件来触发⽽被执⾏的。它可以强化约束,来维护数据的完整性和⼀致性,可以跟踪数据库内的操作从⽽不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另⼀个表的数据操作,⽽该操作⼜会导致该表触发器被触发。
5. 索引的作⽤?和它的优点缺点是什么?
索引就⼀种特殊的查询表,数据库的搜索引擎可以利⽤它加速对数据的检索。它很类似与现实⽣活中书的⽬录,不需要查询整本书内容就可以到想要的数据。索引可以是唯⼀的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录⼊的速度,同时也增加了数据库的尺⼨⼤⼩。
6. 什么是内存泄漏?
⼀般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,⼤⼩任意的,使⽤完后要显⽰释放内存。当应⽤程序⽤关键字new等创建对象时,就从堆中为它分配⼀块内存,使⽤完
后程序调⽤free或者delete释放该内存,否则就说该内存就不能被使⽤,我们就说该内存被泄漏了。
7. 如何维护数据库的完整性和⼀致性?
尽可能使⽤约束,如check,主键,外键,⾮空字段等来约束,这样做效率最⾼,也最⽅便。其次是使⽤触发器,这种⽅法可以保证,⽆论什么业务访问数据库都可以保证数据的完整新和⼀致性。最后考虑的是⾃写业务逻辑,但这样做⿇烦,复杂,效率低下。
8. 什么是事务?什么是锁?
事务就是被绑定在⼀起作为⼀个逻辑⼯作单元的SQL语句分组,如果任何⼀个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执⾏,要么不执⾏,就可以使⽤事务。要将⼀组语句作为事务考虑,就需要通过ACID测试,即原⼦性,⼀致性,隔离性和持久性。
锁:在所有的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实⽣活中锁⼀样,它可以使某些数据的拥有者,在某段时间内不能使⽤某些数据或数据结构。当然锁还分级别的。共享锁(只读不写)、排他锁(可读可写)
9. 事务的隔离级别有哪些?
事务隔离级别包括: 原⼦性,即不可分割性,事务要么全部被执⾏,要么就全部不被执⾏; ⼀致性或可串性,事务的执⾏使得数据库从⼀种正确状态转换成另⼀种正确状态; 隔离性,在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务; 持久性,事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
10. 什么叫视图?游标是什么?
视图是⼀种虚拟的表,具有和物理表相同的功能。可以对视图进⾏增,改,查,操作,试图通常是有⼀个表或者多个表的⾏或列的⼦集。对视图的修改不影响基本表。它使得我们获取数据更容易,相⽐多表查询。
游标:是对查询出来的结果集作为⼀个单元来有效的处理。游标可以定在该单元中的特定⾏,从结果集的当前⾏检索⼀⾏或多⾏。可以对结果集当前⾏做修改。⼀般不使⽤游标,但是需要逐条处理数据的时候,游标显得⼗分重要。游标⽤于定位结果集的⾏,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表⽰出错或到了最后。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论