2020-04-11

一、数据库视图

(一)什么是视图?

视图是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。是由行和列组成的数据,他不在数据库中存储,而是在使用视图的时候引用基础表动态生成的。

(二)视图的特点

1、视图是由基本表产生的虚表

2、视图的列可以有多个基本表中的某些列组成

3、视图的创建和删除,不影响基本表

4、视图对内容的更新或者删除,直接影响基本表

5、当视图内容来自多个虚拟表时,则不允许删除

(三)视图的缺点:

1、性能差

把视图查询的结果转化成对基本表的查询,

2、修改限制

用户修改视图的数据,必须把它转化为对基本表的修改,简单的视图来说很简单,但是对于比较复杂的视图来说,可能是不允许修改

(四)视图的优点

1、提高查询效率 ;数据库中数据,查询非常复杂,创建视图可以避免多次编写sql语句出现的错误,

2、安全

公司中有些字段为保密字段,也可以通过创建视图来限制用户对某些字段进行操作

3、简单

不需要关心后面对应表的结构,

通常情况下,数据库是敏感,(脱敏测试)  不是每一个用户都能进行访问,但是某些用户需要读取某些表的部分数据,这时就可以定义指定条件的视图来限制用户只能访问其指定的列的数据,并提供一个视图接口进行访问,基于这种原理,大大简化查询语句编写以及复杂条件下的数据刷选,同时也延伸出视图中套用视图,因为视图是一个表,所有视图中引用视图从简化用户更复杂的数据筛选,用户只需要调用视图就可以得到经过复杂运算后的数据,提高开发效率同时也提高数据的安全性。

4、4.1创建视图

create    view  视图名称  as (sql语句)

如:create  view  a as ( select name , incoming ,dept2  from emp) ;

4.2 查看视图

show    create  view  视图名

如:

show    create  VIEW  b  ;

4.3修改视图

alter  view  视图名称  as (mysql语句)

4.4 删除视图

drop  view  视图名称

4.5查询单表视图 内容

select  *  from    视图名

注意点:对视图的操作与对基本表的操作都:是一样的,两者任意一方的字段值被修改都会实时影响到对方(如:修改视图的字段值,会同步到基本表的字段值;修改表也会同步到视图)

(1)=视图改字段无法修改

#alter  table  b change  name  name16 char(20) ;

(2)修改视图值,原表也修改值

例题:update  emp  set  age=100; 

update  b  set  name=kaifen;

二、索引

1、索引:是加速对表中数据的检索创建的一种分散的存储结构

2、定义:在关系型数据库中,索引是一种单独的,物理的对数据库表中一列或多列的值进行排序的存储结构,它是某个表中一列或多列的结合和相应的表中标识这些数据叶的逻辑指针清单。

3、索引的作用:

(1)快速取数

(2)保证数据记录的唯一性

(3)实现表与表之间的参照完整性

(4)在使用order  by ,group 子句进行数据检索时,利用索引可以减少排序和分组的时间

4、优缺点:

(1)优点 :4.1.1加快检索速度 

  4.1.2 减少分组和排序的时间

4.1.3  加速表和表之间的连接

4.1.4创建唯一索引,保证数据库表中每一行数据的唯一性

(2)缺点:

4.2.1 索引要占物理空间

4.2.2 对表进行增、删、改、查 ,索引也要动态维护,降低数据的维护速度

5、索引的类型

普通索引  index  (mul)

最基本的索引,没有任何的限制

主键索引  primary key  (pri)

是一种唯一索引,不允许为空

唯一索引  unique  (uni)

与主键索引类似:不同的就是,索引列的必训唯一,但允许有空值。

全文索引  fulltext

仅用于mylsam表,用于在一篇文章汇总,检索文本中信息,针对较大的数据,生成全文索引很耗空间,

组合索引

为了更多的提高mysql的效率可以建立组合索引,遵循"最左前缀"的原则

单列索引

聚焦索引

非聚焦索引

6、索引语句

(1)查询索引方法

1、1  show  index  from  emp ;

1、2  show  keys  from    emp ;

(2)创建索引 alter  table

2.1普通索引:

方法一:alter  table  表名  add  index  索引名(列名);

#alter  table  emp  add  INDEX  gz(name);

方法二:alter  table  表名  add  index  (列名)

2.2唯一索引

方法一:alter  table  表名  add  unique  索引名(列名);

