- MySQL常用命令
create database name; 创建数据库
use databasename; 选择数据库
drop database name 直接删除数据库,不提醒
show tables; 显示表
describe tablename; 表的详细描述
select中加上distinct 去除重复字段
mysqladmin drop database name 删除数据库前,有提示。
在 mysql中select top用法和 mssqlserver有所区别。若在mysql中实现select top
功能得用:select * from tablename limit M,N, 这里M 表示从(M+1)条记录开始,N 表示返回的记录条数
显示当前 mysql 版本和当前日期
select version(),current_date;
- 修改 mysql 中 root 的密码:
mysql>mysql -u root -p
mysql> update user set password=password(”xueok654123″) where user=’
root’;
mysql> flush privileges //刷新数据库
mysql>use dbname; 打开数据库:
mysql>show databases; 显示所有数据库
mysql>show tables; 显示数据库mysql 中所有的表:先 use mysql;然后
mysql>describe user; 显示表mysql 数据库中 user表的列信息);
- grant
创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令 something 做这个
mysql> grant all privileges on *.*to user@localhost identified by ’something’
with
增加新用户
格式: grant select on 数据库.* to 用户名@登录主机 identified by “密码”
GRANT ALL PRIVILEGES ON . TO monty@localhost IDENTIFIED BY ’
something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.*TOmonty@”%” IDENTIFIED BY ’something’
WITH GRANT OPTION;
删除授权:
mysql> revoke all privileges on . from root@”%”;
mysql> delete from user where user=”root” and host=”%”;
mysql> flush privileges;
创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
mysql >grant select, insert, update, delete, create,drop on fangchandb.* to
custom@ it363.com identified by ‘ passwd’
重命名表:
mysql > alter table t1 rename t2;
- mysqldump
备份数据库
shell> mysqldump -h host -u root -p dbname >dbname_backup.sql
恢复数据库
shell> mysqladmin -h myhost -u root -p create dbname
shell> mysqldump -h host -u root -p dbname < dbname_backup.sql
如果只想卸出建表指令,则命令如下:
shell> mysqladmin -u root -p -d databasename > a.sql
如果只想卸出插入数据的sql 命令,而不需要建表命令,则命令如下:
shell> mysqladmin -u root -p -t databasename > a.sql
那么如果我只想要数据,而不想要什么sql 命令时,应该如何操作呢?
mysqldump -T./ phptest driver
其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与 mysqldump 同一目录。如果不指定 driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为 .sql 文件,包含建表执行。另一个为 .txt 文件,只包含数据,且没有 sql 指令。
- 可将查询存储在一个文件中并告诉 mysql 从文件中读取查询而不是等待键盘输入。
可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件 my_file.sql 中存放有查询,可如下执行这些查询:
例如,如果您想将建表语句提前写在 sql.txt 中:
mysql > mysql -h myhost -u root -p database < sql.txt
- 创建数据库 staffer
create database staffer;
- 下面的语句在mysql 环境在执行
显示用户拥有权限的数据库 show databases;
切换到staffer 数据库 use staffer;
显示当前数据库中有权限的表 show tables;
显示表staffer 的结构 desc staffer;
- 创建测试环境
1)创建数据库 staffer
mysql> create database staffer
2)创建表 staffer,department,position,depart_pos
create table department
(
id int not null auto_increment,
name varchar(20) not null default ‘系统部’, #设定默认值
description varchar(100),
primary key PK_department (id) #设定主键
);
create table depart_pos
(
department_id int not null,
position_id int not null,
primary key PK_depart_pos (department_id,position_id) #设定复和主键
);
create table staffer
(
id int not null auto_increment primary key, #设定主键
name varchar(20) not null default ‘无名氏’, #设定默认值
department_id int not null,
position_id int not null,
unique (department_id,position_id) #设定唯一值
);
3)删除
mysql>
drop table depart_pos;
- 修改结构alter 命令
mysql>
#表 position 增加列 test
alter table position add(test char(10));
#表 position 修改列 test
alter table position modify test char(20) not null;
#表 position 修改列 test 默认值
alter table position alter test set default ‘system’;
#表 position 去掉 test 默认值
alter table position alter test drop default;
#表 position 去掉列 test
alter table position drop column test;
#表 depart_pos 删除主键
alter table depart_pos drop primary key;
#表 depart_pos 增加主键
alter table depart_pos add primary key PK_depart_pos
(department_id,position_id);
- 操作数据 insert 命令
#插入表 department
insert into department(name,description) values(‘系统部’,‘系统部’);
insert into department(name,description) values(‘公关部’,‘公关部’);
insert into department(name,description) values(‘客服部’,‘客服部’);
insert into department(name,description) values(‘财务部’,‘财务部’);
insert into department(name,description) values(‘测试部’,‘测试部’);
#插入表 s_position
insert into s_position(name,description) values(‘总监’,‘总监’);
insert into s_position(name,description) values(‘经理’,‘经理’);
insert into s_position(name,description) values(‘普通员工’,‘普通员工’);
#插入表 depart_pos
insert into depart_pos(department_id,position_id)
select a.id department_id,b.id postion_id
from department a,s_position b;
#插入表 staffer
insert into staffer(name,department_id,position_id) values(‘陈达治’,1,1);
insert into staffer(name,department_id,position_id) values(‘李文宾’,1,2);
insert into staffer(name,department_id,position_id) values(‘马佳’,1,3);
insert into staffer(name,department_id,position_id) values(‘亢志强’,5,1);
insert into staffer(name,department_id,position_id) values(‘杨玉茹’,4,1);
- 查询及删除操作 select、delete 命令
#显示系统部的人员和职位
select a.name,b.name department_name,c.name position_name
from staffer a,department b,s_position c
where a.department_id=b.id and a.position_id=c.id and b.name=‘系统部’;
#显示系统部的人数
select count(*) from staffer a,department b
where a.department_id=b.id and b.name=‘系统部’
#显示各部门的人数
select count(*) cou,b.name
from staffer a,department b
where a.department_id=b.id
group by b.name;
#删除客服部
delete from department where name=‘客服部’;
#将财务部修改为财务一部
update department set name=‘财务一部’ where name=‘财务部’;
- 备份和恢复
备份数据库 staffer
c:\mysql\bin\mysqldump -u root -p root staffer>e:\staffer.sql
得到的 staffer.sql 是一个 sql 脚本
不包括建库的语句,所以你需要手工创建数据库才可以导入
恢复数据库 staffer,需要创建一个空库 staffer
c:\mysql\bin\mysql -uroot -proot staffer<staffer.sql
如果不希望后来手工创建staffer,可以
c:\mysql\bin\mysqldump -uroot -proot --databases staffer>e:\staffer.sql
mysql -uroot -proot >e:\staffer.sql
但这样的话系统种就不能存在 staffer 库,且无法导入其他名字的数据库,
当然你可以手工修改 staffer.sql 文件