SQL server 数据库最新修改Word格式文档下载.docx
《SQL server 数据库最新修改Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SQL server 数据库最新修改Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
在企业管理器的控制台---数据库----右单击选择所有任务-----备份数据库
6还原数据库:
在企业管理器的控制台---数据库----右单击选择所有任务-----还原数据库
第三章表的操作
常用数据类型
数据类型
类型
描
述
bit
逻辑数据类型
这种数据类型用于存储只有两种可能值的数据,如True或False
int
整数数据类型
int数据类型可以存储从(-2147483648)到(2147483647)之间的整数。
这种数据类型在数据库里每个值占用4个字节
float
浮点数据类型
float数据类型是一种近似数值类型,浮点数可以是从-1.79E+308到1.79E+308之间的任意数
datetime
日期时间类型
datetime数据类型用来表示日期和时间。
这种数据类型存储从1753年1月1日到9999年12月31日间所有的日期和时间数据,精确到三百分之一秒或3.33毫秒
CHAR
字符数据类型
char(n)按固定长度存储字符串,n必须从1-8000.若输入的数据不足nB,则补足后存储.若输入的数据过nB,则截断遑存储。
VARCHAR
varchar(n)它与char类型相似,n必须从1-8000.之间的数值。
存储大小为输入数据字节的实际长度。
由于CHAR数据类型长度固定,因此它比VARCHAR类型的处理速度快。
TEXT
文本
TEXT数据类型用于存储大量文本数据,其容量理论上为1到2的31次方-1(2147483647)个字节,在实际应用时需要视硬盘的存储空间而定。
1建表的步骤
(1)定义表结构:
给表的每一列取字段名,并确定每一列的数据库型、数据长度、列数据是否可以为空等。
(2)设置约束:
设置约束是为了限制该列输入值的取值范围,以保证输入数据的正确性和统一性。
(3)添加数据:
表结构建立完成之后,应该向表中输入数据。
“班级”表的结构:
2创建表
(1)使用企业管理器,在student数据库,展开找到表图标,右单击选新建表,然后输入例如如下字段:
字段名称
数据类型
字段长度
是否为空
班级代码
Char
9
否
班级名称
Varchar
20
是
专业代码
4
系部代码
2
备注
50
单击保存按钮保存表,起名字比如班级
输入内容如下
010101001
01级软件工程001班
0101
01
010101002
01级信息管理002班
0102
010201001
01级经济管理001班
0201
02
010202002
01级会计002班
0202
(2)使用代码创建表
字段名
长度
系部名称
30
系主任
8
Usestudent
Go
createtabledbo.系部
(
系部代码char
(2)notnull,
系部名称Varchar(30)notnull,
系主任char(8)
)
3修改表结构
(1)在表图标上双击,然后再在需要的表上右单击选择------设计表比如添加、删除字段,修改原有的字段定义等
(2)代码方式
案例1在student数据库教师表中增加家庭住址一列,Varchar类型,允许空
Altertable教师
Add家庭住址varchar(40)
案例2在student数据库教师表家庭住址修改varchar(50),允许空
Altercolumn家庭住址varchar(50)
案例3在student数据库教师表中删除“家庭住址“一列
Dropcolumn家庭住址
4删除表
(1)在需要删除的表上右单击选择删除,选择全部删除
(2)代码比如
Droptable系部
5添加数据
(1)双击表图标,在右侧表名上右单击选择打开表–返回所有行
(2)使用代码
例如使用insert向student库中系部表添加记录
Insert系部
Values(’03’,’数学系’,’张三’)
6查看表
(1)在表上右单击选择属性
(2)代码execsp_help表名
第四章数据库增删改查操作
1数据的添加
语法:
insert[into]tablename[column_list]values(datavalues)
案例1在专业表中添加一行记录:
在计算机系部中添加-个电子科学专业
Insert专业
(专业代码,专业名称,系部代码)
Values
('
0105'
'
电子科学'
01'
案例2省略清单insert语句在班级表中添加2004级电子商务班
0106'
电子系'
2数据的修改update
案例3将教学计划表中专业代码为”0101”的“开课学期”值改为第2学期
Update教学计划
Set开课学期=2
Where专业代码='
0101'
3数据的删除
案例4删除“课程注册”表中所有记录
Delete课程注册go
案例5删除“教师”表中没有姓名的记录
Delete教师where姓名isnull
案例6删除课程注册表中姓名为“张斌”的课程号位“0001”的选课信息
Delete课程注册表
Where课程注册表.课程号='
0001'
and学号=(select学号from学生where姓名like'
张斌'
4数据查询
(1)查询表中若干列
案例1查询“学生”表中全体学生的记录
Select*from学生
案例2查询全体教师的教师编号,姓名,和职称信息
Select教师编号,姓名,职称
From教师
(3)查询表中若干记录
案例3查询选修了课程的学生号并且取消重复记录
Selectdistinct学号From课程注册
(4)限制返回行数
案例4查询“课程注册”表中的前3条记录
Selecttop3*from课程注册
(5)查询满足条件的元组
查询条件
运算符
意义
比较
=,>
<
>
=,<
=,!
>
!
比较大小
确定范围
Betweenand,notBetweenand
判断值是否在范围内
确定集合
In,notin
判断值是否为列表中的值
字符匹配
Like,notlike
判断值是否与指定的字符通配符格式相符
空值
Isnull,notisnull
判断值是否为空
多重条件
And,or,not
用于多重条件判断
案例5查询“课程注册”表中成绩>
50分的记录
Select*from课程注册where成绩>
=50
案例6查询出生日期在1970年至1982年之间的学生姓名、学号和出生日期
Select姓名,学号,出生日期from学生
Where出生日期between‘1970-01-01’and‘1982-12-31’
Go
案例7查询计算机系、经济管理系的班级名称与班级编号
select班级代码,班级名称from班级where系部代码in('
02'
案例8字符匹配查询“学生”中姓“周”的同学的信息
Select*from学生where姓名like'
周%'
注意%代表任意长度字符;
_下划线代表任意单个字符
案例9查询“教师”表中备注字段为空的班级信息
Select*from教师where备注isnull
案例10多重条件查询查询“课程注册”表中课程号为”0001”成绩在70分—79分之间的学生的学号,成绩
Select学号,成绩from课程注册where课程号='
and成绩>
=70and成绩<
79
(6)对查询结果排序
OrderbyASC(升序)、Desc(降序)
案例11查询选修”0001”号课程的同学的学号,并按成绩降序排列
Orderby成绩DESC
(7)对数据进行统计
使用集合函数
Count([distinct/all]*)统计记录个数。
Count([distinct/all]列名)统计一列中值的个数。
Sum([distinct/all]列名)计算一列值的总和(此列必须是数值型的)。
Avg([distinct/all]列名)计算一列值的平均值(此列必须是数值型的)。
Max([distinct/all]列名)求一列值中的最大值。
Min([distinct/all]列名)求一列值中的最小值。
案例12查询“教师”表中教师总数。
Selectcount(*)as教师总数from教师
案例13查询“课程注册”表中学生的成绩平均分。
Selectavg(成绩)as平均分from课程注册
案例14对结果进行分组
查询“课程注册”表中课程选课人数4人以上的各个课程号和相应的选课人数。
代码如下。
Select课程号,count(*)as选课人数from课程注册
Groupby课程号
Havingcount(*)>
=4
案例15Compute对查询的结果集中所有的记录进行汇总统计。
查询所有学生所有成绩的总和。
Select*from课程注册
Orderby学号
Computesum(成绩)
案例16对每个学生的所有课程的成绩求和,并显示详细记录。
Orderby学号
Computesum(成绩)by学号
案例17用查询结果生成新的表
创建“课程注册”表的一个副本。
Select*into课程注册副本from课程注册
Select*from课程注册副本
合并结果集:
union
案例18查询“课程注册”表中0102专业的学生学号及课程成绩大于70分小于79分的学生学号,并按成绩降序排列记录。
Select*from课程注册where专业代码=’0102’
Union
79
Orderby成绩desc
案例19查询“课程注册”表中选修了0001课程或选修了0002课程的学生,也就是选修了课程0001的学生集合与选修了课程0002的学生集合的并集,且按课程号升序排序。
Select*from课程注册where课程号='
Union
0002'
Orderby课程号asc
(8)交叉连接:
两个表属性列的和
语法格式:
Select列表列名from表名1crossjoin表名2
其中crossjoin为交叉表连接关键字。
案例20使用上例中的“学生”表、“专业”表,实现交叉查询。
Select学号,姓名,性别,学生.系部代码,学生.专业代码,专业.专业代码,专业名称,专业.系部代码
From学生crossjoin专业
(9)自然连接
等值连接:
用=作为连接条件或连接谓词时候
自然连接:
在等值连接中,把目标列中重复的列删除。
用等值连接方法连接学生表和专业表,观察效果
Select学号,姓名,性别,学生.系部代码,学生.专业代码,专业.专业代码,专业名称,专业.系部代码From学生innerjoin专业on学生.专业代码=专业.专业代码
案例21自然连接“学生”表和“专业”表。
Select学号,姓名,性别,学生.系部代码,专业.专业代码,专业名称
From学生join专业on学生.专业代码=专业.专业代码
(10)自身连接查询:
一个表与自己进行连接
案例22使用“教师任课”表,查询至少为两个专业开设课程的教师编号和专业代码。
Selectfirst.教师编号,second.专业代码
From教师任课asfirstjoin教师任课assecond
Onfirst.教师编号=second.教师编号
Andfirst.专业代码!
=second.专业代码
(11)
左外连接是结果表中除了包含满足连接条件的记录外,还包括左表中不满足连接条件的记录。
左外连接语法格式
Select列表列名
From表名1left[outer]join表名2
On表名1.列名=表名2.列名
案例23将“学生”表左外连接“专业”表。
Select学号,姓名,性别,学生.系部代码,学生.专业代码,专业.专业代码,专业.专业名称,专业.系部代码
From学生leftouterjoin专业
On学生.专业代码=专业.专业代码
(12)右外连接是结果表中除了包含满足连接条件的记录外,还包括右表中不满足连接条件的记录。
案例24将“学生”表右外连接“专业”表。
Select学号,姓名,性别,学生.系部代码,学生.专业代码,专业.专业代码,专业.专业名称,专业.系部代码
From学生rightouterjoin专业
(13)完全外连接是结果表中除了包含满足连接条件的记录外,还包括2个表中不满足连接条件的记录。
案例25将“学生”表完全外连接“专业”表
From学生fullouterjoin专业
(14)复合连接:
on中连接有多个连接条件
案例26使用学生表,课程表和课程注册表,查询成绩在70分-80分之间(含70分和80分)的学生的学号,姓名,专业代码,选修课的课程号,课程名以及对应的成绩。
Selects.学号,s.姓名,s.专业代码,c.课程号,cn.课程名,c.成绩
From学生assjoin课程注册asc
Ons.学号=c.学号andc.成绩>
=70andc.成绩<
=80
Join课程ascn
Onc.课程号=cn.课程号
(15)带有比较运算符的子查询
案例27使用教师表,查询与“王钢”同在一个系的教师基本信息
Select教师编号,姓名,性别,学历,职称from教师
Where系部代码=(select系部代码from教师where姓名='
王钢'
(16)带有exists运算符的子查询
使用教师表,查询与“王钢”同在一个系的教师基本信息
Select教师编号,姓名,性别,学历,职称from教师asT1
Whereexists(select*from教师asT2whereT2.系部代码andT2.姓名=’王钢’)
第五章约束
约束定义了关于允许什么数据进入数据库的规则。
使用约束的目的是为了防止列出现非法数据,以保证数据库中数据的一致性和完整性。
1常见约束
(1)NOTNULL指定不接受NULL值的列
(2)CHECK约束对放入列中的值进行限制,以强制执行域的完整性
(3)UNIQUE约束在列集内强制执行值的唯一性
(4)primarykey约束列这些列唯一标识表中的行
(5)ForeignKey约束标识表之间的关系
(6)default约束为列填入默认值
2创建主键约束
(1)用企业管理器创建主键约束在“学生”表,右单击选择“设计表”,在需要的字段上右单击选择设置主键
(2)使用SQL语句创建主键
案例1在student数据库中,建立一个“教材”表,包括教材代码、教材名称、书号、出版社、版本、价格六个字段,并将教材代码设置为主键。
Createtable教材
教材代码intprimarykey,
教材名称char(50),
书号char(50),
出版社char(50),
版本char(50),
价格char(50)
案例2如果在创建”教材”表的时段没有指定主键,那么在创建好后的“教材”表中,将教材代码设置为主键。
Altertable教材
Addconstraintps_jc
Primarykeyclustered(教材代码)
3创建唯一约束
(1)在表上右单击选择“设计表“,然后在要设置唯一约束字段上右单击选择---索引/键,单击新建按钮,给起名字,在从列名下拉框中选择字段名称,最好选择”创建unique”复选框和”约束’单选框。
(2)使用sql语句创建唯一约束
案例3在student表中“教材”表中,将“书号”字段创建一个唯一约束。
Altertable教材
Addconstraintuk_sh
Unique(书号)
4创建检查约束
(1)在表上右单击选择“设计表“,然后在要设置check约束字段上右单击选择check约束,单击新建按钮,输入约束名,比如([学分]>
=1and[学分]<
=7).
(2)代码方式:
案例4利用sql语句创建“课程”表,并且在创建的同时,创建检查约束,是学分字段被约束在1至7之间。
Createtable课程
课程号intprimarykey,
课程名char(50),
学分char(50),
Constraint学分check(学分between1and7)
5创建默认约束
(1)在表上右单击选择“设计表“,然后在要设置默认字段上比如性别字段。
在下方默认值处输入”男”
(2)案例5在student数据库中新建“学生注册”表,并将注册时间设置为当前日期。
Createtable学生注册
注册编码intprimarykey,
学号char(50),
注册时间datetimedefaultgetdate(),
学期char(50)
案例6在student数据库中的“教师”表中,为学历字段创建默认值为“本科”的默认约束。
Addconstraintdf_xl
Default‘本科’for学历
6创建外键约束
(1)比如教师表,右单击选择设计表,选择要设置外键约束的字段,右单击选择关系,单击新建按钮,然后在主键表中选择主键表,比如系部表,在外键列表中选择教师表。
然后分别主键表和外键表中选择系部代码字段。
(2)用sql语句创建外键约束
案例7在student数据库中位“班级”表,为专业代码字段创建一个外键约束,从而保证输入有效的专业代码。
Altertable班级
Addconstraintfk_zydm
Foreignkey(专业代码)
References专业(专业代码)
7查看约束的定语
(1)在表上右单击选择设计表,在右单击选择属性查看。
(2)代码案例8使用系统存储过程查看student数据库中定义的入学时间(名称为ck_rxsj)的约束信息和文本信息。
查询约束信息
Execsp_helpck_rxsj
Execsp_helptextck_rxsj
8删除约束
案例9删除“课程”表中的入学时间(ck_rxsj)。
Altertable学生
Dropconstraintck_rxsj
第六章Sqlserver安全管理与权限分配
1两种验证方式:
一种是windows验证方式,另一种windows和sqlserver混