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连接查询的实用教程
Apr 07 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
Jun 30 SQL Server
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
Jul 07 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
SQLServer之常用函数总结详解
Aug 30 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
SQL Server使用T-SQL语句批处理
May 20 SQL Server
SQL Server中的逻辑函数介绍
May 25 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
SqlServer常用函数及时间处理小结
May 08 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
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Python将多个excel表格合并为一个表格
2021/02/22 Python
python学生管理系统开发
2019/01/30 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
NET程序员上机面试题
2015/05/23 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
自我鉴定书面格式
2014/01/13 职场文书
打架检讨书100字
2014/01/19 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
工作试用期自我评价
2015/03/10 职场文书
基于Python实现nc批量转tif格式
2022/08/14 Python