第一章数据库的设计良好的数据库设计1、节省数据库的存储空间2、能够保证数据的完整性3、方便进行数据库应用系统的开发糟糕的数据库设计1、效率低下2、更新和检索数据时会出现许多问题设计数据库的步骤1、需求分析阶段分析客户的业务和数据处理需求⑴收集信息⑵标识对象(实体)⑶标识每个对象需要存储的详细信息⑷标识对象之间的关系2、概要设计阶段绘制数据库的E-R模型图(实体关系图)3、详细设计阶段将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大规范进行设计4、代码编写阶段映射基数1一对一2一对多3多对一4多对多实体关系图矩形表示实体集椭圆形表示属性菱形表示关系集直线用来连接设计数据库问题1信息重复2更新异常3插入异常(无法表示某些信息)4删除异常(丢失有用的信息)数据库设计的三大规范理论一第一范式的目标是确保每列的原子性二第二范式的目标是确保表中的每列都和主键相关三第三范式的目标是确保每列都和主键直接相关,而不是间接相关(不能传递依赖)规范化和性能的关系在必要的情况下允许适当的数据冗余第二章数据库的实现一建库uesmastergoifexists(select*fromsysdatabaseswherename='数据库名字')dropdatabase数据库名--判断这个数据库名字是否存在,如果存在删除createdatabase数据库名on[primary](name='',filename='',size='',建立数据库的主文件如果需要建立次要文件(ndf)用逗号隔开maxsize='',filegrowth='')logon(name='',filename='',size='',建立日志文件如果建立多个日志文件在后面用逗号隔开maxsize='',filegrowth='')go--批处理二建表ues数据库名字goifexists(select*fromsysobjectswherename='表名')droptable表名--判断是否有这个名字的表createtable表名(字段名数据类型列的特征如stuidintidentity(1,1)notnull--identity表示是否为自动增长)go三加约束1主键约束(primarykeyconstraint)--constraint约束altertable表名addconstraint约束名(PK_***)primarykey(约束的字段)2唯一约束(uniqueconstraint)altertable表名addconstraint约束名(uq_***)unique(约束的字段)3检查约束(checkconstraint)altertable表名addconstraint约束名(ck_***)check(约束的条件)4默认约束(defaultconstraint)altertable表名addconstraint约束名(df_***)default('默认值')for约束的字段5外建约束(foreignkeyconstraint)altertable表名addconstraint约束名(fk_***)foreignkey(约束的字段)references主表的表名(主表的字段)总结createdatabase建库createtable建表addconstraint加约束dropdatabase删库droptable删表dropconstraint删约束usemasterselect*fromsysdatabases判断是否有库名select*fromsysobjects判断是否有表名完整性1实体完整性(保证数据是唯一的如主键\唯一键\标示列)2引用完整性(保证两表数据一致如外键)3域完整性(保证数据的准确性如检查约束\默认约束\非空)三层安全模型1登陆帐号--决定登陆服务windows身份验证execsp_grantlogin'windows域名\域帐户'sql身份验证execsp_addlogin'帐户名','密码'2数据库用户--访问数据库use数据库名goexecsp_grantdbaccess'登陆帐户',('数据库用户')如果不写数据库用户默认为登陆帐号名3权限--在数据库里的操作use数据库名gogrant权限(增,删,改,查,建表(createtable))on表名to用户名第三章T-SQL编成使用变量一局部变量declare@变量名类型赋值:1、set@变量名=值2、select@变量名=值二全局变量@@error最后一个T-SQL错误的错误号@@identity最后一次插入的标示值@@language当前使用的语言的名称@@max_connections可以创建的同时连接的最大数目@@rowcount受上一个sql语句影响的行数@@servername本地服务器的名称@@servicename该计算机上的sql服务的名称@@timeticks当前计算机上每刻度的微秒数@@transcount当前连接打开的事物数@@versionsqlserver的版本信息输出语句1、print局部变量或字符串2、select局部变量as自定义列名(查询语句的特殊应用)逻辑控制语句1、if(条件)begin--开头语句end--结束else--为可选begin--开头语句end--结束2、while(条件)语句[break]3、casewhen条件1then结果1when条件2then结果2[else其他结果]end...