SQLServer数据库入门学习总结Word文档格式.docx
《SQLServer数据库入门学习总结Word文档格式.docx》由会员分享,可在线阅读,更多相关《SQLServer数据库入门学习总结Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
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*fromsalesorderbyqtydesc
selectau_id,au_fname,au_lnamefromauthorswherestatein(&
#39;
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&
gt;
10)
selectstudnamefromstudentwheresudbirthday&
any(selectstudbirthdayfromstudentwhereclass=&
信息系&
)andclass&
lt;
&
selectstudnamefromstudentwhereexists(select*fromgradewherestudid=student.studidandcourseid=&
01&
selectstud1.*fromstudentasstud1joinstudentasstud2onstud2.studname=&
mm&
andstud1.studsex=stud2.studsex
select*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