SQL课堂笔记--索引和视图
2017.11.16
5.11 .认识索引
1.索引的概念:
-(1)加快数据检索速度
-(2)加快表与表之间的连接速度
-(3)在使用order by 和 group by子句检索时,可以显著地减少查询分组的
-(4)
2.索引的类型:
唯一索引:不会有两行记录相同
单列索引:索引不唯一
复合索引:根据多列组合创建的
主键索引:为表定义一个主键,将会自动地在主键所在列上创建的唯一索引
根据索引的顺序与数据表的物理顺序是否相同分:
聚集索引:是根据数据行的键值,在表或视图中排序和存储数据行,每个数据库中的每个表只能有一个聚集索引.
非聚集索引:
特点:1.表的物理存储顺序与索引顺序不同,即表的数据并不是按照索引排列.
2.不会影响数据表中的记录实际存储顺序
3.一个表最多可以创建249个非聚集簇索引
例1:按'姓名'创建聚集索引:
3.创建唯一索引:
特征:不允许具有相同的索引值
4.复合索引:
特征:可以为唯一索引,也可以为不唯一索引
最多可以有16个字段组合到一个复合索引
索引的使用:
1.考虑创建索引的列:
-(1).主键列
-(2).经常用在连接的列
-(3).经常进行范围查询的列
-(4).经常需要排序的列上
2.不考虑创建索引的列:
-(1).很少或从来不在查询中引用的列
-(2).选择性低(重复值多)的列
-(3).小表(记录数据很少的表)
-(4).更新操作比较频繁的列
创建索引:
索引名字以'IX_'开始
语法:
create [unique][clustered|nonclustered] index 索引名 on {表名|视图名} (列{asc|desc}[,...n])
unique:表示索引的列必须唯一
clustered:表示索引为聚集索引
nonclustered:表示索引为非聚集索引,默认
创建聚集索引:
create unique clustered index IX_sno on student(sno)
创建非聚集索引:
create unique nonclustered index IX_sname on student(sname) --nonslustered可省略
创建组合索引:
create clustered index IX_sc_sno_cno on sc (sno,cno)
对索引的管理:
使用系统存储过程:sp_helpindex表名:查看索引信息
1.查看索引
例:查看学生表创建的索引信息:
sp_helpindex student
2.删除索引
dropindex {表名.索引名|视图名.索引名}[,...n]
例:删除学生表姓名列上的索引:
dropindex student.IX_sname
5.31.认识视图
视图的概念:是由一个或多个数据表或视图到处的虚拟表或查询表,是关系数据库系统提供给用户以多种角度...
视图的优点:
创建视图:
create view 视图名[(列名1,列名2[,...n])] as <select语句>
例:创建女同学的视图,包括学号,姓名,性别和系部信息
create view gril_view as select sno,sname,ssex,sdept from student where ssex='女'
管理视图:
查看 select * from 视图名
1.修改视图:
alter view 视图名[(列名1,列名2[,...n])] as <select语句>
alter view gril_view as select sno,sname,ssex,sdept from student where ssex='女' and sdept='计算机'
2.视图更名:
sp_rename 旧名字,姓名字
3.删除视图:
drop view 删除视图名
4.使用视图:
select * from 视图名
练习:
use student
go
--1、在学生表的姓名列上创建唯一的非聚集索引。
create unique nonclustered index IX_sname on student(sname)
--2、在学生成绩表的学生编号列和课程编号列上创建组合的聚集索引。
create clustered index IX_sc_sno_cno on sc (sno,cno)
--3、查看学生表上的索引信息。
sp_helpindex student
--4、删除学生表姓名列上的索引。
dropindex student.IX_sname
--5、创建女同学的视图(girl_view),包括学号、姓名、性别和专业等信息。
create view gril_view as select sno,sname,ssex,sdept from student where ssex='女'
--6、修改任务5创建的“girl_view”视图的定义信息,将其改为显示所有电子专业的女生信息。
alter view gril_view as select sno,sname,ssex,sdept from student where ssex='女' and sdept='计算机'
--7、使用系统存储过程SP_RENAME将视图“GIRL_VIEW”改为“VIEW_GIRL”。
sp_rename GRIL_VIEW,VIEW_GILE
--8、查询视图VIEW_GIRL的所有信息。
select * from VIEW_GIRL
--9、删除视图VIEW_GIRL。
drop view VIEW_GIRL
use job
go
--2 使用create index语句为name字段创建索引index_name。
create index index_name on workInfo(name)
--3 、使用create index语句在type和address上创建名为index_t的索引。
create index index_t on workInfo(type,adress)
--4、删除workInfo表的唯一性索引index_id。
dropindex workIfon.index_id
use example
go
--2、 在College表上创建视图college_view。视图的字段包括College_num、Colleget_name、College_age和department。
create view college_view as select number,name,age,department from college
--3、 查看视图college_view的详细结构。
select * from college_view
--4 、修改college_view视图,使其显示专业为计算机的信息,其他条件不变。
alter view college_view as select number,name,age,major from college where major='计算机'
--5 、删除视图college_view。
drop view collage_view
转载于:https://www.cnblogs.com/TuringShine/p/7843739.html
SQL课堂笔记--索引和视图相关推荐
- SQL基础(3)-索引/触发器/视图操作
本文只列出索引,触发器,视图的简单操作语句 1.索引 a.创建 create index idx_name on fdh_client_info(name); --普通索引(单列索引) create ...
- 数据库原理与应用(SQL Server)笔记 第五章 索引和视图
目录 前言 一.索引 (一)索引的概念 (二)索引的分类 (三)索引的操作 1.创建 2.查看 2.修改 3.删除 二.视图 (一)视图的概念 (二)视图的分类 (三)视图的操作 1.创建 2.查询 ...
- access 导入 txt sql语句_从零开始学习 MySQL 系列索引、视图、导入和导出
阅读本文大概需要 8 分钟 前言上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识.作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会 ...
- 使用 SQL Server 2000 索引视图提高性能1
什么是索引视图? 许多年来,Microsoft SQL Server" 一直都提供创建虚拟表(称为视图)的功能.在过去,这些视图主要有两种用途: 提供安全机制,将用户限制在一个或多个基表中的 ...
- oracle图书操作、sql语句查询+授权、视图、索引、表操作
oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...
- SQL Server基础操作(此随笔仅作为本人学习进度记录四 !--索引和视图)
约束.索引.视图.约束:(要求字段不能为空,必须填写内容,就是非空约束)not null(非空约束).unique(唯一性约束).primary key(主键约束).foreign(外键约束).che ...
- SQL server学习(四)T-SQL编程之事务、索引和视图
今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...
- web漏洞“小迪安全课堂笔记”SQL注入
文章目录 前言 SQL注入是什么? 注入原理 数据库结构 mysql数据库 参数类型 请求方法 如何判断注入点? 判断注入 1.信息收集 2.数据注入 3.高权限注入 魔术引号开关 跨库注入 获取所有 ...
- Hibernate课堂笔记
Hibernate课堂笔记 Hibernate第一天 一:hibernate的基础知识 Hibernate的整体思想就是"操作对象的过程,就是操作数据库表的过程".如图: 1:Hi ...
- (B站动力节点老杜MySQL教程)MySQL课堂笔记-day03.txt
文章目录 文件来源/资料下载: MySQL课堂笔记-day03.txt 1.约束 1.1.唯一性约束(unique) 1.2.主键约束 1.3.外键约束 2.存储引擎?(整个内容属于了解内容) 2.1 ...
最新文章
- 苹果手表可以运行 ruby 脚本了
- CES Asia专题|微鹅展示无线充电,智能手机的无线充电时代何时来临?
- Spring IOC快速入门
- hdu 4588 Count The Carries 南京邀请赛
- aspnetcore源码学习(一)
- QT 应用程序关闭某个窗口时,关闭打开的所有其他窗口并退出程序 【转】
- bzoj2431:[HAOI2009]逆序对数列
- 为什么设置二级路由器要断开WAN?
- 如何用 RFM 模型扒出 B 站优质 UP 主?| 附实战代码
- @程序媛,为什么到今天女性薪资依然不如男?
- 服务器需不需要虚拟内存,服务器要不要虚拟内存
- 小米手机微信指纹支付上传服务器吗,为什么小米手机不支持微信指纹支付,客服这样回答...
- 你的第一个 iOS 应用程序: 100% 的编程方式
- UVA - 10129 Play on Words(欧拉回路)
- CPU指令执行及流水线(超标量、多发射、乱序执行)
- 文章重复率很高,4个快速修改的小技巧,赶快用起来
- pythonmsgbox怎么使用_弹出MsgBox后Python是否继续执行代码?
- 学习HTML+CSS知识点
- Ubuntu16.04 64位系统下面安装JDK1.7
- sql自动生成汉语拼音和首字母函数[转载]
热门文章
- 在 Linux 平台中调试 C/C++ 内存泄漏方法
- js 跨域访问 找了好长时间
- 【转】三层架构的业务逻辑层存在的意义
- 如何解决第三方JavaScript引入工程后报错
- 06. Explicitly disallow the use of compiler-generated functions you do not want
- docker学习记录 docker 脚本(一)
- 数据结构——>单向环形链表
- numpy常用函数总结 | 菜鸟教程
- mysql 并发 加锁_MySQL的并发控制与加锁分析
- python使用pip安装_Python pip 安装与使用