一.索引的建立与删除

1.建立索引

❖建立索引(INDEX)的目的:加快查询速度

❖关系数据库管理系统中常见索引:

◼ 顺序文件上的索引

◼ B+树索引

◼ 散列(hash)索引

◼ 位图索引

❖语句格式

CREATE [UNIQUE] [CLUSTER] INDEX<索引名>

ON <表名>(<列名>[<次序>[,<列名>[<次序>]]...);

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

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

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

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

CLUSTER:表示要建立的索引是聚簇索引An Introduction to Database System

[例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);
--学号升序 ,学号若相同则按照课程号降序排列

2.修改索引

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

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

ALTER INDEX SCno RENAME TO SCSno

但,alter不能改变索引名,如若改变索引名就需要调用存储过程。

正确方法是

SQL Server rename

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

3. 删除索引

❖DROP INDEX <索引名> ;

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

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

DROP INDEX Stusname

报错

改为

DROP INDEX Stusno on Student;

数据字典

❖数据字典是RDBMS内部的一组系统表,它记录 了数据库中所有定义信息:

◼ 关系模式定义 ◼ 视图定义 ◼ 索引定义 ◼ 完整性约束定义 ◼ 各类用户对数据库的操作权限 ◼ 统计信息等

❖RDBMS在执行SQL的数据定义语句时,实际上 就是在更新数据字典表中的相应信息

二.数据更新

1.插入数据

❖两种插入数据方式

◼ 插入元组

◼ 插入子查询结果

可以一次插入多个元组

1、插入元组

语句格式

INSERT

INTO <表名> [(<属性列1>[,<属性列2>)]

VALUES (<常量1>[,<常量2>]...);

❖ 功能

将新元组插入指定表中

语句介绍

❖ INTO子句

◼ 指定要插入数据的表名及属性列

◼ 属性列的顺序可与表定义中的顺序不一致

◼ 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定 义中的顺序一致

◼ 指定部分属性列:插入的元组在其余属性列上取空值

❖VALUES子句

◼ 提供的值必须与INTO子句匹配

值的个数

值的类型An Introduction to Database System

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

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

同样的方法,在对Course 表进行插入时

由于我们在建表时

所以Cpno要么为null要么等于Course中某个元组主码值

由于这是第一次插入

所以 我们可以

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

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

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

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

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

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

三,数据查询

1.查询指定列(关系代数中的投影)

[例3.16] 查询全体学生的学号与姓名。

SELECT Sno,Sname FROM Student;

[例3.17] 查询全体学生的姓名、学号、所在系。

SELECT Sname,Sno,Sdept FROM Student;

❖查询全部列

◼ 选出所有属性列:

在SELECT关键字后面列出所有列名

将<<目标列表达式>指定为 *

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

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

❖查询经过计算的值

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

[例3.19] 查全体学生的姓名及其出生年份。

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

[例3.20] 查询全体学生的姓名、出生年份和所在的院系,要 求用小写字母表示系名。

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;

❖消除取值重复的行 如果没有指定DISTINCT关键词,则缺省为ALL

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

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

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

SELECT DISTINCT Sno FROM SC;

未完待续。。。。

Sql Server 03相关推荐

  1. 03.三月风雨愁断肠,学习大数据特别忧伤——谈谈AKS创建SQL Server大数据群集创建愁断肠

    03.三月风雨愁断肠,学习大数据特别忧伤--谈谈AKS创建SQL Server大数据群集创建愁断肠 [TOC] 前言 使用AKS创建SQL Server大数据群集有几种方法,由于产品不断的更新,SQL ...

  2. SQL SERVER 2012 AlwaysOn - 维护篇 03

    搭建 AlwaysOn 是件非常繁琐的工作,需要从两方面考虑,操作系统层面和数据库层面,AlwaysOn 非常依赖于操作系统,域控,群集,节点等概念: DBA 不但要熟悉数据库也要熟悉操作系统的一些概 ...

  3. SQL Server 数据库清除日志的方法

    方法一: 1.打开查询分析器,输入命令  BACKUP LOG database_name WITH NO_LOG  2.再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件- ...

  4. RequisitePro SQL SERVER数据库的配置

    安装好Rational RequisitePro后,新建立一个project时,要选择库的类型,可以支持MS Access.SQL SERVER和oralce 首先在SQL SERVER里新建一数据库 ...

  5. SQL Server开发人员应聘常被问的问题妙解汇总

    目前在职场中很难找到非常合格的数据库开发人员.我的一个同事曾经说过:"SQL开发是一门语言,它很容易学,但是很难掌握." 在面试应聘的SQL Server数据库开发人员时,我运用了 ...

  6. SQL Server 2008 Ent Dev Key

    SQL Server 2008 Ent & Dev Key Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYB Enterprise: JD8Y6-HQG69-P ...

  7. 查看MS SQL Server数据库每个表占用的空间大小

    参数说明见:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx create table #t(name varchar(255), rows ...

  8. SQL server中SET ANSI_PADDING对char、varchar、nvarchar的影响

    对列存储长度小于列的定义大小的值以及在 char.varchar.binary 和 varbinary 数据中含有尾随空格的值的方式进行控制.此设置只影响新列的定义. 创建列后,SQL Server ...

  9. 安装SQL Server 2012示例数据库

    SQL Server的示例数据库是一个非常好的学习数据库的范例,在安装完SQL Server 2012后,默认情况下是不会安装示例数据库的,我们需要自己进行一些安装和设置. 安装Adventure W ...

最新文章

  1. 不得不爱,Visual Studio Code十大超酷特性
  2. 1.7 元注解作用及使用
  3. exce中让两列数据一一对应_表格数据对比眼花缭乱、痛苦不堪,找对方法,1秒搞定...
  4. SAP UI5 应用开发教程之三十五 - 如何把本地开发的 SAP UI5 应用部署到 ABAP 服务器上
  5. composer升级_Composer-命令简介
  6. Express 路由、Ejs 、静态文件托管、中间件
  7. vue.js上传头像插件_一个基于vue2.0的头像上传组件
  8. 可变形卷积学习(RepPoints)
  9. 【原创】关于MATLAB中imagesc函数图像保存的问题
  10. dhcp服务器批量修改ip租期,dhcp服务器的ip地址租期默认是多久
  11. 应用数据挖掘进行客户关系管理
  12. imnoise, imnoise2 imnoise3
  13. Python多行注释/取消注释快捷键
  14. 计算机网络本直通线的制作方法,电脑网线制作之交叉线与直通线的做法
  15. 【python教程入门学习】Python字典及基本操作(超级详细)
  16. 关于低版本IE浏览器无法显示图片的问题
  17. 微博数据解析:综艺节目如何频上微博热搜?以《令人心动的offer》为例
  18. JavaScript 火焰
  19. 微信公众号怎么清缓存
  20. 【html】css字体样式

热门文章

  1. 共享yum资源库下一键安装虚拟机的脚本3【完全自动化】
  2. Unity2D平台开发
  3. 地图上分成一块一块区域 高德地图_在谷歌地图上绘制行政区域轮廓【结合高德地图的API】...
  4. 屏幕录制和视频剪辑Filmage Screen
  5. 【商业挖掘】关联规则——Apriori算法(最全~)
  6. 机器人导航——路径跟踪
  7. ShowWindow(SW_SHOWNORMAL)
  8. ZGC学习笔记:ZGC简介和JDK17对ZGC的优化
  9. 一天上手Aurora 8B/10B IP核(5)----从Framing接口的官方例程学起
  10. 2020年海峡两岸最佳职场榜单,38家企业入选