数据库作业3:SQL Server的部分操作(2)

三.索引的建立与删除

1.建立索引

在SQL语句中,建立索引使用CREATE INDEX 语句:

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> 
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]);

升序ASC,降序DESC,默认值为升序ASC。

为数据库中的Student、Course和SC三个表建立索引。其中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);/*先按学号升序,学号相同再按课程号降序*/

2.修改索引

对于已经建立的索引,如果需要对其重新命名,可以使用ALTER INDEX 语句:

ALTER INDEX <旧索引名> RENAME TO <新索引名>;

将SC表的SCno索引名改成SCSno:

ALTER INDEX SCno RENAME TO SCSno

报错:“RENAME”附近有语法错误。
经查阅,将代码更改为:

EXEC sp_rename'SC.SCno','SCSno','index';

在这里插入图片描述

3.删除索引

在SQL语句中,删除索引使用DROP INDEX 语句:

DROP INDEX <索引名>;

删除Student表的Stusname 索引:

DROP INDEX Stusname;

报错:
在这里插入图片描述
将代码改为:

DROP INDEX Student.Stusno;

3.5 数据更新

一.插入数据

1.插入元组

语句格式:

INSERT
INTO <表名> [(<属性列1>[,<属性列2 >)]
VALUES (<常量1> [,<常量2>]);

–INTO子句:
(1)指定要插入数据的表名及属性列
(2)属性列的顺序可以与表定义中顺序不一致
(3)没有指定属性列:表示要插入的是一条完整的元组,且属性列与表定义中的顺序一致
(4)指定部分属性列:插入的元组再其余属性列上取空值
–VALUES子句:
提供的值的个数、类型必须与INTO子句匹配

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

INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215128','王辉','男','IS',18)

指定了要插入数据的表名和属性列,按属性顺序插入,若指定部分,未指定的置为NULL。

②:将学生张成民的信息插入到Student表中:

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

未指定属性列,填入顺序要与表定义的顺序一致。
在这里插入图片描述

注意! 是允许不写属性名的

一个运行失败的案例

INSERT
INTO Course(Cno,Cname,Cpno,Ccredit)
VALUES ('1','数据库','5',4);

这是由于参照完整性约束,Cpno的值是参照Cno的值,而此时输入的是第一个元组,cno输入的值只有1,所以可以先将Cpno的值置为NULL,等都输入完后再更改。

INSERT
INTO Course(Cno,Cname,Cpno,Ccredit)
VALUES ('1','数据库',NULL,4);

③:插入一条选课记录(‘201215128’,‘1’):

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

在这里插入图片描述

3.4 数据查询

一.单表查询

1.选择表中的若干列

①.选择表中的若干列

(1)查询全体学生的学号与姓名:

SELECT Sno,Sname
FROM Student;

在这里插入图片描述
(2)查询全体学生的姓名、学号、所在系:

SELECT Sname,Sno,Sdept
FROM Student;

在这里插入图片描述

③.查询全部列

查询全体学生的详细资料:

SELECT * FROM Student;

等价于

SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;

第一种方法更为简便,推荐。
在这里插入图片描述

③.查询经过计算的值

查询全体学生的姓名及其出生年份:

SELECT Sname,2014-Sage
FROM Student;

在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页