1
存储过程和函数的区别
存储过程相当于一个脚本 是一系列sql语句的集合 针对某个特定的表
函数是数据库已经定义好的方法 接受参数 返回某种类型的值 不涉及特定表
2
database transaction 数据库事务是什么?
单个逻辑工作单元! 事务就是一种单个逻辑工作单元 这些操作要么全做 要么不做 四个特点
原子性 要么做要么不做
一致性 事务的运行不改变数据库中的一致性 比如完整性约束
独立性 两个以上的事务不会出现交错执行的状态
持久行 就系统的更新是永久的 不会无缘无故回滚
3
游标作用是什么? 怎么判断游标已经到了最后?
游标用于定位结果集的行 通过判断全局变量@@FETCH_STATUS可以判断是否到了最后 通常不是0表示出错或者到了最后
4
触发器分事前触发和事后触发 还有语句级触发和行级触发 有什么区别?
事前和事后根据字面就可以理解了 事前触发器运行于触发事件发生前 事后触发器运行于触发时间发生后
语句级触发可以在语句执行前后执行
行级触发在触发器锁影响的每一行触发一次
5
什么叫SQL注入式攻击,如何防范?
这个记得在.net课上老师讲ADO.net的部分特意说过 就是把用户输入的密码直接嵌套到sql语句 这样可能会使得sql语句怎么都返回真 也就是密码正确
规范的讲 就是攻击者把sql命令插入到web表单的输入域 或页面请求的查询字符串中 欺骗服务器执行恶意的sql命令
如何防范? 只要在利用表单输入构造sql语句前 把表单输入过滤一遍就行了
6
clustered and non-clustered indexes 聚集索引和非聚集索引的差别?
聚集索引的顺序就是数据的物理存储顺序 所以一个表最多有一个聚集索引
非聚集索引的索引顺序和物理存储顺序无关
7
SQL语句
1找出ppp表中num最小的数 不能用min函数
select * from ppp where num<=all(select num from ppp) 或者 select top 1 num from ppp order by num
2 同上 可以用min函数
select * from ppp where num=(select MIN(num) from ppp)
3 选择ppp表中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
5 简历临时表 用# create table #tmp()
6 有一个数据表 一个字段是LASTUPDATETIME 找出最新更新的记录
select * from A where LASTUPDATETIME = select (max(LASTUPDATETIME) from A)
7 每个部门每个职位工资的最大值
select dept_id ,job_cat max(salary ) from employees group by dept_id,job_cat;
存储过程和函数的区别
存储过程相当于一个脚本 是一系列sql语句的集合 针对某个特定的表
函数是数据库已经定义好的方法 接受参数 返回某种类型的值 不涉及特定表
2
database transaction 数据库事务是什么?
单个逻辑工作单元! 事务就是一种单个逻辑工作单元 这些操作要么全做 要么不做 四个特点
原子性 要么做要么不做
一致性 事务的运行不改变数据库中的一致性 比如完整性约束
独立性 两个以上的事务不会出现交错执行的状态
持久行 就系统的更新是永久的 不会无缘无故回滚
3
游标作用是什么? 怎么判断游标已经到了最后?
游标用于定位结果集的行 通过判断全局变量@@FETCH_STATUS可以判断是否到了最后 通常不是0表示出错或者到了最后
4
触发器分事前触发和事后触发 还有语句级触发和行级触发 有什么区别?
事前和事后根据字面就可以理解了 事前触发器运行于触发事件发生前 事后触发器运行于触发时间发生后
语句级触发可以在语句执行前后执行
行级触发在触发器锁影响的每一行触发一次
5
什么叫SQL注入式攻击,如何防范?
这个记得在.net课上老师讲ADO.net的部分特意说过 就是把用户输入的密码直接嵌套到sql语句 这样可能会使得sql语句怎么都返回真 也就是密码正确
规范的讲 就是攻击者把sql命令插入到web表单的输入域 或页面请求的查询字符串中 欺骗服务器执行恶意的sql命令
如何防范? 只要在利用表单输入构造sql语句前 把表单输入过滤一遍就行了
6
clustered and non-clustered indexes 聚集索引和非聚集索引的差别?
聚集索引的顺序就是数据的物理存储顺序 所以一个表最多有一个聚集索引
非聚集索引的索引顺序和物理存储顺序无关
7
SQL语句
1找出ppp表中num最小的数 不能用min函数
select * from ppp where num<=all(select num from ppp) 或者 select top 1 num from ppp order by num
2 同上 可以用min函数
select * from ppp where num=(select MIN(num) from ppp)
3 选择ppp表中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
5 简历临时表 用# create table #tmp()
6 有一个数据表 一个字段是LASTUPDATETIME 找出最新更新的记录
select * from A where LASTUPDATETIME = select (max(LASTUPDATETIME) from A)
7 每个部门每个职位工资的最大值
select dept_id ,job_cat max(salary ) from employees group by dept_id,job_cat;