一,基础命令行
## 命令行(管理员) Mysql -uroot -p
##密码 123456
二,常用sql语句
## 建库 create database XXX。
## 切换库 use XXX;
## 查看库 show databases
## 删除库 drop database xXX
## 建表 Create table()
## 展示所有表 Show tables;
## 展示xxx表 Show create table XXXX;
## 展示表 Select * from XXX。
## 展示框架 Desc XXXX。
## 删除xxx表 drop table XXX
## 不重复的 distinct
## 降序 select * from xxx order by xxx desc
## 升序 select * from xxx order by xxx asc
## 只显示前num行 select * from xxx limit num
## 插入 insert
## insert into 表名 (字段…,…) values(值…,…)
## insert into 表名 values(值…,…)
## 更新 update
## 删除 delete
三,查找目标
## SELECT 查询字段 FROM 表名 WHERE 条件(条件查询)
##
## 查找对应目标
## 模糊查询
四,函数
## --------1,聚合函数
## COUNT 统计函数
## MAX(*) 最大值函数
## MIN (*) 最小值函数
## AVG(*) 平均值函数
## SUM(*) 累计值函数(∑)
## 分组 group by having
1.对表中记录按照字段进行分组
2.用聚合函数对每个分组进行查
询或计算
五,链接表
链接多表a,b,c
SELECT * FROM a,b,c
WHERE a.sno=b.sno AND b.cno=c.cno;
(即将两表相同的部分链接起来,放在条件中)
## 联合查询union
将两个或两个以上的select语句的
查询结果合并成一个结果集合显示
## 交叉查询 cross join
返回连接表中所有数据行的笛卡尔积
## 内连接inner join
特点
1.两表中找到链接条件
2.找链接条件相匹配的行
## 外连接(左连接 右连接 全连接)
1.列出与连接条件匹配的行
2.列出左表,或者右表,或者整个表中 所有符合搜索条件的数据行
## 子查询 查询的条件是另一个select语句的结果
例子
六,delimiter
delimiter// 切换结束符为//
七,SQL语句
开启手动处理事务模式
set autocommit = false;
展示事务模式
## show variables like 'autocommit';
## 0 为关闭,1为开启
## set autocommit=0;
## 开始事务(推荐)
## start transaction;
## 查看当前表的数据
## select * from t_stu_detail;
## 删除整张表的数据
## delete from t_stu_detail;
## 查询该表数据,发现显示删除后的结果
## select * from t_stu_detail;
## 回滚
## rollback
## 查看当前表的数据,发现又回来了
## select * from t_stu_detail;
## 删除整张表的数据
## ## delete from t_stu_detail;
## 提交事务
## commit;
## 查看当前表的数据,发现真删除了
## select * from t_stu_detail;
## 插入一条记录
## INSERT INTO t_stu_detail VALUES
## (1, '123456789012345678', '1990-01-21', '12345678901', 'a@163.com', '北七家');
## 保存还原点1
## savepoint point1;
## 插入一条记录
## INSERT INTO t_stu_detail VALUES
## (2, '123456789012345677', '1990-02-21', '12345678902', 'b@163.com', '北七家');
## 保存还原点2
## savepoint point2;
## 查看当前效果
## select * from t_stu_detail;
## 回滚到某个还原点
## rollback to point1;
## 提交事务
## commit;
## 清空表
## truncate t_stu_detail;
## 回滚,对于truncate无法回滚
## rollback;
## 修改表结构
## alter table t_stu_detail add description varchar(50);
## 回滚,对于修改表结构的语句无法回滚
## rollback;
八,索引
【总结步骤】
第一步:
开启观察
set profiling =on;
第二步:
建立索引
create index 名字 on 表名(字段)
(****查看索引***
show index from 表名
)
第三步
使用索引字段进行查询
select * from aa where ok="字段"
第四步
删除索引
drop index 索引名 on 表名
第五步
使用索引字段进行查询
select * from aa where ok="字段"
第六步
查看sql语句 观察索引的速度
show profiles;
九,触发器
一、基本概念
触发器是一种特殊类型的存储过程,它不同于存储过程,主要是通过事件触发而被执行的,即不是主动调用而执行的;而存储过程则需要主动调用其名字执行
触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变(增、删、改)的时候,系统会自动触发代码并执行。
二、作用
- 可在写入数据前,强制检验或者转换数据(保证护数据安全)
- 触发器发生错误时,前面用户已经执行成功的操作会被撤销,类似事务的回滚
三、创建触发器
基本语法
delimiter 自定义结束符号
create trigger 触发器名字 触发时间 触发事件
on 表
for each rowbegin-- 触发器内容主体,每行用分号结尾
end自定义的结束符合
delimiter;
on 表
:触发对象,触发器绑定的实质是表中的所有行,因此当每一行发生指定改变时,触发器就会发生
for each
触发时间
当 SQL 指令发生时,会令行中数据发生变化,而每张表中对应的行有两种状态:数据操作前和操作后
- before:表中数据发生改变前的状态
- after:表中数据发生改变后的状态
PS:如果 before 触发器失败或者语句本身失败,将不执行 after 触发器(如果有的话)
触发事件
触发器是针对数据发送改变才会被触发,对应的操作只有
- INSERT
- DELETE
- UPDATE
注意事项
- 在 MySQL 5 中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一,即同一数据库中的两个表可能具有相同名字的触发器
- 每个表的每个事件每次只允许一个触发器,因此,每个表最多支持 6 个触发器,before/after insert、before/after delete、before/after update
四、查看触发器
1.查看全部触发器
语法:show triggers;
2.查看触发器的创建语句
语法:show create trigger 触发器名字;
五、触发触发器
基本语法:drop trigger 触发器名字
触发不是自动手动触发的,而是在对应的事件发生后才会触发。比如我们创建的触发器,只有在对订单表进行数据操作的时候,触发器才会执行
六、删除触发器
触发器不能修改,只能删除
语法:drop trigger + 触发器名字