Mysql笔记

来源:互联网 发布:怎么看端口是否被占用 编辑:程序博客网 时间:2024/05/21 19:49

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 rowbegin    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 rowbegin        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
0 0
原创粉丝点击