bnuchampion的专栏

苯鸟先飞

mysql的常用操作

以前进行mysql数据库操作都是使用的前端,不过当数据库比较大,使用前端比如mysql-front备份时,速度特别慢甚至程序无响应,而如果熟悉mysql命令的话,只要一句mysqldump就行了。下面是自己从网上找的一些资料,,自己综合整理下,包括外键约束等等。决心以后尽量只使用mysql命令行操作。
为了方便使用,可以在环境变量path上加上 "mysql安装目录/bin" 这样就不用非得进入mysql的bin目录下了

一、连接与退出mysql。
连接格式: mysql -h主机地址 -u用户名 -p用户密码(注:u与root可以不用加空格)
退出:exit
1、 例1:连接到本机上的mysql。
打开DOS窗口,键入命令mysql -uroot -p, 回车后提示你输密码,如果刚安装好mysql,超级用户root是没有密码的, 故直接回车即可。进入到mysql中,mysql的提示符是:mysql>
2、 例2:连接到远程主机上的mysql。
假设远程主机的IP为:110.110.110.110, 用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
3、 退出mysql命令:exit(回车) 提示“bye”

二、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、 例1:如果root是空密码,这时可以加个密码abc。在DOS下,键入以下命令
mysqladmin -uroot password abc(注:因为开始时root没有密码,所以-p旧密码一项就可以省略了)
2、 例2:再将root的密码改为123。
mysqladmin -uroot -pabc password 123

三、超级管理员对用户的管理。
格式:grant 操作(比如select、insert等) on 数据库.* to 用户名@登录主机 identified by '密码'
1、例1、增加一个用户test密码为abc,让他可以在任何主机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to test@"%" Identified by 'abc';
但这种方法增加的用户是十分危险的,如果某个人知道test的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,这个时候我们可以使用例2解决办法。
2、例2、增加一个用户test密码为abc,让其只可以在localhost上登录, 并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机, 即mysql数据库所在的那台主机),这样用户即使用知道test的密码,也无法从internet上直接访问数据库,只能通过mysql主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test@localhost  identified by 'abc';
我估摸着这里做了两件事情:
一是给mysql自带的数据库mysq的user表添加了一个名字为test 密码为abc的用户
二是给mysql自带的数据库mysq的db表添加了一个名为test对school数据库的操作权限
3、例3和例2创建的都是普通的用户,如果想创建具有所有权限的超级用户,操作以下:
grant all privileges on *.* to tangyd@localhost identified by '123456';
这样就给mysql创建了一个tangyd 密码为123456的超级用户
4、例4、回收普通用户的权限
比如回收例2创建的用户test的delete权限
revoke delete on mydb.* from test@localhost ;
如果这时候以test用户进入 则在school数据库的delete权限是不允许的
再比如回收例2创建的用户test的所有权限
revoke all privileges on mydb.* from test@localhost;
同样可以给用户test添加权限,只是这个时候因为test用户已经存在,所以不要像例2那样,可以如下操作:
grant select on mydb.* to test@localhost;
如果要删除用户 先收回权限 然后再删除用户 以上面test为例
revoke all privileges on mydb.* from test@localhost;
use mysql;
delete from user where user='test' and host='localhost';
delete这里后面两个约束是因为user的主键是user和host
5、例5、超级用户添加、删除超级用户
跟超级用户对普通用户的操作类似:
grant all privileges on *.* to tangyd@localhost identified by 'abc';
这样就创建了一个用户名为tangyd 密码为abc的超级用户
删除超级用户:
revoke all privileges on *.* to from tangyd@localhost;
use user;
delete from user where user='tangyd' and localhost='lcoalhost';
flush privileges;
记得不要忘记最后一句话了 否则该用户还有usage权限

以下是关于数据库的一些操作:

一、操作技巧
1、 如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回
车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束
标志就OK。
2、 你可以使用光标上下键调出以前的命令。

