删除一个数据库? 表A (1)drop table A 删除表结构及数据 (2)delete from A where … 删除数据,但不释放空间,删除的表可以恢复,但删除过程慢 (3)truncate table A 清空数据,释放空间,不可恢复,删除快 删除表中完全重复的数据?数据库重复数据处理 使用临时表 select distinct * into tempTable from A truncate table A select * into A from tempTable drop tempTable 数据量过大时,处理方法? (1)建立表索引,优化查询速度(2)使用Top优化查询(3)当表大于2G时使用表拆分法 1.合理的使用索引(例如在频繁作为条件的列,经常作为排序或分组的列) 2.只查询必要的列,避免 * 3.避免或简化排序 4.使用存储过程 5.使用dataReader读取数据 6.使用reapter控件显示 SQL查询优化? (1)select只返回需要的字段 (2)只在需要时使用order by (3)尽量避免使用in操作(4)尽量避免隐式的数据类型转换 避免隐式类型转换造成的全表扫描,在索引上使用函数也会造成全表扫描(因为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、 “表达式索引”解决这个问题),使用索引不一定能提高查询速度。 (5)避免在索引列上使用计算 (6)添加索引 数据库建立索引的优缺点? 优点:可以加快查询速度;缺点:数据插入过程会建索引,所以会降低数据的插入更新速度,而索引也会占数据库空间。 事务?脏数据?transaction 事务是数据库操作的一个并发控制单元,它控制一系列操作要么全部执行成功,要么全部不执行。有三个常用方法Begin(标记事务开始),Commit(提交事务),Rollback(回滚到begin前的状态)。常用于金融交易业务中,保证交易的安全性。 脏数据:事务T1修改→ 事务T2读数据→ 事务T1撤销了→ T2读到的就是"脏数据" 触发器? 触发器:通过数据的增删改事件进行触发而执行的一组sql语句。常见的有after(for)、instead of,用于insert、update、delete事件: after(for) 表示执行代码后,执行触发器 instead of 表示执行代码前,用已经写好的触发器代替你的操作 例子://表bank只要执行insert操作就会执行delete操作,实际上是禁止用户插入数据的一个触发器 create trigger tr_insert on bank for insert as delete * from bank where cid=(select cid from inserted) 数据库设计三范式? 第一:无重复列 第二:表必须有主键 第三:表引用其他的表,必须通过主键关联 选出表中第31到40条记录? select top 10 * from A where id not in (select top 30 id from A) 数据库锁? 锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。 什么是索引,有什么优点? 索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。 SQL Server 中char和varchar区别? char 数据不足长度时后边补充空格;比如,你保存数据 xxx 到长度为10 的char型字段,结果取出的数据时长度10,后边有7个空格;varchar 数据是什么就存储什么; char,nchar 有固的定长,查询速度快,但占用空间大,varchar,nvarchar,text没有固定定长,占用空间小,查询速度慢; Oracle/Sql Server/DB2 类型转换函数? DB2: char(*) *可以是日期时间型、字符串、整数、十进制或双精度浮点数 varchar(*,50) 返回字符串、日期型、图形串的可变长度的字符串表示。 double(*) float(*) int(*) dec(*) *必须是个数字 floor(*) 大于等于*的整数 Oracle: TO_CHAR() 将nchar,nvarchar2,clob,nclob类型转换为char类型,或将数值/时间按照指定格式转换为varchar2类型 TO_DATE() 将char,nchar,varchar2,nvarchar2转换为日期类型, TO_NUMBER(c[,fmt[,nls]]) 将char,nchar,varchar2,nvarchar2型字串按照fmt中指定格式转换为数值类型并返回。 SQL Server: Cast() Convert() 2000万条数据分页 分页控件 存储过程分页 一次只传回一页的值