索引的建立、删除与修改以及数据的插入、修改、删除

一、建立索引

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升序排列与Cno降序排列,二者并没有冲突,这句话的意思是对Sno进行升序排列后,当Sno相同时,对Cno进行降序排列。
二、

EXEC sp_rename 'SC.Sno', 'SCSno', 'index'

将SC表的SCno索引名改为SCSno:
在这里插入图片描述
删除Student表的Stusname索引:
在这里插入图片描述
可以看到该运行错误,改变方法如下:

DROP INDEX  Stusno ON Student;

运行成功。
二、数据更新
插入元组:
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
例如:
将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。

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

如果,学号重复,就会出现以下提示,表示学号重复:
在这里插入图片描述
再来看一个例子:
在这里插入图片描述
这句话之所以报错,是因为5这一行还没有录入,所以报错
可以改为:

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

或者:

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

然后插入一条选课记录:

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

或者:

 INSERT
    INTO SC
    VALUES (' 201215128 ',' 1 ',NULL);

查询全体学生的学号与姓名。

SELECT Sno,Sname
		FROM Student; 

结果如下:
在这里插入图片描述
查询全体学生的姓名、学号、所在系。

SELECT Sname,Sno,Sdept
		FROM Student;

在这里插入图片描述
查询全体学生的详细记录(又添加了一些数据)
在这里插入图片描述
查全体学生的姓名及其出生年份。

SELECT Sname,2016-Sage       
FROM Student;

结果如下:
在这里插入图片描述
查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名。

SELECT Sname,'Year of Birth: ',2014-Sage,LOWER(Sdept)
FROM Student;

在这里插入图片描述
我们给一行加上名称,例如

SELECT Sname NAME,'Year of Birth:'  BIRTH,
       2014-Sage  BIRTHDAY,LOWER(Sdept)  DEPARTMENT
	FROM Student;

在这里插入图片描述
查询选修了课程的学生学号:

SELECT Sno   FROM SC;

或者:

SELECT ALL  Sno  FROM SC;

在这里插入图片描述
指定DISTINCT关键词,去掉表中重复的行
如果要去掉重复的学号,加上以下语句即可:

SELECT DISTINCT Sno
    FROM SC; 

查询计算机科学系全体学生的名单:

SELECT Sname
    FROM     Student
    WHERE  Sdept=‘CS’; 

只有一个人的专业是CS:
在这里插入图片描述
查询所有年龄在20岁以下的学生姓名及其年龄:

SELECT Sname,Sage 
 FROM     Student    
 WHERE  Sage < 20;

查询考试成绩有不及格的学生的学号:

SELECT DISTINCT Sn
FROM  SC
WHERE Grade<60; 

BETWEEN … AND …
NOT BETWEEN … AND …

查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄

     SELECT Sname, Sdept, Sage
FROM     Student
WHERE   Sage BETWEEN 20 AND 23; 

在这里插入图片描述
查询年龄不在20~23岁之间的学生姓名、系别和年龄

 SELECT Sname, Sdept, Sage
       FROM    Student
       WHERE Sage NOT BETWEEN 20 AND 23; 

IN <值表>, NOT IN <值表>
查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别:

SELECT Sname, Ssex
	FROM  Student
	WHERE Sdept IN ('CS','MA’,'IS' );

在这里插入图片描述
查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别。

SELECT Sname, Ssex
	FROM Student
	      WHERE Sdept NOT IN ('IS','MA’,'CS' );

通过练习,也发现了自己的一些问题,和不理解的语句,同时也很大程度掌握了这些删除、修改的语句。
以后还要多多练习~~~~~~

发布了9 篇原创文章 · 获赞 9 · 访问量 3028

猜你喜欢

转载自blog.csdn.net/wjijiu/article/details/104774937