mysql常用sql语句

### mysql密码初始化

	# /etc/init.d/mysqld stop
	# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
	# mysql -u root mysql
	mysql> use mysql;
	mysql> UPDATE user SET Password=PASSWORD('hello') where USER='root';
	mysql> FLUSH PRIVILEGES;
	mysql> quit
	# /etc/init.d/mysqld restart
	# mysql -uroot -p
	Enter password: <输入新设的密码newpassword>
	mysql>

### 赋予远程访问权限

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
给予username帐号,123456密码所有权限

### 数据库不存在时创建

CREATE DATABASE IF NOT EXISTS mysql_dbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • 某个库下面的表不存在时创建,1.指定主键递增 2.设置引擎为MyISAM或者InnoDB
CREATE TABLE IF NOT EXISTS mysql_dbname.mysql_table (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `hostname` varchar(128) NOT NULL,
  `dirname` varchar(128) NOT NULL,
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  `cluster_name` varchar(128) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  • 插入语句
INSERT INTO mysql_dbname.mysql_table (a,b) VALUES ('a','b');
  • 插入多条
INSERT INTO mysql_dbname.mysql_table (a,b) VALUES ('a','b'),('a','b'),('a','b');
  • 导入sql文件
mysql -h localhost -u root -p mysql_dbname < mysql_dbname.sql
  • 导出数据库和表结构到sql文件
mysqldump -h localhost  -u root -p mysql_dbname > mysql_dbname.sql
sql文件已经包含建库和表,以及数据插入的语句
  • 只导出表结构到sql文件
mysqldump -h localhost  -u root -p -d mysql_dbname > mysql_table.sql
要把这个表结构导入数据库之前需要先建立一个数据库,sql文件仅含有建表操作
  • 删除表中数据
delete from mysql_dbname.mysql_table;
  • 如果存在数据库则删除
drop database if exists mysql_dbname;
  • 如果存在表则删除

drop table if exists mysql_table;
  • 导入本地数据文件
LOAD DATA LOCAL INFILE "/tmp/1.txt" into TABLE mysql_table ;
  • mysql乱码
mysql> show variables like "%char%";
mysql> SET character_set_results='utf8';
mysql> SET names utf9;
  • ALTER

# 新增列名
ALTER TABLE `table_name` ADD `col_name` INT(32) DEFAULT NULL COMMENT 'new col';

# 更改列名
ALTER TABLE `table_name` CHANGE `old_name` `new_name` VARCHAR(255) NOT NULL;

# 删除列名
ALTER TABLE `table_name` DROP COLUMN `col_name`

# 修改字段类型
alter table `table_name` MODIFY `col_name` VARCHAR(256); 

# 更改表名
RENAME TABLE `old_table_name` TO `new_table_name`
  • PARTITION

# add partition
ALTER TABLE `table_name` PARTITION BY RANGE(TO_DAYS(collect_time))
(
	PARTITION p20160613 VALUES LESS THAN (TO_DAYS('2016-06-14')),
);

标签:Mysql