SQL Server——索引+基于单表的数据插入与简单查询【1】

数据库索引的建立与删除、向表中插入数据、基于单表的简单查询操作(因为以后会有更多的查询操作,所以我给它加了个后缀【1】)

Posted in SQL Server onApril 05, 2021
建立索引的目的是为了加快查询的速度,能快速定位到需要查询的内容。一个表上可以建立一个或多个索引。
1.建立索引

核心SQL语句:CREATE INDEX

一般格式:

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

表名为要建立基本表的名字,索引可以建立在该表的一列或多列上,各列名之间用逗号隔开。每个列名后面还可以用次序指定索引值的排列顺序,可选ASC(升序)或DESC(降序),默认为升序。
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
CLUSTER表示要建立的索引是聚簇索引。
例:为学生-课程数据库中的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);

图形界面下查看我们刚刚建立的索引:
容易发现,除了我们自己建立的,还有一些是本来就有的,应该是DBMS自带的,不要轻易改动。

SQL Server——索引+基于单表的数据插入与简单查询【1】

SQL Server——索引+基于单表的数据插入与简单查询【1】
使用SQL语句查看某张表和整个库下的索引:

参考链接

-- 查询某张表的索引,如Student表
select * from sys.sysindexes
where id=object_id('Student');

SQL Server——索引+基于单表的数据插入与简单查询【1】

-- 查询整个库的索引,如此时的stutest库
select * from sys.sysindexes

SQL Server——索引+基于单表的数据插入与简单查询【1】

2.修改索引

一般修改是对已经建立的索引进行重命名。一般格式如下:

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

例:将SC表中的SCno索引名改为SCSno

错误代码:

alter index SCno rename to SCSno;

SQL Server——索引+基于单表的数据插入与简单查询【1】

正确代码:

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

SQL Server——索引+基于单表的数据插入与简单查询【1】
SQL Server——索引+基于单表的数据插入与简单查询【1】

参考链接

3.删除索引
drop index Student.Stusno -- 必须要指定表名和索引名,否则报错!!!

二、向表中插入数据

SQL的数据插入语句insert通常有两种形式,一种是插入一个元组,另一种是插入子查询结果,后者可以一次性插入多个元组,本篇只讲解插入元组形式。 ###### 1.首先建立一个新的数据库,并建立三张表:学生表Student、课程表Course、选课表SC

create database insertDB;

use insertDB;

create table Student(
	Sno char(9) primary key,        /* 列级完整性约束条件,Sno是主码*/                  
	Sname char(20) unique,             /* Sname取唯一值*/
	Ssex char(2),
	Sage smallint,
	Sdept char(20)
);

create table Course(
	Cno char(4) primary key,
	Cname char(40),            
	Cpno char(4),               	                      
	Ccredit smallint,
	foreign key(Cpno) references Course(Cno) 
); 
  
create table SC(
	Sno char(9), 
	Cno char(4),  
	Grade smallint,
	primary key(Sno,Cno),  
	foreign key(Sno) references Student(Sno),
	foreign key(Cno) references Course(Cno)
);
2.学生表插入数据: 表名+属性

要赋值的属性的顺序可以与表中的顺序不一致,但相同属性对应的数据类型要一致,且所赋值的内容要与要赋值的属性顺序一致,即自己写的要做到一一对应。

insert into Student(Sno,Sname,Ssex,Sdept,Sage)
values('201215128','陈东','男','IS',18);
3.课程表插入数据
insert into Course(Cno,Cname,Cpno,Ccredit)
values('1','数据库',NULL,4);
4.选课表插入数据

未指定的列自动赋为NULL值

insert into SC(Sno,Cno)
values('201215128','1');
5.不指定属性,只有表名插入

此时相当于指定了所有属性,且插入顺序要与建表时的顺序一致

insert into Student
values('02056','樊萌萌','女',20,'CS');

三、简单查询【1】

指定表中的若干列和全查询

1.查询全体学生的学号和姓名
select Sno,Sname
from Student;

SQL Server——索引+基于单表的数据插入与简单查询【1】

2.查询全体学生的姓名、学号、所在系
select Sname,Sno,Sdept
from Student;

SQL Server——索引+基于单表的数据插入与简单查询【1】

3.查询全部列
select * from Student;
-- 等价于下列语句
select Sno,Sname,Ssex,Sage,Sdept
from Student;

SQL Server——索引+基于单表的数据插入与简单查询【1】

4.去重查找

例:查找Student表中的专业类别

直接查找会发现有相同的,因为不同的人可能会选择相同的专业

select Sdept from Student

SQL Server——索引+基于单表的数据插入与简单查询【1】

所以实行去重查找,加入distinct关键字

select distinct Sdept from Student

SQL Server——索引+基于单表的数据插入与简单查询【1】

下一篇将会总结查询中更为复杂和常用的子查询、分组查询、条件查询等~~

SQL Server 相关文章推荐
SQL Server基本使用和简单的CRUD操作
Apr 05 SQL Server
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
如何有效防止sql注入的方法
May 25 SQL Server
解决sql server 数据库,sa用户被锁定的问题
Jun 11 SQL Server
SQL SERVER实现连接与合并查询
Feb 24 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
SQL Server数据库查询出现阻塞之性能调优
Apr 10 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
Apr 22 SQL Server
一次SQL查询优化原理分析(900W+数据从17s到300ms)
Jun 10 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 SQL Server
详解SQL报错盲注
Jul 23 SQL Server
2021-4-3课程——SQL Server查询【2】
2021-4-5课程——SQL Server查询【3】
SQL Server数据定义——模式与基本表操作
SQL Server基本使用和简单的CRUD操作
SQL Server 数据库实验课第五周——常用查询条件
Sql-Server数据库单表查询 4.3实验课
【HBU】数据库第四周 单表查询
You might like
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
天津市收音机工业发展史
2021/03/04 无线电
PHP实现的简单日历类
2014/11/29 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
pygame播放音乐的方法
2015/05/19 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
非常详细的C#面试题集
2016/07/13 面试题
Delphi CS笔试题
2014/01/04 面试题
个人简历自我评价范文
2014/02/04 职场文书
美术课外活动总结
2014/07/08 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python
Linux磁盘管理方法介绍
2022/06/01 Servers