MySQL数据库相关操作
- MySQL简介
- 表的相关操作:创建、删除表
- 表字段的相关操作:添加字段、删除字段、修改字段、修改类型
- 触发器
- 创建触发器
- 触发器类型
- 存储过程
- 存储过程的优点
- 创建存储过程(带参数、不带参数)
- 调用存储过程
- MySQL索引
MySQL
简介:
MySQL是一个关系型数据库管理系统,目前属于ORACLE。采用SQL标准化语言,并且体积小、速度快、成本低和开源的特点,搭配PHP、Apache可组成良好的开发环境。
MySQL语法:
表操作:创建表、删除表(彻底删除)
create table t_user(
id int primary key auto_increament comment '自增主键id',
name varchar(12) not null comment '姓名',
……
);
drop table t_user;
字段操作:修改字段类型、修改字段名称、添加字段、删除字段
alter table t_user
modify column age varchar(12);
change name XXname varchar(12) not null comment '修改名称';
add column age int not null comment '年龄' after name;
drop name;
触发器(Trigger):
触发器是与表有关的数据库对象,在满足定义的条件时候触发,并执行触发器中定义的语句集合。
触发器可以协助应用在数据库端的完整性。
例如:
有一张【用户表】和【日志表】,当一个用户创建时,就需要在日志表中创建一条相关的记录。触发器不仅能够添加,还能进行删除、修改。
创建触发器:
语法:
create trigger 【tr_触发器名称】 【触发器类型】 on 【对哪一张表创建触发器】for each row
begin
执行语句
end
-
-
- for each row:用来表示只要目标表中任何操作符合该触发器的类型,它都将执行该触发器。
-
例子:
create trigger tr_userInfo after INSERT on t_studentinfo for each row
begin
declare acounts varchar(12) character set utf8;#声明两个变量
declare times varchar(12) character set utf8;
set acounts = NEW.acount;#获取到插入的值
set times = '2018-4-15';
insert into t_studentinfolog(acount,time) value(acounts,times);
end
触发器类型:
-
-
-
- 执行之前触发:Before Insert、Update、Delete;
- 执行之后触发:After Insert、Update、Delete;
-
-
注意:
-
-
-
- NEW.字段名:获取插入数据的acount字段数据;
- declare:用来声明变量;
- OLD.字段名:获取删除数据的字段数据;
-
-
存储过程:
SQL语句需要先编译后执行,然而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,程序员在通过指定存储过程名称并且给定所需 参数(存储过程存在参数的话)来进行调用。
存储过程优点:
-
-
-
- 增强SQL语句的灵活性和功能;
- 标准组件式编程;
- 较快的执行速度;
- 减少网络流量;
- 作为一种安全机制来使用;
-
-
创建存储过程:
语法:
create procedure 【存储过程名】(参数,,,)
begin
语句;
end
例子:根据id查询数据表中的数据量
create procedure pro_student_count()
begin
select COUNT(id) from t_studentInfo;
end
调用存储过程:
call pro_student_count();
例子:根据学号、姓名为条件创建存储过程
create procedura pro_query_student(in _name varchar(12),in _acount varchar(12))
begin
select * from t_studentInfo where name=_name and acount =_acount;
end
call pro_query_student('韩雨舫','14612200036');
注意:
- 在记忆存储过程时,可以将它看作是自定义的一个函数,存储过程的名称就是函数名,它可以带参数,也可以不带参数,但是一定要加“()”;
- 其中的参数 需要使用 IN 关键字进行定义说明,参数需要指定数据类型;
MySQL索引
简介:在MySQL数据库中,如果数据库没有创建索引,那么假如有100万条数据,那么在数据库进行查询的时候,它会逐一的进行查找搜索,而如果创建了B-Tree索引,将会大大的减少数据库查询的时间。
MySQL索引包括:
-
-
- 普通索引:最基本的索引,它没有任何的限制;
- 直接创建表索引:create index 【索引名称】 on 【为哪张表创建索引】(【对应字段】(【字段长度】));
- 例子:create index indexAcount on t_studentInfo(acount(12));
- 修改表结构创建索引:alter table 【表名】add index 【索引名】(【字段】(字段类型长度));
- 注意:
- 对应字段中的字段长度,如果是varchar类型,length可以小于实际长度;
- 如果字段类型为blob、text,必须指定同长度的length;
- 删除索引:drop index 【索引名称】 on 【所在表表明】
- 例子:drop index indexAcount on t_studentInfo
- 唯一索引:它与普通索引类似,但是索引列的值必须是唯一的,而且允许为空;
- 直接创建表索引:create unique index 【索引名称】on 【对应的表】(【对应字段】(【字段长度】));
- 例子:createunique index indexAcount on t_studentinfo(acount(12));
- 全文索引(FULLTEXT):fullText索引仅可用于MyISAM表中,它可以从char、varchar或text列创建索引。所以对于大容量的全文索引,生成索引时将会耗费大量硬盘空间;
- 直接创建语法:create FULLTEXT index 【索引名称】on 【对应的表】(【对应字段】);
- 修改表结构添加索引:alter table 【对应的表】add fulltext index 【索引名称】(【对应字段名】);
- 组合索引:因为在平时查询的时候,会有条件限制,所以就需要添加组合索引来优化查询效率;
- 直接创建:create index 【索引名称】on 【所在表名称】(【字段一】(【类型长度】),【字段二】(【类型长度】),……);
- 例子:create index index_name_pwd on t_studentInfo(name(12),pwd(18));
- 普通索引:最基本的索引,它没有任何的限制;
-