二、显示命令
1、显示数据库列表。
show databases;
刚开始时才两个数据库:mysql和test。 mysql库很重要它里面有mysql的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use 数据库名; //使用l数据库
show tables; //显示当前l数据库的所有表
3、显示当前使用的数据库:
select database();
4、显示数据表的结构:
describe 表名;
或者desc 表名;
5、显示数据库的dll:
show create table 表名;
6、 建库:
create database 库名;
7、 建表:
use 库名;
create table 表名(字段设定列表);
8、 删库和删表:
drop database 库名;
drop table 表名;

三、一个建库和建表以及插入数据的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table subject //建立表
(
id int(3) auto_increment not null primary key,
name char(10) not null
); //建表结束
//以下为插入字段
insert into subject(name) values('语文');
insert into subject(name) values('数学');
insert into subject(name) values('英语');

create table student //建立表
(
id int(4) auto_increment not null primary key;
no char(4) not null,
name char(10) not null,
); //建表结束
//以下为插入字段
insert into student(no,name) values('0001','张三');
insert into student(no,name) values('0002','李四');

create table grade //建立表
(
student_no char(4) not null,
subject_id int(3) not null,
score int(3) not null default 0 null,
primary key(student_no,subject_id);
); //建表结束
我们这里建立的grade表student_no参考student的no字段,subject_id参考subject的id字段 它们存在约束关系,我们给grade表添加两个外键:
subject_id字段:
alter table grade add foreign key(subject_id) refrences subject(id) on delete cascade on update cascade;
student_no字段:
alter table grade add foreign key(student_no) refrences student(no) on delete cascade on update cascade;
这个时候会报错,因为我们没有把student表中的no设为索引,前一句没有问题是因为subject的id是主键,已经是索引了
我们给student的no添加索引
alter table student add index(no);
然后我们再
alter table grade add foreign key(student_no) refrences student(no);
这样就OK了

其他一些操作:
添加主键: alter table 表名 add primary key(列名)
删除主键: alter table 表名 drop primary key;
给某列改名: alter table 表名 change 列名 属性列表 比如alter table student change id no char(4)
添加某列:
1 在表的最前面添加列 比如给student表添加id属性 放在表的最前面
alter table student add id int(4) not null auto_increment primary key first;
2 在表的某个列后加列 比如给student表添加id属性 放在列no的最前面
alter table student add a int(11) afer no;
删除某列: alter table 表名 drop column 列名;
更改某列属性 比如修改student no字段属性 alter table student modify no char(4);
添加索引:alter table 表名 add index 列名
删除索引:alter table 表名 drop index 列名
删除外键:alter table 表名 drop foreign key 约束名
limit的使用:
select * from 表名 limit 2;//如果只给定一个参数,它表示返回最大的记录行数目
select * from 表名 limit 1,3;// 第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目


四、导出和导入数据
导出整个数据库
mysqldump -u用户名 -p密码 school > school.sql 或者
mysqldump -u 用户名 -p school > school0919.sql 这种方式要求输入密码
如果不想导出数据
mysqldump -u用户名 -p密码 school > school.sql
mysqldump --help
导出单个表
mysqldump -u用户名 -p密码 school student > school.student.sql
mysqldump -u 用户名 -p  school student > school.student.sql 这种方式要求输入密码
mysqldump --opt school teacher student > school.teacher.student.sql
如果不想导出数据
mysqldump -u用户名 -p密码 school student> school.student.sql
可以通过mysqldump --help来查看自己版本支持选项表 在我这里-d意思就是不要数据

导入数据库
常用source 命令
进入mysql控制台 mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:/school.sql

阅读更多
下一篇web开发中的缓存问题的研究
想对作者说点什么? 我来说一句

Mysql常用操作语句.

2011年03月15日 88KB 下载

mysql 数据库常用操作

2010年09月14日 128KB 下载

mysql基本常用操作

2016年07月22日 29KB 下载

Ubuntu安装MySQL常用操作

2018年02月04日 212KB 下载

php mysql 常用操作

2009年04月13日 101KB 下载

common using mysql in linux

2018年06月28日 223KB 下载

没有更多推荐了,返回首页

关闭
关闭