数据操纵
插入数据
第一种插入方式
insert into 表名【属性列,属性列】
values (值1,值2);
insert into 表名
values(值);
此时这个值必须对应表中属性列所对应的数据类型
若有些属性列未能赋值,则DBMS会为省略的属性列自动赋值
第二种插入方式:可以插入多个元组
insert into 表名(列名)
子查询
**例题 **对每一个系,求学生的平均年龄,并把结果存入数据库
第一步:建表
修改数据
update <表名>
set <列名>=<表达式>
[where <条件>];
set子句指定要修改的列;及修改后的取值
where指定要修改的元组;缺省则表示要修改表中的所有元组
update St
set Sage=22
where Sno=200215121;
带有子查询的修改语句
删除数据
基本语法
delete from 表名
[where ]
where缺省则表示删除所有数据;
视图
视图特点:
- 视图是一个虚表,是从一个或几个基本表导出的表
- 数据字典中只存放视图的定义不存放视图对应的数据
- 基表中的数据发生变化,从视图中查询出的数据也随之改变
视图的操作
创建视图
create view <视图名>[列名...]
as <子查询>
[with check option];
- 按视图定义的数据从基本表中查到
基于单表创建的视图
例题创建一个计算机系教师情况的视图Sub_T
create view Sub_T
as select T.no,tN,Prof
from T
where Dept='计算机';
创建好后可在sql_server中查看到如下
基于多个基本表创建的视图
例题创建一个学生情况视图S_SC_C(包括学号,姓名,课程名,成绩)。
基于视图的视图
基于分组的视图
修改视图
alter view 表名
as 子查询
删除视图
drop view 视图名
查询视图
与查询基本表的操作相同
视图消解法:简化了查询的操作
更新视图
- 由于视图是一张虚表,所以对视图的更新最终转为对基本表的更新
- 其语法格式如同对基本表的更新一样
例如修改视图Sub_T刘伟的职称为副教授
视图Sub_T的创建语句:
CREATE VIEW Sub_T AS
SELECT TNO, TN, Prof FROM T
WHERE DEPT = '计算机';
UPDATE Sub_T SET Prof='副教授' WHERE TN='刘伟';
/*视图消解转换后的更新语句为:*/
UPDATE T SET Prof='副教授'
WHERE TN='刘伟' AND Dept = '计算机';
SELECT * FROM T; SELECT * FROM Sub_T;
视图的作用
- (1)视图能够简化用户的操作
- (2)视图使用户能以多种角度看待同一数据
- (3)视图对重构数据库提供了一定程度的逻辑独立性
- (4)视图能够对机密数据提供安全保护
- (5)适当的利用视图可以更清晰的表达查询
索引
使用索引的目的
可提高查询效率
索引类型
从物理结构分:
聚集索引和非聚集索引
聚集索引:索引的键值的逻辑顺序决定了表中相应行的物理顺序。一个表中只能有一个聚集索引。
例如,以学号为索引字段为学生表S建立非聚集索引,
索引的顺序取决于记录地址的顺序。字典的笔画目录就属于非聚集索引。
从应用上分
可分为:主键索引、唯一索引、组合索引和全文索引。
主键索引:
当为一个表创建主键的时候,Sql Server会自动为主键列创建一个索引,且该索引是聚集索引。
唯一索引:
唯一索引可以是聚集索引,也可以是非聚集索引。它要求在唯一索引所限制的列中,不允许有重复的
键值。并且具有唯一约束的列,Sql Server会自动的给他创建一个唯一索引。
组合索引:
表示这个索引的索引列可以有多个。
比如学生成绩表 SC中,我们可以把学号和课程号组合在一起建立索引。
它的使用范围是多个列经常在一起作为查询条件。
全文索引:
是一种特性类型的基于标记的功能性索引。
一般情况下,为Sql Server中的文本数据创建索引。全文索引主要用于在大量文本文字中搜索字符串,
我们可以使用 SQL中的like关键字进行字符串检索,但是在大量文本
中使用like关键字效率远低于全文索引。
创建索引
基本语法:
CREATE [索引类型] INDEX 索引名称 ON 表名(列名)
例:根据成员表MEMBER ,以NAME字段建立非聚集索引。
CREATE NONCLUSTERED INDEX N_NAME
ON MEMBER(NAME);
例:根据成员表MEMBER ,以MAJOR字段建立唯一索引。
CREATE UNIQUE INDEX U_MAJOR ON MEMBER(MAJOR);
EXEC SP_HELPINDEX MEMBER;
查看和删除索引
查看索引 – EXEC SP_HELPINDEX 数据表名
删除索引 – DROP INDEX 数据表名.索引名称
EXEC SP_HELPINDEX 数据表名
DROP INDEX 数据表名.索引名称