MySQL个人理解学习笔记cmd连接,子查询,limit,视图,触发器,储存过程【诗书画唱】
个人总结的创建触发器的语法理解翻译:
create trigger(创建一个触发器) s1(触发器名)
after insert on dingdan(在(订单)表添加数据的时候触发触发器)
for each row(第三句固定的不用管,个人理解翻译:遍历每一行)
begin(开始位置)
update shangpin set sp_num=sp_num-new.sp_buynum where sp_id=new.sp_id;(触发的事件是减少商品表3瓶果粒橙,SQL语句)
end;(结束)
触发器例子题目和答案:
创建触发器,功能为:当执行“用户张三买了果粒橙3瓶添加订单”的SQL语句时,相应的商品的数量减少3瓶。
create trigger s1
after insert on dingdan
for each row
begin
update shangpin set sp_num=sp_num-new.sp_buynum where sp_id=new.sp_id;
end;
drop trigger s1
个人的总结:
一些储存过程中写的没有传的参数等的方法函数,用call来调用无参的方法时,可以“储存过程的方法名()”或“储存过程的方法名”。

cmd中启动MySQL
net start mysql
(命令开启MySQL)
登录MySQL
mysql -uroot -proot
查看数据库
show databases;
数据库:
按照数据结构来组织、存储管理数据的仓库
为什么要使用数据库?
1.查找数据方便
2.节省空间
卸载mysql没有卸载完成
1.控制面板卸载mysql服务
2.文件保存目录删掉
3.隐藏mysql目录也要删
MySQL的数据类型:
int:整形
varchar():字符串
boolean:是否
text:大文本
timestamp:时间戳
bolb:二进制
mysql约束:
唯一:unique
自增约束:auto_increments
主外键:foreign key
外键也称为参照完整性,外键表的信息参照着主键表的信息进行设置,主键表没有的信息外键
(个人的理解:选好主表很重要,一般列名多的表为主表)
表示不能使用的非空约束:not null
主键约束:primary key
默认值约束:default
on delete cascade:在设置外键的时候,设置级联删除
MySQL增删改查语法:
增加数据:insert into 表名(列名1,列名2) values(值1,值2)
修改语法:update 表名 set 列名1=值1 where 条件表达式
删除语法:delete from 表名 条件表达式
删除表:drop table 表名
清空表:truncate table sss
基本查询:select * from 表名
查询指定的内容:select 列名 from 表名
列名起别名:select 列名 as 名称 from 表名
select 列名 名称 from 表名
去除重复:select distinct name,typename from sss
简单多表查询:select * from 表1,表2 where 表1.id=表2.id
子查询分为3种“子句”:
where后当条件
将查询结果当做比较条件
select * from 表名 where 列名>(select 列名 from 表名)
from后当数据源
exists后当条件
where子句:后跟一个表达式,表达式返回一个true或者false的数据
表达式可以是:
>,<,=,!=,>=,<=
between...and....
in(内容1,内容2)
like:%(匹配0到任意个字符数据) _(代表一个字符)
&&,||,and,or,is not null,is null
order by:
排序....默认是升序(ASC) 倒序(DESC)
select top 3 from sp
limit后可以跟1个或者两个数字,
跟1个数字的时候是从0到第几条数据。
跟两个的时候就是从第一个参数开始的位置查询第二个参数的个数。
个人的理解:
SQL语句结尾加limit 1,表示取第1条数据.

SQL语句结尾加limit1,6表示取第1条到数据到第6条数据。

分组:
group..by..:按照某种特征将其分为一组,分组一定要和聚合函数
一起使用,否则分组没有意义
having:过滤条件,在进行分组后进行条件过滤
视图:视图是由查询结果定义的一张虚拟表
视图的作用:
1.使用视图可以简化查询
2.可以进行权限控制
3.大数据分表时可以使用
创建视图的语法:
create view 视图名 as sql 语句
对于视图的修改:
修改表的源数据是可以改变视图的内容的,但是修改视图的内容不一定会。
影响表的源数据,如果视图是多个列计算的结果的时候是不会影响的,只有视图的
结果是指定源数据是那一列才会该表源数据的内容。
触发器的概念:
触发器是与表有关的数据库对象,在满足定义条件时触发,
并执行触发器中定义的语句集合。
一般是在进行增删改表的时候触发。
触发器语法:
create trigger 触发器名称
after insert/update/delete on 那张表添加触发器
for each row //固定死的不用管
begin //开始
触发的sql语句事件;
end;
存储过程:
1.可以完成比较复杂的运算
2.SQL编程的代码可重复使用
3.执行的速度相对快一些
(每次写的sql语句数据库会将其编译成函数,
存储过程数据库只会编译一次之后下次用的时候就不会再编译了)
存储过程语法:
create procedure 存储过程名字(先写参数,后写类型)
begin
做存储过程的sql语句
if(条件表达式)then
内容1
else
内容2
end if(可变可无等的部分)
end;