Sql Server 03索引,数据更新,数据查询

索引的建立,修改,删除

1 建立索引

❖语句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);

• <表名>:要建索引的基本表的名字

• 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔

• <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC

• UNIQUE:此索引的每一个索引值只对应唯一的数据记录

• CLUSTER:表示要建立的索引是聚簇索引

3.13为学生-课程数据库中的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 <旧索引名> RENAME TO <新索引名>

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

ALTER INDEX SCno RENAME TO SCSno;

在这里插入图片描述
无法修改,显示语法错误

修改索引方法

exec  sp_rename 'SC.SCno','SCSno','index'

3删除索引

❖DROP INDEX <索引名>

删除索引时,系统会从数据字典中删去有关该索引的描述。

3.14 删除Student表的Stusname索引
在这里插入图片描述
指定后发现没有Stusname,删除一下Stusno
在这里插入图片描述

数据更新

1. 插入元组

❖ 语句格式

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

❖ 功能

◼ 将新元组插入指定表中An Introduction to Database System插入元组(续)

❖ INTO子句

◼ 指定要插入数据的表名及属性列
◼ 属性列的顺序可与表定义中的顺序不一致
◼ 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
◼ 指定部分属性列:插入的元组在其余属性列上取空值

❖VALUES子句

◼ 提供的值必须与INTO子句匹配
值的个数
值的类型

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

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

3.70 将学生张成民的信息插入到Student表中。

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

在这里插入图片描述
3.71 插入一条选课记录( ‘200215128’,'1 ')。

先执行

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

在执行

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

因为有外键的约束,SC中的Cno是引自Course中的Cno。

这里要注意’1’附近千万不要有空格,不然会一直报错,由于Cno是char类型的,所以’1’和’ 1’是不同的。

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

这样写也可以,而且更加的简便,不过要NULL,几个没写就要由几个NULL

数据查询

❖语句格式
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)
[AS]<别名>
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING<条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];

数据查询
◼ SELECT子句:指定要显示的属性列
◼ FROM子句:指定查询对象(基本表或视图)
◼ WHERE子句:指定查询条件
◼ GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。
◼ HAVING短语:只有满足指定条件的组才予以输出
◼ ORDER BY子句:对查询结果表按指定列值的升序或降序排序

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; 

两种方式都可以
在这里插入图片描述

❖查询经过计算的值

◼ SELECT子句的<目标列表达式>不仅可以为表中的属性列,也可以是表达式

SELECT Sname,2016-Sage /*假设当时为2016年*/
FROM Student;

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

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

在这里插入图片描述
❖消除取值重复的行

如果没有指定DISTINCT关键词,则缺省为ALL

3.21 查询选修了课程的学生学号。

SELECT Sno FROM SC;
等价于:
SELECT ALL Sno FROM SC;

SC表
在这里插入图片描述在这里插入图片描述

❖指定DISTINCT关键词,去掉表中重复的行
3.22

SELECT DISTINCT Sno
FROM SC;

在这里插入图片描述
前面的基本操作和数据建立

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值