zoukankan      html  css  js  c++  java
  • 数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数

    outfile    将数据库的数据导出

    select * into outfile 'e://mysqloutfile//1.txt' from 表格名;

    备份与还原

    不再mysql目录下进行备份,mysqldump -uroot -p 数据库名 +表格名 > 具体的路径名(你要导入到哪里)

    如果你想得到多张表的那么就在表格后面加一个表格

    还原:

    先删除数据库的所有东西

    如果删除不了,那么就是还有没有删除干净

    新建一个数据库 ,用数据库

    找到文件   source +具体的文件;将数据导入

    视图:

    什么是视图呢?

    视图其实是不存在的是虚拟的  是一句sql语句当查询时,这条语句执行,得出一个结果,然后利用一个结果进行查询

    创建视图

    create view 视图名  as select * from 表的名字;

    select * from 视图名;

    改变视图结构

    alter view 视图名 (你想改变的什么s1,s2) select * from 表格名;

    s1,s2将替代字段

    事物:

    什么是事物呢?

    事物是sql的集合,如果其中一个sql集合的一个语句失败,就意味着整个过程都是没有意义的,应该是数据库回到初始的状态。

    先查看 show variables like '%autocommit%'

    查看autocommit的值  如果autocommit是打开的,那么就关闭。

    set autocommit=0;关闭事物。

    创建两张表格

    create  table  stu_mon(

    id int primary key auto_increment,

    stu_money decimal(10,2)

    )engine innodb character set utf8;

    create table cla_mon(

    id int primary key auto_increment,

    cla_money deciaml(10,2),

    stu_count int

    )engine innodb character set utf8;

    改变数据库中的数据

    update stu_mon set stu_money =stu_money-50 where id=1;

    update cla_mon set cla_money=cla_money+50 where id=1;

    打开另一个窗口,如果改变数据将在这个窗口的值不会改变,因为改变autocommit的值为0,就不会立刻改变数据库的值。

    你过你想改变窗口的值那么你就要 提交,那么就改变了数据库中的值。

    commit;

    如果你改变了值,却改错了,所以就需要回滚了;

    rollback;

    start transaction

    这个指令  就是为了不设置autocommit的值

    首先设置autocommit的值为1;

    当一开始时是打开的,开就是开,在操作事物时关闭,当你执行完事物时,执行完食物就打开回到初始的状态

    触发器:

    在当前的表上,对表的每行进行设置一个监听事件,每当事件发生时,会执行一段sql语句

    创建触发器

    create trigger 触发器的名称+ 事件(比如after  update)on 你想操作的表格stu_mon

    for each row

    update 另一个表cla_mon  set cla_money=cla_money+10 where id=1;  

    如果你进行改变stu_mon的值,那没cla_mon的值也会改变

    触发器的使用细节:

    不能同名;

    一类事件设置一个触发器;

    触发器程序内的new old

    具体的例子

    删除之前的触发器

    drop trigger 触发器的名称

    create  trigger 触发器的名称 +事件+on+ 你想操作的表格

    for each row

    update 另一个表 set  cla_money=cla_money+(new.stu_money-old.stu_money)  where id=1;

    多条sql语句

    删除之前的触发器

    drop trigger 用过的触发器名称

    decimal  $$//结束符

    create trigger chufaqi after update on stu_mon

    for  each row 

    begin  

    update  cla_mon set cla_money=cla_money+(new.stu_money-old.stu_money) where id=1;

    update cla_mon set stu_count=stu_count+1 where id=1;

    end

    $$//结束符避免分号的冲突

    你插进了一个数据,那么就改变了cla表中的值

    如果你想对插入事件进行操作

    但是insert 不能使用old数据

    delete  不能使用new数据

    decimal //

    create trigger  chufaqi after insert on stu_mon

    for each row 

    begin  

    update cla_mon set stu_count=stu_count+new.id;

    update cla_mon set cla_money=cla_money+50;

    end

    //

    insert into stu_mon values(3,5000);

    那么触发器中的new.id=3

    mysql函数

    注释:#  --[空格]

    select * from stu_mon #where id=1;

    ;//结束符

    查出来

    decimal   来修改语句的结束符。

    变量:设置变量

    1.select @who:='aa';

    2.select * from stu_mon into where @who='aa';

    变量一定要加@

    查看变量

    select @who;

    内置函数

    rand()0-1之间的随机数

    format(x,d)

    x为你要格式化的数据 d你想精确到几位数

    unix_timestamp();得到秒的数字

    substring(具体的数据,2,2)顺时针得到两个

    数据库是从1开始的

    加密方式:

    md5(你想要加密的)

    sha1()

    password()

    自定义函数

    decliniter //

  • 相关阅读:
    usb_submit_urb
    xilinx uboot网卡驱动分析
    kernel: swapper: page allocation failure. order:1, mode:0x20
    Linux格式化硬盘 常用命令小记
    spring3:对JDBC的支持 之 JDBC模板类
    spring3: AOP 之代理机制
    spring3: AOP 之切面实例化模型 ——跟我学spring3
    spring3: AOP 之 通知顺序
    spring3: AOP 之 通知参数
    spring3: 切面及通知实例 Aspectj的aop
  • 原文地址:https://www.cnblogs.com/fupengpeng/p/6662886.html
Copyright © 2011-2022 走看看