我是靠谱客的博主 愤怒小丸子,最近开发中收集的这篇文章主要介绍mysql对触发器的分号敏感_MySQL整理(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、MySQL操作表的约束

MySQL提供了一系列机制来检查数据库表中的数据是否满足规定条件,以此来保证数据库表中数据的准确性和一致性,这种机制就是约束。

(1)设置非空约束(NOT NULL),唯一约束(UNIQUE),字段默认值(DEFAULT)

create table表名(

uidint unique,(唯一性约束,UK)

namevarchar(5) not null,(非空约束,NK)

agevarchar(3) default ‘12‘(设置字段默认值)

);

(2)主键约束(相当于非空约束加上唯一约束)

create table表名(

uidint primary key,(主键约束)

namevarchar(5) not null,

agevarchar(3) default ‘12‘);

(3)多字段主键的设置使用constraint关键字

create table表名(

idint,

namevarchar(5) not null,

agevarchar(3) default ‘12‘,constraint pk_id_name primary key(id,name)

);

(4)字段值自动增加约束的关键字auto_increment

create table表名(

idint primary keyauto_increment,

namevarchar(5) not null,

agevarchar(3) default ‘12‘);

(5)外键约束的设置constraint,foreign key,references(设置FK约束时,设置FK的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为NULL)

create table表名(

idint,

namevarchar(5) not null,

agevarchar(3) default ‘12‘,constraint fk_id foreign key(id) references主键所在表(id)

);

二、索引的操作

(1)为什么使用索引:

数据库对象索引与书的目录相似,主要是为了提供从表中检索数据的速度,索引可以由表的一个或多个字段生成的键组成,通过MySQL查找时可以有效的找到与键相关联的字段,就类似从目录直接找到我们需要的内容,而不必去全文搜索。

索引的创建有利有弊,创建索引可以提高检索速度,但过多的索引会增加读磁盘的压力。

根据MySQL的查询文档发现,索引分为:普通索引,唯一索引,全文索引,单列索引,多列索引和空间索引。

(2)索引创建的场景:

经常被查询的字段,例如where或on语句后跟随的字段

需要分组查询的字段,例如group by后跟随的字段

存在依赖关系的父表与字表之间的联合查询,如主键和外键

设置唯一完整性约束的字段

注:查询中很少使用的字段,或者字段上有许多重复值的字段,不适合添加索引

(3)创建普通索引:index 索引名 (字段名)

create tablefuck(

idint,

namevarchar(5),

agevarchar(3) default ‘12‘,indexindex_id(id)

);

(4)查看索引方法:

show create table 表名 G

a110f9082263b5ff7372cfe6def76f91.png

explain select * from 表名 where 索引字段名=1G

c466bac85f78d9d99f212f84ed383f9e.png

(5)在已经存在的表上创建索引:

create index 索引名 on 表名(索引字段名);

create index index_name on fuck(name);

alter table 表名 add index 索引名(索引字段名);

alter table fuck add index index_age(age);

(6)创建唯一索引(unique),全文索引(fulltext)与普通索引的语法相同,只是在index关键字前加上 unique或fulltext

(7)创建多列索引:alter table 表名 add index 索引名(索引字段名1,索引字段名2,...);

注:多列索引,是指创建索引时,关联了多个字段,虽然可以通过所关联的字段查询,但只有查询条件中使用了所关联字段中的第一个字段,多列索引才会起作用。

(8)删除索引:drop index 索引名 on 表名

三、视图的操作

(1)为什么使用视图?

为了提高复杂SQL的复用性和表操作的安全性,MySQL提供了视图特性,所谓视图,实际上是一种虚拟表,其内容与真实的表相似,其并不在数据库中以存储的数据值存在,行和列的数据都来自其引用的基本表。

使用视图使程序员只需关心他们所需要的字段,并且可以屏蔽一些敏感字段,如工资等字段。

视图的特点如下:

a)视图是由基本表产生的虚拟表

b)视图的列可以来自不同的表

c)视图的建立和删除不影响基本表

d)对视图内容的更新直接影响基本表

e)当视图来自多个基本表时,不允许添加和删除数据

(2)创建视图的语法

create view 视图名 as select id ,age from 表名:create view fuck_view as select id ,age from fuck;

(3)删除视图

drop view 视图名

(4)修改视图

方式一(先删除后创建):drop view 视图名;create view 视图名 as select...

方式二(直接修改):create or replace view 视图名 as select...

方式三(alter语句):alter view 视图名 as select...

注:对视图的增删查改操作和基本表一致。

四、触发器介绍

(1)为什么使用触发器?

触发器(TRIGGER)是MySQL的对象之一,需要先声明后执行,但触发器的执行得由事件来触发,即在表发生更改时,自动进行一些处理。

MySQL提供了在触发delete,update,insert语句时,就会自动执行所设置的操作。触发器可以当做是拦截器的作用。

使用示例:单一条件触发器

创建名字为tri_employee的触发器,在每次往fuck表中添加数据时就会触发事件,即往employee表中也添加一条数据。

create trigger tri_employee before insert on fuck foreach rowinsert into employee(empno,empname,salary,hiredate,deptno) values(33,‘haha‘,688,NULL,4);

使用示例:多条件触发器

与单个条件的触发器不同的是,触发执行的多个语句嵌套在begin,end中间,用分号分隔,同时MySQL一般以分号作为结束符号,但在创建触发器时,需要以分号来分隔,为了解决该问题,可以使用关键字delimiter语句,来设置结束符号,如下面的语句,就将结束符号设置为$$

delimiter $$create trigger tri_employee before insert on fuck foreach rowbegin

insert into employee(empno,empname,salary,hiredate,deptno) values(33,‘haha‘,688,NULL,4);insert into employee(empno,empname,salary,hiredate,deptno) values(44,‘hehe‘,886,NULL,5);end$$

delimiter;

查看触发器:

(1)show triggers;

(2)进入系统表,查看系统表中存储的触发器:use information_schema;select * from triggers G

(3)系统表中查看指定触发器:select * from triggers where trigger_name=‘xxx‘ G

删除触发器:drop trigger 触发器的名称;

原文:http://www.cnblogs.com/jiyukai/p/7530379.html

最后

以上就是愤怒小丸子为你收集整理的mysql对触发器的分号敏感_MySQL整理(二)的全部内容,希望文章能够帮你解决mysql对触发器的分号敏感_MySQL整理(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部