数据库实验—4


**

一、 数据查询

**

① 索引的建立与删除

  • 索引建立语句的书写格式如下:

create [unique] [cluster] index <索引名> on
<表名>(<列名>[<次序>][,<列名>[<次序>]]…); <表名>:要建索引的基本表的名字
索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔 <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。 缺省值:ASC
UNIQUE:此索引的每一个索引值只对应唯一的数据记录 CLUSTER:表示要建立的索引是聚簇索引

  • 其中的聚簇索引是查询速度最快的,属于是物理查询,但是只能建立一个聚簇,所以我们经常选择使用频率最高的键来作为聚簇查询。

  • 索引的删除和修改语句如下

--重命名
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
--删除
drop index <索引名>;

[例3.13] 为学生-课程数据库中的Student,Course,SC三个表建立索引。

CREATE UNIQUE INDEX Stusno ON Student(Sno); 
CREATE UNIQUE INDEX Coucno ON Course(Cno);--默认升序,也就是升序排列。
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);--Sno升序,Sno相同时按Cno降序

[例3.14] 将SC表的SCno索引名改为SCSno

ALTER INDEX SCno RENAME TO SCSno;

[例3.15] 删除Student表的Stusname索引

DROP INDEX Stusno ON Student;

在这里插入图片描述

②数据查询

[例3.16] 查询全体学生的学号与姓名(查询指定列)

SELECT Sno,Sname FROM Student;

在这里插入图片描述
[例3.17] 查询全体学生的姓名、学号、所在系(查询指定列)

SELECT Sname,Sno,Sdept FROM Student;

[例3.18] 查询全体学生的详细记录

select *
from Student;
/*或
select Sno,Sname,Ssex,Sage,Sdept
from Student;
*/
只有在所有查询中可以使用*来代替。

在这里插入图片描述

二、数据更新

  • 首先我们说插入数据的两种方式
一 插入元组

二 插入子查询结果

元组的插入

-语句格式:

insert into <表名> [(<属性列1>[,<属性列2 >…)]; values (<常量1> [,<常量2>]… );
/*INTO子句
1.指定要插入数据的表名及属性列
2.属性列的顺序可与表定义中的顺序不一致
3.没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
4.指定部分属性列:插入的元组在其余属性列上取空值 VALUES子句
1.提供的值必须与INTO子句匹配(值的个数、值的类型)
*/

[例3.69]将一个新学生元组(学号:201215128;姓名:陈冬; 性别:男;所在系:IS;年龄:18岁)插入到Student表中。

INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128','陈冬','男','IS',18);

在这里插入图片描述

[例3.70]将学生张成民的信息插入到Student表中。 (INTO 子句不写属性名的情况)

INSERT
INTO Student
VALUES ('201215126','张成民','男',18,'CS');

[例3.71] 插入一条选课记录( ‘200215128’,'1 ')

INSERT
INTO SC(Sno,Cno)
VALUES ('201215128 ',' 1 ');

在这里插入图片描述

  • 插入时我们需要注意这种错误的情况
INSERT 
INTO Course(Cno,Cname,Cpno,Ccredit)
VALUES ('1','数据库','5',4);
  • 因为我们设定的Cpno是Cno的外键,所以在执行该语句时,我们是第一次给这个赋值,所以’5’并不存在于Cno中,无法在Cpno中写入Cno中不存在的值,这也是书中提高的参照完整性,正确代码的书写如下
INSERT
INTO Course(Cno,Cname,Cpno,Ccredit)
VALUES ('1','数据库',NULL,4);

注:关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。


其中文章的插入子结果查询还没讲到,而且查的那一部分老师说变化最多,所以还会继续更新hhh,今天刚拿到电脑就赶紧更了hhh。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值