Mysql笔记

mysql小结

mysql 在ubuntu使用

登录

mysql -u root -p

mysql -h localhost -u root -p

查看数据库

SHOW DATABASES

CREATE DATABASE lib;

mysql时间使用
mysql 插入时间
  • now()函数以yyyy-mm-dd hh:mm:ss返回当前的日期时间,可以直接存到datetime字段中
  • curdate()以’yyyy-mm-dd’的格式返回今天的日期,可以直接存到date字段中 
  • curtime()以’hh:mm:ss’的格式返回当前的时间,可以直接存到time字段中
时间类型加减

DATE_ADD(date,INTERVAL expr type) 

DATE_SUB(date,INTERVAL expr type) 

ADDDATE(date,INTERVAL expr type) 

SUBDATE(date,INTERVAL expr type) 

定义和用法

DATEDIFF() 函数返回两个日期之间的天数。

语法

DATEDIFF(date1,date2)

例子

set @dt = now();
select date_add(@dt, interval 1 day);   - 加1天
select date_add(@dt, interval 1 hour);   -加1小时
select date_add(@dt, interval 1 minute);    - 加1分钟
select date_add(@dt, interval 1 second); -加1秒
select date_add(@dt, interval 1 microsecond);-加1毫秒
select date_add(@dt, interval 1 week);-加1周
select date_add(@dt, interval 1 month);-加1月
select date_add(@dt, interval 1 quarter);-加1季
select date_add(@dt, interval 1 year);-加1年
mysql 变量使用
  • sql server中变量要先申明后赋值

    • 局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的)
    • 申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;
插入
INSERT INTO table(field1, field2, fieldn) SELECT 'field1', 'field2', 'fieldn' FROM ...
触发器

不知道为啥触发器前面都要加 DELIMITER //

还有切记触发器不能触发对象和处理对象是同一个

MySQL Error: Can’t update table ‘tbl’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger

这是可以的,但是如果,你把这个触发器放在after之后,然后修改同一个表,就不行!!!

DELIMITER //
create trigger InsertReader before insert
    on Reader for each row
begin
    set new.maxnum = 30;
    set new.lastnum = 30;
    if(new.kind = "干部") then
        set new.maxnum = 45;
        set new.lastnum = 45;
    end if;
end

实例

DELIMITER //
create trigger InserRecord before insert
        on Record for each row
begin
        declare lastbooknum int;
        declare lastreadernum int;
        declare mday int;
        declare msg varchar(200);
        select num into lastbooknum from Book where Book.bookid = new.bookid;
        select lastnum into lastreadernum from Reader where Reader.readerid = new.readerid;
        select maxday into mday from Reader where Reader.readerid = new.readerid;
        if(lastbooknum < 1) then
                set msg = "图书都已借出";
                SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg ;
        end if;
        if(lastreadernum < 1) then
                set msg = "您已经不能再借书,请先归还再借";
                SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg ;
        end if;
        if(lastbooknum > 0  && lastreadernum > 0) then
                update Book set num = num - 1 where Book.bookid = new.bookid;
                update Reader set lastnum = lastnum - 1 where Reader.readerid = new.readerid;
                set new.borrowtime = curdate(), new.deadline = date_add(curdate(), interval mday day);
        end if;
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值