mysql查漏补缺

日期类型   
 Datetime:时间日期 格式:YYYY-mm-dd HH:ii:ss 范围1000到9999
 Date:日期 datetime的date部分
 Time:时间段 某个区间之间
 Timestamp:时间戳 但格式与datetime完全一样。从1970年开始的
 Year:年份 
 varchar 和 nvarchar 和char     
nvarchar(n): 包含n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
varchar(n):长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零。
Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian" 而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。 
    由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
    varchar一般适用于英文和数字,Nvarchar适用中文和其他字符,其中N表示Unicode常量
 行子查询
    返回结果可以是多行多列
    需求:要求查询整个学生中年龄最大**且**最高的学生
    1.确定数据源  select * from student where age=? and height=?
    2.确定最大的年龄和最高身高 select max(age) ,max(height) from student;
    行子查询:要构造行元素 行元素由多个字段组成 (如下的 (age,height))
    select * from student where (age,height)=(select max(age) ,max(height) from student)
表子查询
    返回结果可以是多行多列
    需求:要求查询每个班 最高的一个学生
    1.确定数据源  select * from student order by height desc
    2.从每个班选出第一个学生 select * from student group by id
    表子查询:from 子查询 :得到的结果作为from数据源
    select * from (select * from student order by height desc) as students group by id
事务
1.开启事务:告诉系统一下操作不直接写入数据表 先放入事务日志之后
 
Start transaction;
2.进行事务 update insert等
3.关闭事务
 a. 提交事务: 同步数据表(操作成功) commit;
b. 回滚事务:直接情况日志表(操作失败)rollback;
原理图:
 
   设置回滚点: savepoint 回滚点名字;

 回到回滚点: rollback to 回滚点;


事务特性:
 A: Atomic 原子性 。事务的整个操作是一个整体,不可以分割。要么全部成功要么全部失败
B:Consistency 一致性,事务操作前后 数据表中没有变化
I:Isolation 隔离性,事务操作互相隔离不受影响
D:Durability 持久性 数据一旦提交 不可更改
触发器 trigger
 触发类型:增删改 insert delete update
 触发时间:前后 before after
 触发对象:表中的每一条记录

触发器基本语法
 --临时修改语句结束符
  Delimiter 自定义符号:后续代码中只有碰到这个自定义符号语句才结束
  Create trigger 触发器名称 触发时间 触发类型 for each row
  Begin
      --触发器内容 每一行内容都必须使用语句结束符;
  End
  --语句结束符
  自定义符号
  --将临时修改修正过来
  Delimiter ; 

自定义函数
   Create function 函数名 ([形参列表]) returns 数据类型
   Begin
  函数体
     返回值:return 类型
   End
用select 调用函数
存储过程
 存储过程是一种没有返回值的函数 。如果想要有值 则可以用out 或 inout来修饰参数
create procedure 名字([参数列表])
begin
 过程体
 end
用call调用存储过程



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值