alter  table  dept  add  unique a(dept1) ;(索引名不同:

方法二:alter  table  表名  add  unique (列名)

alter  table  dept  add  unique(dept3)  ;

2.3  主键索引

alter table  表名  add primary  key (列名)

如:alter  table  dept  add  primary  key ( dept1);

2.4全文索引

如: alter  table  emp  add  fulltext(dept2);

2.5多列索引(组合索引):

如:alter  table  emp  add  index (name ,age,dept2);

alter  table  emp  add  index  a (name ,age,dept2);

7.删除索引:

7.1删除主键索引

alter  table  表名  drop  primary  key;

如:

alter  table  dept  drop  primary  key ;

7.2 删除普通索引

7.2.1  ALTER  table  dept  drop  index  索引名

ALTER  table  dept  drop  index  dept3

7.2.2

8、create  建索引

单列创建:create  index  索引名 on  表名(列名);

多列创建:create  index  索引名  on  表名(列名1,列名2)

备注:只显示两个索引,不显示字段的索引

9、建表时用索引

如:create    table  xlh( id  int  primary  key  ,name  char(20)

备注:

三、外键:

1、外键用来干什么?

让一张表的数据不要太过于冗余,在数据库中是对表的关系进行解耦,尽量让表记录的数据单一化。

2、外键的主要作用?

保持数据的完整性和一致性

3、外键约束:foreign  key  表与表之间的约束

mysql数据库有两大数据库存储引擎:innodb和myisam (默认)

innodb  的类型查看:

查存储引擎:

show  table  status  from  “库名” where  name="表名" ;

创表语句:

#create  table  mm (id  int  primary  key  , name VARCHAR(20))engine=innodb ;(父表)

#create  table  nn (sid  int(10)  PRIMARY key , sanme varchar(20),constraint  fk_sid  FOREIGN  key(sid)  references  mm(id)) engine=innodb;(子表)

建表时外键的方法一:

格式:

constraint  外键名(自定义)  FOREIGN  key(子表的外键字段)  references  父表(字段)

constraint  fk_sid  FOREIGN  key(sid)  references  mm(id)

建表增加创建外键方法二:

格式:alter  table  表名  add  constraint  外键名  FOREIGN  key(子表字段名)  references  de父表(父表的列名) ;

alter  table  sc  add  constraint  zy  FOREIGN  key(sc_no)  references  dept(dept1) ;

alter  table  表名  add    增加外键

constraint  外键名  指定外键名

FOREIGN  key(子表字段名)  指定字段

references  dept(dept1)  引用外部表的主键

删除主键

alter  table  +表名 +drop  foreign  key  +外键名

alter  table  sc  drop  foreign key  zy ;

注意点:

(1)外键不能修改,只能删除

(2)primary key == 主键 等价于 唯一 (UNIQUE) 且 非空 (NOT NULL)

因为 Mysql 里面的自增列, 必须要依赖一个 主键 或者 唯一的键。

所以你的 SQL 里面要有一个

PRIMARY KEY ( `id` )

如果不加 PRIMARY KEY ( `id` ) 的话, 结果将像下面这个样子:

mysql> CREATE TABLE tab (

-> id INT AUTO_INCREMENT,

-> val VARCHAR(10)

-> );

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;

这行语句, 设置了3个表的属性

ENGINE = InnoDB 是设置表的引擎。 innoDB 引擎是比较新的, 支持外键 与 事务处理等特性。

CHARSET = gbk 是字符集

AUTO_INCREMENT =1 是那个 自增的 ID , 起始数值是 1

我把这样的表单写入数据库以后 留言板上的内容(中文)添加上去显示是“??”。

我查看结构的时候确实是gbk_chinese_ci 了

这个要调查一下,你的数据,是怎么插入的。

虽然你的数据库表的 字符编码, 是 gbk 了。

但是如果你的 数据,是通过 网页插入的, 而网页的编码是 utf8 之类的话。

那么最后保存的数据, 就可能是 ?? 了。

(2)父表和子表的关系:如果父表不存在的数据,在任何一张子表无法插入该数据相关的任何数据;

(3)两表关联,子表数据删除后,才能删除父表的对应数据

(4)当删除之前有自增长,先删除自增长

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容

  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,650评论 0 8
  • ORA-13000: 维数超出范围 ORA-13001: 维数不匹配错误 ORA-13002: 指定的级别超出范围...
    thinkact阅读 18,980评论 1 5
  • mysql和oracle语法都差不多,但还是有差别,查阅资料后我总结了一套完整的sql语句大全,供初学者学习 1....
    谭鱼鱼阅读 1,836评论 0 4
  • 系统用户: 1.sys system(sys权限最高) 2.sysman(操作企业管理器) 密码是安装的时候输入的...
    3hours阅读 1,553评论 0 0
  • 以前我相对会议中比较被动,今年决定重点反思与突破,从七个习惯开始看会议中自我定位。昨天线下小组会中提及:你为什么来...
    rainbow_72dd阅读 621评论 0 0