从一个或几个基本表中根据用户须要而作成一个虚表java
1)视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据
2)视图只在刚刚打开的一瞬间,经过定义从基表中搜集数据,并展示给用户sql
视图与查询的区别:数据库
1)存储上的区别:视图存储为数据库设计的一部分,而查询则不是.
2)更新限制的要求不同
3)排序结果:经过sql语句,能够对一个表进行排序,而视图则不行.数据结构
视图的特色:数据库设计
1)视图中的数据并不属于视图自己,而是属于基本的表,对视图能够像表同样进行增删改查操做。
2)视图不能被修改,表修改或者删除后应该删除视图再重建。
3)视图能够被嵌套,一个视图中能够嵌套另外一个视图。
4)视图的数量没有限制,可是命名不能和视图以及表重复,具备惟一性。函数
视图的功能:学习
1)将用户限定在表中的特定行上。
2)将用户限定在特定列上。
3)将多个表中的列联接起来,使它们看起来象一个表。
4)聚合信息而非提供详细信息,例如显示一个列的和或列的最大值和最小值。设计
视图的优势:code
1)视图着重于特定数据。
2)简化数据的操做,易维护。
3)视图能够限定查询数据。排序
视图的建立 :
建立视图:
语法:
CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;
更新视图:
语法:
CREATE OR REPLACE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;
删除视图:
语法:
DROP VIEW view_name
索引的分类:
1)普通索引
这是最基本的索引,它没有任何限制。普通索引(由关键字KEY或INDEX定义的索引)的惟一任务是加快对数据的访问速度。
建立方式:
CREATE INDEX indexName ON mytable(username(length));
若是是CHAR,VARCHAR类型,length能够小于字段实际长度;若是是BLOB和TEXT类型,必须指定 length,下同。
ALTER mytable ADD INDEX [indexName] ON (username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
DROP INDEX [indexName] ON mytable;
2)惟一索引
它与前面的普通索引相似,不一样的就是:普通索引容许被索引的数据列包含重复的值。而惟一索引列的值必须惟一,但容许有空值。若是是组合索引,则列值的组合必须惟一。
建立方式:
CREATE UNIQUE INDEX indexName ON mytable(username(length))
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
3)主键索引
它是一种特殊的惟一索引,不容许有空值。一个表只能有一个主键。
通常是在建表的时候同时建立主键索引:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
主键索引和惟一索引的区别:
①主键必定会建立一个惟一索引,可是有惟一索引的列不必定是主键;
②主键不容许为空值,惟一索引列容许空值;
③一个表只能有一个主键,可是能够有多个惟一索引;
④主键能够被其余表引用为外键,惟一索引列不能够;
⑤主键是一种约束,而惟一索引是一种索引,是表的冗余数据结构,二者有本质的差异
4)组合索引
为了进一步提升MySQL的效率,就要考虑创建组合索引。组合索引的使用要遵照“最左前缀”原则'。
索引的优势:
1.大大加快数据的检索速度;
2.建立惟一性索引,保证数据库表中每一行数据的惟一性;
3.加速表和表之间的链接;
4.在使用分组和排序子句进行数据检索时,能够显著减小查询中分组和排序的时间。
索引的缺点:
1.索引须要占用数据表之外的物理存储空间
2.建立索引和维护索引要花费必定的时间
3.当对表进行更新操做时,索引须要被重建,这样下降了数据的维护速度。
索引的实现方式:
1)B+树
用这个树的目的和红黑树差很少,也是为了尽可能保持树的平衡;
2)散列索引
就是经过散列函数来定位的一种索引,不过不多有单独使用散列索引的,反而是散列文件组织用的比较多。
3)位图索引
位图索引是一种针对多个字段的简单查询设计一种特殊的索引,适用范围比较小,只适用于字段值固定而且值的种类不多的状况,而且只有在同时对多个这样的字段查询时才能体现出位图的优点。
索引使用:
对于LIKE:在以通配符%和_开头做查询时,MySQL不会使用索引。
索引列不能是表达式的一部分,也不是是函数的参数。
应尽可能避免在 where 子句中使用!=或<>操做符,不然将引擎放弃使用索引而进行全表扫描。
用 or 分割开的条件, 若是 or 前的条件中的列有索引, 然后面的列中没有索引, 那么涉及到的索引都不会被用到。
1)主键约束: 要求主键列数据惟一,而且不容许为空。
格式为:
alter table 表格名称 add constraint 约束名称 增长的约束类型 (列名)
2)惟一约束 :要求该列惟一,容许为空,但只能出现一个空值。
格式:
alter table 表名 add constraint 约束名称 约束类型(列名)
3)检查约束: 对该列数据的范围、格式的限制(如:年龄、性别等)
格式:
alter table 表名称 add constraint 约束名称 增长的约束类型 (列名)
4)默认约束 : 该数据的默认值,如在数据库里有一项数据不少重复,能够设为默认值。
格式:
alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名
5)外键约束:须要创建两表间的关系并引用主表的列
格式:
alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)
谢谢你们阅读,若是想要知道更多java基础知识,能够戳我一块儿交流学习!