MySQL基本操作
1、常用的函数:
1)inet_aton、inet_ntoa等转换函数。
inet_aton:如一个点分十进制的IP为12.34.56.78,经过该函数转换后结果为203569230。原理:12.34.56.78对应的十六进制是C.22.38.4E即C22384E,所以十进制就是203569230。inet_ntoa的功能跟inet_aton相反,即把203569230转换成12.34.56.78。例子:
计算12.34.56.78的IP C段:select inet_ntoa(inet_aton('12.34.56.78')&0xFFFFFF00);,结果是12.34.56.0。
2)length函数:返回字符串长度,以字节为单位;char_length函数:返回字符串长度,以字符为单位。
2、列操作:
1)删除列col_name:alter table tab_name drop column col_name;
2)将列名改为new_col_name且/或修改列的类型为col_type:
alter table tab_name change old_col_name new_col_name col_type;
3)调整列的顺序,将列old_col_name放置在列some_col之后(可以同时重命名和修改列类型,参照2)):
alter table tab_name change old_col_name new_col_name col_type after some_col;
3、表操作:
1)根据已有表创建新表:create table test2 like test1;
2)重命名表:rename table test2 to test3;
3)删除多个表:drop table test1, test2, test3;
4)批量删除(某个库中的)表
select concat('drop table db_name.', table_name, ';') from information_schema.tables where table_name like '%table_pre%';
将上面的结果另存为a.sql,再在MySQL中执行source a.sql;,批量删除表。
5)查看表名匹配某个模式的表:show tables like '%20131105%';
6)用结果集创建一个新表:create table test1 as select *from test2;
4、数据库操作:
1)查看当前正在使用的数据库:select database();
5、数据导出与导入
1)导出
(1)mysqldump(一个数据库备份程序)。如
mysqldump -uusername -ppasswd db_name table_name --where="column_name='xxx'" > a.sql
a.sql中包含表示表定义和表数据的SQL语句等。
2)导入
(1)使用mysqldump导出的结果:
mysql -uusername -ppasswd db_name < a.sql
6、插入/更新/替换:
1)无则插入,有则更新(根据唯一索引或主键判断有无):insert into table_name values(... ...) on duplicate key update column_name = new_value;
若实际插入了一条新记录,则affected-rows是1;若是更新了一条已有记录,则affected-rows为2。
2)无则插入,有则替换(根据唯一索引或主键判断有无):replace into table_name values(... ...);
7、结果处理:
1)group_concat():分组之后,将组内的结果按","连接起来。例子:
sql语句是:select name, group_concat(book) from (select name, concat(book_name, ":", book_num) as book from temp) as a group by name; 结果即右上图。
2)随机选择表中的若干条记录:select * from test1 order by rand() limit 5;
3)以竖排形式显示结果:select *from test1 limit 2 \G。更多可参考mysql> help。
8、账户相关操作
1)创建一个账户的步骤:
(1)创建一个无密码登陆、没有任何权限的用户:create user username@hostname;
(2)修改账户密码:update mysql.user set password = password('Your Password') where host = 'hostname' and user = 'username';
使用flush使上面的update语句即时生效,而不需要重启MySQL:flush privileges;
这两个步骤可以合并('*ABC24182CDA346DE32475ED7B40AEAC7113AA1F0'是password('Your Password')的返回值):
CREATE USER 'username'@'hostname' IDENTIFIED BY PASSWORD '*ABC24182CDA346DE32475ED7B40AEAC7113AA1F0';
(3)授予权限(除了Grant权限):如GRANT ALL ON *.* TO 'username'@'hostname';
如要授予Grant权限,则在该语句后面加上with grant option;
或撤销权限:如REVOKE INSERT ON *.* FROM 'username'@'hostname';
查看当前用户被授予的权限:SHOW GRANTS;
2)删除用户
drop user username@hostname; delete from mysql.user where user = 'username' and host = 'hostname';
3)查看当前用户:select user();
参考资料:
http://dev.mysql.com/doc/refman/5.5/en/insert.html
不断学习中。。。