SQLServer数据库入门学习总结经过一段时间的学习,也对数据库有了一些认识。数据库基本是由表,关系,操作组成;对于初学者首先要学的:1.数据库是如何存储数据的表,约束,触发器2.数据库是如何操作数据的insert,update,deleteT-sql函数存储过程触发器3.数据库是如何显示数据的selectSQLServer数据库学习总结1.SQL基础SQLServer2000安装、配置,服务器启动、停止,企业管理器、查询分析器第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库数据库(DB);数据库管理系统(DBMS);数据库系统(DBS)SQLServer2000提供了不同版本:企业版、标准版、个人版、开发版SQLServer中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney数据库的创建和删除;数据库表的创建、修改和删除数据完整性:实体完整性:PrimaryKey,UniqueKey,UniqueIndex,IdentityColumn;域完整性:Default,Check,ForeignKey,Datatype,Rule;参照完整性:ForeignKey,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;CreateTable中得全部列级和表级约束SQLServer中有5种约束:主键约束(PrimaryKeyConstraint)、默认约束(DefaultConstraint)、检查约束(CheckConstraint)、唯一性约束(UniqueConstraint)、外键约束(ForeignKeyConstraint).关系图数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n)实体关系模型--E-R图数据库规范化:将数据库的结构精简为最简单的形式;从表中删除冗余列;标识所有依赖于其他数据库的数据。数据库三范式:第一范式就是无重复的列;第二范式就是非主属性非部分依赖于主关键字;第三范式就是属性不依赖于其他非主属性2.SQL语句SQL全称是“结构化查询语言(StructuredQueryLanguage)”SQL的4个部分:数据定义语言DDL(DataDefinitionLanguage)用来定义数据的结构:create、alter、drop。数据控制语言DCL(DataControlLanguage)用来控制数据库组件的存取许可、存取权限等得命令:grant、revoke。数据操纵语言DML(DataManipulationLanguage)用来操纵数据库中得数据的命令:insert、update、delete。数据查询语言DQL(DataQueryLanguage)用来查询数据库中得数据的命令:select。SQL中得运算符:算术运算符、位运算符、比较运算符、逻辑运算符、通配运算符、字符串连接符、赋值运算符3.查询简单查询,使用TOP子句查询结果排序orderby带条件的查询where,使用算术表达式,使用逻辑表达式,使用between关键字,使用in关键字,模糊查询like在查询中使用聚合函数:sum(x),avg(x),min(x),max(x),count(x),count(*)使用分组查询groupby,having子句distinct关键字列别名selecttop6*fromsalesorderbyqtydescselectau_id,au_fname,au_lnamefromauthorswherestatein('ks','ca','mi')selectau_fname,au_lname,phonefromauthorswhereau_idlike'72[234]-%'selecttype,sum(price),avg(price),count(*)fromtitlesgroupbytypehavingtypein('business','psycheology')简单子查询:嵌套子查询、相关子查询;子查询的select语句中不能使用orderby子句,roderby子句只能对最终查询结果排序。嵌套子查询:执行过程,先执行子查询,子查询得到的结果不被显示,而是传给外层查询,作为外层查询的条件,然后执行外层查询,并显示结果。嵌套子查询的执行不依赖于外层查询,子查询只执行一次。带有比较运算符的子查询,带有in和notin的子查询,带有any或all的子查询相关子查询:子查询为外层查询的每一行执行一次,外层查询将子查询引用的列的值传给了子查询。相关子查询的执行依赖于外层查询,子查询需要重复的执行。带有exists和notexists的相关子查询。多表联接查询:内联接(innerjoin)、外联接((left、right、full)outerjoin)、自联接(selfjoin)和交叉联接(crossjoin)在查询上创建新表:selectinto语句首先创建一个新表,然后用查询的结果填充新表。表别名selectcoursenamefromcoursewherecourseidin(selectdistinctcourseidfromgradewheregrade>10)selectstudnamefromstudentwheresudbirthday>any(selectstudbirthdayfromstudentwhereclass='信息系')andclass<>'信息系'selectstudnamefromstudentwhereexists(select*fromgradewherestudid=student.studidandcourseid='01')selectstud1.*fromstudentasstud1joinstudentasstud2onstud2.studname='mm'andstud1.studsex=stud2.studsexselect*intogirlsfromstudentwherestudsex='m'4.视图、索引和事务视图是由一个或多个数据表(基本表)导出的虚拟表或者查询表,是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。视图的好处:能够简化用户的操作;视图能够对机密数据提供安全保护。创建视图时,视图的名称存在sysobjects表中。有关视图中所定义列的信息添加到syscolumns表中,而有关视图相关性的信息添加到sysdepends表中。另外,createview语句的文本添加到syscomments表中。在通过视图向表中插入数据时,如果insert语句列表中包含有视图中没有选择的列和不允许为空值的列,这种操作是不允许的。创建视图:createviewview_employeeasselectemp_id,fname,lnamefromemployee使用视图:select*fromview_employee修改视图:alterviewview_employeeasselectemp_id,fname,job_idfromemployeewherejob_id>10删除视图:dropveiwview_employee查看视图结构:execsp_helpview_employee查看视图定义信息:execsp_helptext'view_employee'索引提供了一种基于一列或多列的值对表的数据行进行快速访问的方法。索引提供的是表中得逻辑顺序。聚集索引基于数据行的键值在表内排序和存储这些数据行。当数据表以某列为关键字建立聚集索引时,表中得数据行就以该列(聚集索引键)的排序次序进行存储。每个表只能有一个聚集索引。非聚集索引具有完全独立于数据行的结构,一个表可以建立多个非聚集索引。创建聚集索引:createclusteredindexstudid_indonstud(studid)创建非聚集索引:createuniqueindexstudfullname_indonstud(fnamedesc,lname)删除索引:dropindexstud.studid_ind查看stud表上得索引:execsp_helpindexstud事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或撤销操作请求。事务的特性:原子性(Atomicity)、一致性(Consistenty)、隔离性(Isolation)、永久性(Durability)。事务分类:显示事务、隐性事务、自动提交事务。视图、索引和事务的创建、使用、修改和删除5.Transact—SQL编程全局变量:由系统定义和维护,其名称以@@字符开头局部变量:由用户定义和赋值,其名称以@字符开头输出语句:print逻辑控制语句:begin...end;break;case;continue;goto;if...else;return;while常用函数:行集函数,聚合函数,标量函数转换函数:convert(dt,e,s),cast()数学函数:绝对值abs(n),向上取整ceiling(n),向下取整floor(n),指定次幂power(n,y),四舍五入round(n,length),求符号sign(n),平方根sqrt(n)日期和时间函数:dateadd(datepart,num,date),datediff(datepart,date1,date2),datename(datepart,date),datepart(datepart,date),getdate(),year(date),month(date),day(date)字符串函数:lower(e),upper(e),left(e,i),right(e,i),replace(s1,s2,s3)用3替换1中的2,replicate(e,i)重复指定次数,stuff(s1,start,length,s2)用2替换1中指定位置,substring(expression,start,length)元数据函数:db_id('database_name'),db_name(datebase_id),object_id('obj_name'),object_name(obj_id),col_length('table','column'),col_name(table_id,col_id)聚合函数:avg(expr),count(expr),count(*),max(expr),min(expr),sum(expr)selectau_lname,au_fname,contory=casestatewhen'ut'then'utah'when'ca'then'california'else'world'end,cityfromauthorsorderbystatedescwhile(selectavg(price)fromtitles)<30beginupdatetitlessetprice=price*2