一、修改mysql用户密码:
mysql -h localhost -u root -p;命令行登录
update user set password = password('123456') where user = 'root'
二、数据库操作
- show databases; 显示数据库
- create database name;创建数据库
- use databasename;选择数据库
- drop database name;直接删除数据库,不提醒
- mysqladmin drop databasename;删除数据库前,有提示
三、字符集相关:
- 查看数据库支持的所有字符集:show character set;或show char set;
- 查看系统字符集设置,包括所有的字符集设置:show variables like 'char%';
- 查看数据表中字符集设置:show full columns from tablename; 或者 show create table tablenameG
- 查看数据库编码:show create database dnname;
- 修改数据库字符集:alter database dnname default character set utf8
- 修改数据表字符集:alter table table_name default character set utf8
- 修改mysql字符集:
- set character_set_client=utf8;
- set character_set_connection=utf8;
- set character_set_database=utf8;
- set character_set_server=utf8;
- set character_set_results=utf8;
四、表相关操作:
- 显示表:show tables;
- 显示表结构:describe tablename或 desc tablename;
- 查看表索引:show create table table_name 或者 show index from table_name
- show index from tablename得到的结果中,Cardinality表示散列程度,表示某个索引对应的列包含多少个不同的值,如果cardinality大大少于数据的实际散列程度,那么索引就基本失效了。
- 修复索引:ANALYZE local table table_name;
- 导出结果集:select * from table_name into outfile '/tmp/xyz.txt';
- 新建索引:
普通索引:alter table table_name add key `key_name`(field_name)
唯一索引:alter table table_name add unique key `key_name`(field_name)
主键索引:alter table table_name add primary key (field_name) - 删除索引:alter table table_name drop index key_name
- 导入数据:source /tmp/users.sql //先登录mysql
- 清除磁盘碎片:Optimize local table table_name
- 检查表是否损坏:check table table_name
- 修复损坏的表:repair table table_name
- 检查是否有碎片:select TABLE_NAME,data_free from information_schema.tables where data_free > 0;
- 修改字段名:
ALTER TABLE `ppd_ev_cat` CHANGE `ev_cat_id` `submission_to_catalog_id` int(10) unsigned NOT NULL AUTO_INCREMENT;
ALTER TABLE `ppd_ev_cat` CHANGE `ev_catalog_id` `catalog_id` int(10) unsigned NOT NULL; - 修改表名:ALTER TABLE `ppd_ev_cat` RENAME TO `ppd_submission_to_catalog`;
五、sql语句:
- 查询去除重复记录:distinct;
- 显示当前mysql版本和当前日期:select version(),current_date;
- 把时间戳格式化为“2001-01-02 00:00:00”格式:select from_unixtime('1234564');
- 把时间格式化为时间戳(转为整型):select unix_timestamp('2011-01-01');
- 查询连接字符串:select concat(field_name,field_name2);
- 查询逗号隔开的字段:WHERE FIND_IN_SET('1', responsible_user)
- 字符串截取: select left(content, 20); select right(content, 20);
- 获得插入记录的ID:
INSERT INTO `abgent_modules` (`parent_id`, `name`, `description`, `status`, `is_show`, `sort`) VALUES (4, 'feedback_categories', 'Feedback Categories', 1, 1, 0);
INSERT INTO `abgent_modules` (`parent_id`, `name`, `description`, `status`, `is_show`, `sort`) VALUES
((SELECT LAST_INSERT_ID()), 'feedback_categories.index', 'List', 1, 1, 0),
((SELECT LAST_INSERT_ID()), 'feedback_categories.category_add', 'Add', 1, 1, 0),
((SELECT LAST_INSERT_ID()), 'feedback_categories.category_detail', 'Detail', 1, 0, 0),
((SELECT LAST_INSERT_ID()), 'feedback_categories.category_modify', 'Modify' , 1, 0, 0); - 查询结果插入另一个表:
SELECT INTO FROM语句,语句形式为:SELECT vale1, value2 into Table2 from Table1,要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
INSERT INTO SELECT语句,语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1,要求目标表Table2必须存在。
insert into `sta_local`.`sta_news` (`title`, `content`, `news_time`, `out_link`, `img_path`, `is_top`, `operator_id`) select `title`, `content`, `newtime`, `outlink`, `imgpath`, `istop`, 2 from `wuxi_global`.`p_news`;
六、检验sql语句性能:(explain或者describe)explain select ....
七、查看mysql当前状态:status或者s
八、查看mysql进程:show processlist
- id,线程编号,当要关闭某一进程时执行 kill id;
- user列,显示当前进程用户;
- host列,显示当前进程是从哪个IP地址和哪个端口号发出来的;
- db列,显示当前这个进程目前连接的是哪个数据库;
- command列,显示当前连接进程所执行命令的类型或状态,一般就是休眠(sleep),查询(query),连接 (connect);
- time列,这个状态持续的时间,单位是秒;
- state列,显示使用当前连接sql语句的状态,如查询语句,可能中间需要经历copying to tmp table,Sorting result,Sending data等状态才可以完成;
- info列,显示这个连接所执行的sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。
九、查看mysql状态:show global status like 'open_%';
十、查看mysql配置
- show global variables like '%open%';
- show global variables like 'max_connections';
十一、指针复位(php函数)
$result = mysql_query($sql);
mysql_data_seek($result, 0);
十二、BENCHMARK: SELECT BENCHMARK,它显示MySQL在该系统上在X秒内可以执行1,000,000个简单的+表达式运算。
十三、设置时区
show variables like '%time_zone%';
SET time_zone=timezone
例如:比如北京时间(GMT+0800)
SET time_zone='+8:00'
十四、查看sqlite表结构
sqlite3 /usr/sqlite/ot.db
select * from sqlite_master where type="table" and name="nmo_message_log";