关于数据库:数据库视图索引约束

23次阅读

共计 2746 个字符,预计需要花费 7 分钟才能阅读完成。

视图(view):

从一个或几个根本表中依据用户须要而做成一个虚表

1)视图是虚表, 它在存储时只存储视图的定义, 而没有存储对应的数据
2)视图只在刚刚关上的一瞬间, 通过定义从基表中收集数据, 并展示给用户

视图与查问的区别:

1)存储上的区别: 视图存储为数据库设计的一部分, 而查问则不是.
2)更新限度的要求不一样
3)排序后果: 通过 sql 语句, 能够对一个表进行排序, 而视图则不行.

视图的特点:

1)视图中的数据并不属于视图自身,而是属于根本的表,对视图能够像表一样进行增删改查操作。
2)视图不能被批改,表批改或者删除后应该删除视图再重建。
3)视图能够被嵌套,一个视图中能够嵌套另一个视图。
4)视图的数量没有限度,然而命名不能和视图以及表反复,具备唯一性。

视图的性能:

1)将用户限定在表中的特定行上。
2)将用户限定在特定列上。
3)将多个表中的列联接起来,使它们看起来象一个表。
4)聚合信息而非提供详细信息,例如显示一个列的和或列的最大值和最小值。

视图的长处:

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‘%…%’;
  • like 语句不要以通配符结尾;

    对于 LIKE:在以通配符 % 和_结尾作查问时,MySQL 不会应用索引。

  • 不要在列上进行运算;

    索引列不能是表达式的一部分,也不是是函数的参数。

  • 尽量不要应用 NOT IN、<>、!= 操作;

    应尽量避免在 where 子句中应用!= 或 <> 操作符,否则将引擎放弃应用索引而进行全表扫描。

  • or 条件;

    用 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 基础知识,能够戳我一起交流学习!

正文完
 0