没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
-DBA
-DBA
-DBA
-DBA 数据库管理员 JAVA
JAVA
JAVA
JAVA 程序员架构师必看
数据库基础 (
(
(
( 面试常见题 )
)
)
)
一、 数据库 基础
1. 数据抽象 :物理抽象、概念抽象、视图级抽象 , 内模式、模式、外模式
2. SQL 语言 包括数据定义、数据操纵 (Data Manipulation), 数据控制 (Data Control)
数据定义: Create Table,Alter Table,Drop Table, Craete/Drop Index 等
数据操纵: Select ,insert,update,delete,
数据控制: grant,revoke
3. SQL 常用命令:
CREATE TABLE Student(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL);// 建表
CREATE VIEW view_name AS
Select * FROM Table_name;// 建视图
Create UNIQUE INDEX index_name ON TableName(col_name);// 建 索引
INSERT INTO tablename {column1,column2, … } values(exp1,exp2, … );// 插入
INSERT INTO Viewname {column1,column2, … } values(exp1,exp2, … );// 插入视图实际影响表
UPDATE tablename SET name= ’ zang 3 ’ condition;// 更新数据
DELETE FROM Tablename WHERE condition;// 删除
GRANT (Select,delete, … ) ON ( 对象 ) TO USER_NAME [WITH GRANT OPTION];// 授权
REVOKE ( 权限表 ) ON( 对象 ) FROM USER_NAME [WITH REVOKE OPTION] // 撤权
列出工作人员及其领导的名字:
Select E.NAME, S.NAME FROM EMPLOYEE E S
WHERE E.SUPERName=S.Name
4. 视图 :
5. 完整性约束 :实体完整性、参照完整性、用户定义完整性
6. 第三范式 :
1NF: 每个属性是不可分的 。 2NF: 若关系 R 是1 NF, 且每个非主属性都完全函数依赖于 R 的键 。 例 SLC(SI
D#, CourceID#, SNAME,Grade), 则不是 2NF; 3NF: 若 R 是 2NF , 且它的任何非键属性都不传递依赖于任
何候选键。
7. ER( 实体 / 联系 ) 模型
8. 索引 作用
9. 事务 :是一系列的 数据库 操作,是数据库应用的基本逻辑单位。事务性质:原子性、
λ 原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。
λ 一致性或可串性。事务的执行使得 数据库 从一种正确状态转换成另一种正确状态
λ 隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,
λ 持久性。事务正确提交后,其结果将永久保存在 数据库 中,即使在事务提交后有了其他故障,事务的处
理结果也会得到保存。
10. 锁: 共享锁、互斥锁
两段锁协议:阶段1:加锁阶段 阶段2:解锁阶段
11. 死锁及处理 :事务循环等待数据锁,则会死锁。
死锁处理:预防死锁协议,死锁恢复机制
12. 存储过程 :存储过程就是编译好了的一些 sql 语句。
1. 存储过程因为 SQL 语句已经预编绎过了,因此运行的速度比较快。
2. 可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取 数据库 , 从
而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
3. 可以降低网络的通信量。存储过程主要是在 服务器 上运行,减少对客户机的压力。
4 :存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因
5 :存储过程可以包含程序流、逻辑以及对 数据库 的查询。同时可以实体封装和隐藏了数据逻辑。
13. 触发器 : 当满足触发器条件,则系统自动执行触发器的触发体。
触发时间:有 before,after. 触发事件:有 insert,update,delete 三种。触发类型:有行触发、语句触发
14. 内联接 , 外联接区别?
内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。
在外连接中,某些不满条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的
行。分左连接、右连接、全连接三种
SQL
SQL
SQL
SQL 试题 2
2
2
2
一、
教师号 星期号 是否有课
1 2 有
1 3 有
2 1 有
3 2 有 `
1 2 有
写一条 sql 语句让你变为这样的表
教师号 星期一 星期二 星期三
1 2 1
2 1
3 1
各星期下的数字表示:对应的教师在星期几已经排的课数
二、
书表 (books)
book_id,book_name,creatdate,Lastmodifydate,decription
001, 三个人的世界 ,2005-02-02,2005-07-07,NULL
作者表 (authors)
A_id,A_name
01, 王纷
02, 李尚
03, 泰和
部门表 (depts)
d_id,d_name
001, 编辑一部
002, 编辑二部
003, 编辑三部
书和作者关联表 (bookmap)
book_id,A_id
001,01
001,02
001,03
部门和作者关联表 (depmap)
d_id,a_id
001,01
002,02
003,03
找出每个部门的所写的总书两 , 比如 , 一本书 有 3 个人写 , 如果三个人在不同的部门 , 则每个部门的总数量就 是
1. 最后结果如下 :
部门 , 书量
编辑一部 ,1
编辑二部 ,1
编辑三部 ,1
三、
两个表情况
表名: wu_plan
ID plan model corp_code plannum prixis
1 00001 exx22 nokia 2000 0
2 00002 lc001 sony 3000 0
表名: wu_bom
ID plan pact amount
1 00001 aa1 300
2 00001 aa2 200
3 00002 bb1 500
4 00002 bb2 800
5 00002 bb3 400
查询这两个表中 plan 唯一,每一个 plan 中, amount 最少的, plannum 大于 prixis 的记录
结果是 :
ID plan model corp_code plannum prixis pact amount
1 00001 exx22 nokia 2000 0 a2 200
2 00002 lc001 sony 3000 0 bb3 400
四、
表 1 结构如下:
部门 条码 品名 销售额 销售数量 销售日期
表 2 结构如下
课别 部门
要求:先按部门排序,再按销售额、销售数量排序检索出某个课别每个部门一个时期内的商品销售额的前
三名 , 如查询 01 课别 2007 年 4 月 15 日到 2007 年 4 月 22 日每个部门一个周内的商品销售额合计的前三
名
SQL 面试题目汇总
1 .触发器的作用?
答 : 触发器是一中特殊的存储过程 , 主要是通过事件来触发而被执行的 。 它可以强化约束 , 来维护数据的
完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表
上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
2 。什么是存储过程?用什么来调用?
答 : 存储过程是一个预编译的 SQL 语句 , 优点是允许模块化的设计 , 就是说只需创建一次 , 以后在该程序
中就可以调用多次。如果某次操作需要执行多次 SQL ,使用存储过程比单纯 SQL 语句执行要快。可以用
一个命令对象来调用存储过程。
3 。索引的作用?和它的优点缺点是什么?
答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中
书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列
或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
3 。什么是内存泄漏?
答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用
完后要显示释放内存 。 当应用程序用关键字 new 等创建对象时 , 就从堆中为它分配一块内存 , 使用完后程
序调用 free 或者 delete 释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。
4 。维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?
答 : 我是这样做的 , 尽可能使用约束 , 如 check, 主键 , 外键 , 非空字段等来约束 , 这样做效率最高 , 也最
方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和
一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
5 。什么是事务?什么是锁?
答:事务就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整
个操作就被失败 , 以后操作就会回滚到操作前状态 , 或者是上有个节点 。 为了确保要么执行 , 要么不执行
,
就可以使用事务。要将有组语句作为事务考虑,就需要通过 ACID 测试,即原子性,一致性,隔离性和持
久性。
锁 : 在所以的 DBMS 中 , 锁是实现事务的关键 , 锁可以保证事务的完整性和并发性 。 与现实生活中锁一
样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
6 。什么叫视图?游标是什么?
答 : 视图是一种虚拟的表 , 具有和物理表相同的功能 。 可以对视图进行增 , 改 , 查 , 操作 , 试图通常是有
一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表
查询。
游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集
的当前行检索一行或多行 。 可以对结果集当前行做修改 。 一般不使用游标 , 但是需要逐条处理数据的时候
,
游标显得十分重要。
7 。为管理业务培训信息,建立 3 个表:
S(S#,SN,SD,SA)S#,SN,SD,SA 分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN 分别代表课程编号,课程名称
SC(S#,C#,G) S#,C#,G 分别代表学号,所选的课程编号,学习成绩
( 1 )使用标准 SQL 嵌套语句查询选修课程名称为 ’ 税收基础 ’ 的学员学号和姓名 ?
答案: select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn= ’ 税收基础 ’ )
(2) 使用标准 SQL 嵌套语句查询选修课程编号为 ’ C2 ’ 的学员姓名和所属单位 ?
答: select sn,sd from s,sc where s.s#=sc.s# and sc.c#= ’ c2 ’
(3) 使用标准 SQL 嵌套语句查询不选修课程编号为 ’ C5 ’ 的学员姓名和所属单位 ?
答: select sn,sd from s where s# not in(select s# from sc where c#= ’ c5 ’ )
(4) 查询选修了课程的学员人数
答: select 学员人数 =count(distinct s#) from sc
(5) 查询选修课程超过 5 门的学员学号和所属单位 ?
答: select sn,sd from s where s# in(select s# from sc group by s# having count(distinct c#)>5)
目前在职场中很难找到非常合格的数据库开发人员。有人说 : “ SQL 开发是一门语言,它很容易学,但是很
难掌握。 ”
华为 http://sqlserver.365dev.net/sql-1981.html
在面试过程中多次碰到两道 SQL 查询的题目 , 一是查询 A(ID,Name) 表中第 31 至 40 条记录 , ID 作为主键
可能是不是连续增长的列,完整的查询语句如下:
select top 10 * from A where ID >(select max(ID) from (select top 30 ID from A order by A ) T) order by A
另外一道题目的要求是查询表 A 中存在 ID 重复三次以上的记录 , 完整的查询语句如下:
select * from(select count(ID) as count from table group by ID)T where T.count>3
以上两道题目非常有代表意义,望各位把自己碰到的有代表的查询都贴上来。
create table testtable1
(
id int IDENTITY,
department varchar(12)
)
剩余76页未读,继续阅读
资源评论
江湖人称宝哥
- 粉丝: 11
- 资源: 56
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功