学了个把月的数据库,也算是个总结:
首先要明白数据库的作用,是用来归类整理数据的,当然数据库的数据操作
保证的是数据完整性
其中包括
一实体完整性
这里主要是通过主键约束 primary key 以及唯一建约束 unique
二引用完整性
主要是引用表被主表约束 也就是 references 被xonstraint约束
三域的完整性 这里主要针对表的行 以及行中的字段的约束
一般是 check default not null null 等等 用alter table tablename
四自定义完整性
事务 transaction
视图 view
索引 index
触发器 trigger
储存过程 procedure
1事务
显示和隐式事务
显示 begin transaction commid transaction rollback transaction
隐式 set implit_transaction on
set implit_transaction off
原子性
一致性
隔离性
持久性
2图
view
视图就是把表查找简单化
create view viewname
as
go
要注意3点
1如果有Order by 必须加 top num |top num perent
2不得用临时表
3不得用Into关键字
当然3和2其实是相呼应的
3索引
create unique (判断是否是唯一索引)noclusted index indexname on tablename(clumn1,clumn2) with fillfactor =70
索引分类 唯一索引 主键索引 聚集索引 非聚集索引 联合索引 全文索引
4触发器
这个是相对于两张表 三张表而言 主要是为了完善引用完整性
create trigger trigg_name
on tablename insead of (insert delete update)
5存储过程
create procedure proc_name
as
go
针对ado.net主要注意的是 2个参数要加上去
1commandtype.scroceprocedure
2parameters.addrange()
譬如实例一个方法
public static sqldatareader reader(string sql,parm sqlparameter []parms){
sqlconnection conn=new sqlconnection(“这里是连接字符串”);
sqlcommand cmd=new sqlcommand(sql,conn);
cmd.commandtype=commandtype.scoreprocedure;
cmd.parameters.addrange(parms);
conn.open;
return cmd.executeread(comhaviter.closeconnstring());
}
小的细节
数据库定义变量都是declare a
数据库在建database时 要用 if exists(select name from master.dbo.sysdatabases where name=”xxx”)
table建立也是如此 不过要注意的后面要改成 sysobjects
case
when then
else
end
cast(obj as type);
convert(type,value)
子查询是查询一张表 只是借用另外一张表的数据~~~~
一张表10个数据 另外一张表8个 共同数据4个
outjoin 80+4
innerjoin 4
left join 10
right join8