MySQL 常用命令
mysql -uroot -pXXXXXXXXX //登陆mysql
mysqladmin -u 用户名 -p 旧密码 password 新密码
创建数据库并分配用户
create database <数据库名> //创建数据库
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';
SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');
show databases //显示数据库
drop database <数据库名> //删除数据库
use <数据库名> //连接数据库
select database(); //当前选择的数据库
select version(); //显示mysql版本
select now(); //显示当前时间
SELECT DAYOFMONTH(CURRENT_DATE); //显示日
SELECT MONTH(CURRENT_DATE); //显示月
SELECT YEAR(CURRENT_DATE); //年
SELECT "welecome to my blog!"; //显示字符串
show create table 表名; //查看表结构
select CONCAT(f_name, " ", l_name) AS Name from employee_data where title = 'Marketing Executive'; ; //拼接字符串
创建表
create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); //创建表
例如,建立一张名为MyClass的表
字段名 | 数字类型 | 数据宽度 | 是否为空 | 是否主键 | 自动增加 | 默认值 |
---|---|---|---|---|---|---|
id | int | 4 | 否 | primary key | auto_increment | |
name | char | 20 | 否 | |||
sex | int | 4 | 否 | 0 | ||
degree | double | 16 | 是 |
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
删除表
drop table <表名> //删除表
例如,删除表名为 MyClass 的表
drop table MyClass;
DROP TABLE用于取消一个或多个表。您必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!
注意:对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消的表有关联的分区定义(.par)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。
插入数据
insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]; //插入数据
例如:往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99, 编号为3 的名为Wang 的成绩为96.5。
insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
注意:insert into每次只能向表中插入一条记录。
查询表中的数据
select × from < 表名 > where < 表达式 > //查询表中的数据
删除表中的数据
delete from 表名 where 表达式 //删除表中的数据
例如:删除表 MyClass中编号为1 的记录
delete from MyClass where id=1;
修改表中的数据
update MyClass set name='Mary' where id=1; //修改表中的数据
例子1:单表的MySQL UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
例子2:多表的UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
UPDATE 语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有 的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。
增加字段
alter table 表名 add字段 类型 其他; //增加字段
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
alter table MyClass add passtest int(4) default '0'
加索引
alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子:
alter table employee add index emp_name (name);
加主关键字的索引
alter table 表名 add primary key (字段名);
例子:
alter table employee add primary key(id);
加唯一限制条件的索引
alter table 表名 add unique 索引名 (字段名);
例子:
alter table employee add unique emp_name2(cardnumber);
删除某个索引
alter table 表名 drop index 索引名;
例子:
alter table employee drop index emp_name;
增加字段
ALTER TABLE table_name ADD field_name field_type;
修改原字段名称及类型
ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段
MySQL ALTER TABLE table_name DROP field_name;
修改表名
rename table 原表名 to 新表名; //修改表名
例如:在表MyClass名字更改为YouClass
rename table MyClass to YouClass;
当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。
如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。
RENAME TABLE 在 MySQL 3.23.23 中被加入。
备份数据库
1.导出整个数据库
导出文件默认是存在mysql\bin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
例如,将aaa库备份到文件back_aaa中:
cd /home/data/mysql
mysqldump -u root -p --opt aaa > back_aaa