mysql 笔记

IFNULL(expr1,expr2)


如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。
IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。

mysql> select IFNULL(1,0);
-> 1
mysql> select IFNULL(0,10);
-> 0
mysql> select IFNULL(1/0,10);
-> 10
mysql> select IFNULL(1/0,'yes');
-> 'yes'



FROM_UNIXTIME()函数把整数类型的时间戳转换成日期格式
FROM_UNIXTIME(1249488000, '%Y-%m-%d %H:%i:%s')


UNIX_TIMESTAMP()函数把日期格式转换成时间戳
UNIX_TIMESTAMP('2009-08-06')

UNIX_TIMESTAMP函数的参数如果是常量,需要加单引号。如果是变量,不要加单引号,否则会导致sql语句参数数量不正确的错误。

-- 字符串转日期
str_to_date('2012-10-11 16:42:30', '%Y-%m-%d %H:%i:%s')


[size=large][color=blue][b]mysql 批量更新[/b][/color][/size]
如果要更新很多条数据,update语句并不能批量更新,只能多次执行update语句,每次更新一条数据,性能很差。可以使用insert语句来实现批量更新的功能。

指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致UNIQUE索引或PRIMARY KEY中出现重复值,则执行UPDATE操作。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

mysql> INSERT INTO 表名 (a,b,c) VALUES (1,2,3)

-> ON DUPLICATE KEY UPDATE c=c+1;

mysql> UPDATE table SET c=c+1 WHERE a=1;


[size=large][b][color=blue]mysql 获取日期字符串[/color][/b][/size]
date_format(now(), '%Y-%m-%d')

Y 4位年份 m 月份 d 日

mysql 获取月份,月份从1到12
month(now())


[size=large][b][color=blue]mybatis insert操作后返回主键[/color][/b][/size]

针对自增主键的表,在插入时不需要设置主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下两种配置方式:

<insert id="add" parameterType="vo.Category" useGeneratedKeys="true" keyProperty="id">


keyProperty是字段对应的属性名。

<insert id="add" parameterType="vo.Category">

<selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS id
</selectKey>


插入一行记录,获得记录对应的对象的id属性,就是记录的属性值。

mysql查看正在处理的任务
show processlist;


修改表名的命令:

ALTER TABLE table_name RENAME TO new_table_name;


修改字段名称和类型的命令:
alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空]


添加字段
alter table 表名 add column 字段名 字段类型


删除字段
alter table 表名 drop column 字段名



在mysql client环境中查看mysql的配置

show variables like '%配置项的名称%'



在mysql client环境中查找某表名
select table_name from information_schema.tables where table_name like '%xxx%'


show tables from 数据库名 like '%xxx%'
更好

ubuntu修改mysql默认编码为utf8

sudo vim /etc/mysql/my.cnf


在[mysqld]下面加上:

character_set_server=utf8


停止mysql
sudo service mysql stop

启动mysql
sudo service mysql start



查看数据库表空间占用情况

select * from table db_table_size;


创建表时用select语句给表填充数据

create table a (id int not null auto_increment, primary key(id)) select * from b;



查询存储过程
show procedure status;


查看存储过程创建代码
show create procedure 存储过程名;


删除存储过程
drop procedure 存储过程名 if exists


复制mysql数据库命令
mysqldump 源数据库 -h 主机 -u用户名 -p密码 --add-drop-table | mysql -h 主机 目标数据库 -u用户名 -p密码



#查询数据库所有表名
select table_name from information_schema.tables where table_schema = '库名';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值