目录
三.存储引擎及数据类型(重点:表类型适合的存储引擎;数据类型)
六.数据查询(*****)(重点:条件查询;连接查询;子查询;查询结果排序)
十二.事务的应用(重点:事务的自动提交;修改事务隔离性级别)
十三.事件(事件调度器)(重点:开启、创建、修改和删除事件)
一.初识MySQL
1.1启动、停止MySQL服务器
1.1.1通过系统服务器
1.1.2通过命令提示符DOS
systemctl start/stop mysqld;
service mysqld start/stop;
1.2连接MySQL服务器
mysql -uroot -p..;
1.3断开MySQL服务器
exit; /quit;
二.数据库操作(重点:创建;选择;删除)
2.1创建数据库(database或schema)
create database if not exists dbn
[character set = utf8
collater = 校对规则名] ;
2.2查看数据库
show databases [like ''] ;
2.3选择数据库
use dan;
2.4修改数据库
alter database dan
character set [=] utf8
collater = 校对规则名;
2.5删除数据库
drop database if exists dbn;
三.存储引擎及数据类型(重点:表类型适合的存储引擎;数据类型)
3.1查看支持的存储引擎
show engine [\G];
3.2查看默认的存储引擎
show variables like 'storage_engine%';
3.3数据类型三大类
数字类型、字符串类型、日期和时间类型
四.操作数据表(重点:创建表;修改表)
4.1创建数据表
create table if [not exsits] tbn(
id int primary key auto_increment
name varchar
);
4.2查看表结构
show [full] columns from tbn [from dbn] ;
show [full] columns from tbn.dbn;
describe tbn [列名];
4.3修改表结构
4.3.1添加新字段及修改字段定义(其他不改的要添加上防止丢失属性)
alter table tbn add age int [约束],modify name char;
4.3.2修改字段名
alter table dbn.tbn
change column name name2 char [约束];
4.3.3删除字段
alter table tbn drop age;
4.3.4修改表名
alter table tbn rename as tbn2;
4.4重命名表
rename table tbn2 to tbn[,tbn4 to tbn3];
4.5复制表
4.5.1只是表结构相同
create table [if not exists] tbn2
like tbn;
4.5.2表结构和内容都相同
create table [if not exists] tbn2
as select * from tbn;
4.6删除表
drop table [if exists] tbn2[,tbn];
五.表数据的增删改操作(重点:增删改)
5.1插入数据
5.1.1插入完整数据
insert into tbn values (1,'lisi');
5.1.2插入数据记录的一部分
insert into tbn(name) values ('lisi');
5.1.3插入多条记录
insert into tbn(id,name) values
(1,'liwu'),(2,'liliu'),(3,'liqi');
5.1.4使用insert...set语句插入数
insert into tbn
set id=1,name='lisi';
5.1.5插入查询如果
insert into dbn.tbn(id,name)
select id,name from tbn2;
5.2修改数据
updata dbn.tbn set name='wangwu'[,age=23]
where id=1;
update tbn set where ;
5.3删除数据
5.3.1通过delete语句删除
delete from tbn where id=1;
5.3.2通过truncate table语句删除
truncate [table] tbn;
//删除表中所有数据并且无法恢复
六.数据查询(*****)(重点:条件查询;连接查询;子查询;查询结果排序)
select distinct ifnull as
from ...
join ... on ...
where ...
group by ... having ...
order by desc/asc
limit ...
七.索引(重点:3种创建索引方法)
7.1创建索引
7.1.1在建立数据表时创建索引
单列索引
create table tbn(
id int
name varchar
index idx1(name[长度][desc/asc])
);
多列索引
create table tbn(
id int
name varchar
index idx1(id[(索引长度) asc/desc],..)
);
7.1.2在已建立的数据表中创建索引
create unique index idx
on tbn(id[(索引长度) asc/desc],..)
7.1.3修改数据表结构添加索引
alter table tbn
add unique index idx(id[(索引长度) asc/desc],..)
7.2删除索引
drop index idx on tbn;
查看索引
show index from tbn;
八.视图(重点:创建视图;修改视图)
8.1查看创建视图的权限
//查看用户是否有select和create view权限
select select_priv,create_view_priv
from mysql.user
where user='用户名';
8.2创建视图步骤
create view view1[属性清单] as
select ...
[with [cascaded/local] check option]
8.3视图操作
8.3.1查看视图
describe/desc view1;
show table status like'view1';
show create view view1;
//查看视图的定义
8.3.2修改视图
create or replace view view1 as
select ...
//or replace需要用户具有drop view权限
alter view view1 as
select ...[with [cascaded/local] check option]
8.3.3更新视图(就是对基本表的更新)
updata view1 set 视图字段名1=' ',.. [where ..];
8.3.4删除视图(需要用户具有drop view权限)
drop view if exists view1[restrict/cascade];
九.数据完整性约束(重点:定义完整性约束;命名完整性约束)
9.1命名完整性约束(constraint)
//主键约束名只能是primary
alter table tbn add constraint primary
primary key (id);
create table ...(
...
constraint fk_classid foreign key(classid)
references tbn(id)
...
);
9.2更新完整性约束
9.2.1删除完整性约束
alter table tbn drop foreign key fk_classid;
9.2.2修改完整性约束
alter table tbn
add constraint fk_classid foreign key(classid);
十.存储过程与存储函数(重点:创建存储过程;创建存储函数)
10.1存储过程
10.1.1创建存储过程
delimiter $ //更改语句结束标志
create procedure procn (in a int,out b char)
begin
...;
end$
10.1.2调用存储过程
call procn;
call procn(a,@b);
select @b;
10.2存储函数
10.2.1创建存储函数
delimiter $ //更改语句结束标志
create function funcn (in a int,out b char)
returns 返回值数据类型
begin
...
return ...
;
end$
10.2.2调用存储函数
select funcn[(输入参数)];
10.3变量的应用
10.3.1声明变量[指定默认值]
declare c int [default 10];
10.3.2为变量a赋值
set a=10;
select id into a from tbn where name=' ';
10.4光标(只能在存储过程或存储函数中使用)
10.4.1声明光标
declare cusn cursor for
select (不能含into子句)... ;
10.4.2打开光标
open cusn;
10.4.3使用光标
fetch curn into c,d;
//将查询的结果存入c和d,c和d必须在使用前定义
10.4.4关闭光标
close curn;
10.5查看存储过程与存储函数
show proc/function status like ' ';
show create procedure procn;
show create function funcn;
10.6删除存储过程与存储函数
drop procedure [if exists] procn;
drop function [if exists] funcn;
十一.触发器(重点:创建触发器;使用触发器)
11.1创建触发器
create trigger trin before/after insert/updata/delete
on tbn for each row
执行语句;
delimiter$
create trigger trin before/after insert/updata/delete
on tbn for each row
begin
执行语句列表1;
...;
...;
end$
11.2查看触发器
show triggers;
select * from information_schema.triggers
[where trigger name=' '];
11.3删除触发器
drop trigger trin;
11.4触发器中不能包含start transaction、commit或rollback等字段,
也不能包含call语句
十二.事务的应用(重点:事务的自动提交;修改事务隔离性级别)
12.1创建一个InnoDB类型的数据表
create table tbn (...) tybe=InnoDB;
alter table tbn type=InnoDB;
12.2
初始化事务
start transaction;
提交事务
commit;
撤销事务(事务回滚)
rollback;
12.3事务行为
12.3.1查看自动提交
select @@autocommit;
12.3.2关闭自动提交
set autocommit=0;
12.4事务的隔离级别
12.4.1查看当前事务的隔离级别
select @@tx_isolation; 或
select @@transaction_isolation;
select @@global.tx_isolation; 或
select @@global.transaction_isolation;
12.4.2修改事务的隔离级别(4种)
read uncommitted
read committed
repeatabl read
serializable
(级别越高,安全性越高,但是性能越低)
set session transaction isolation level repeatable read;
set global transaction isolation level repeatable read;
repeatable repeatable serializb serializable
12.5伪事务(应用表锁来替代事务)
12.5.1为指定表添加锁定
lock table tbn read/write;
lock tables tbn read,tbn2 write;
12.5.2释放锁
unlock tables;
//释放所有当前处于锁定状态的数据表
12.6补充
写 锁释放 读 锁释放
行共享 无关系 不加
行排他 事务结束 行共享 读完后
行排他 事务结束 行共享 事务结束
表排他 事务结束 表共享 事务结束
A写未提交-B读-A回滚-B读出脏数据
B读释放锁未提交-A写已提交-B再读内容不一
B读未提交-A写添加行已提交-B再读记录不一
十三.事件(事件调度器)(重点:开启、创建、修改和删除事件)
事件调度器是定时触发执行的,可以看作是“临时触发器”
13.1查看事件是否开启
show variables like 'event_scheduler';
select @@event_scheduler;
13.2开启事件
13.2.1通过设置全局参数修改
set global event_scheduler = on;
13.2.2更改配置文件
修改配置文件my.ini(window系统)或者my.cnf(linux系统),
找到[mysqld],在下面添加
event_scheduler = on
13.3创建事件
creata event if not exists evn
on schedule 时间(*****可以是一个子句)
[on completion [not] preserve] //默认是not,即一次执行不循环
[enable/disable/disable on slave] //默认是enable,即创建后即为活动
[comment '注释']
do sql语句
schedule常用:
每隔5秒种执行 on schedule every 5 second
每隔1分钟执行 on schedule every 1 minute
每天凌晨1点 on schedule every 1 day starts date_add(
date_add(curdate(),interval 1 day),interval 1 hour)
每个月的第一天凌晨1点
on schedule every 1 month starts date_add(
date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour)
每3个月,从现在起一周后开始
on schedule every 3 month starts current_timestamp + 1 week
每十二个小时,从现在起三十分钟后开始,并于现在起四个星期后结束
on schedule every 12 hour starts current_timestamp +
interval 30 minute ends current_timestamp + interval 4 week
13.4修改事件
alter event evn
...
do sql语句;
临时关闭事件
alter event evn disable;
13.5删除事件
drop event if exists evn;