mysql的常用操作

原创 2007年09月19日 21:20:00

以前进行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

mysql基本常用操作

  • 2016年07月22日 15:35
  • 29KB
  • 下载

mysql数据库主要常用操作

  • 2012年04月10日 14:11
  • 67KB
  • 下载

MySQL | MariaDB命令行客户端常用操作

命令行客户端连接数据库执行命令:mysql−h[localhost|IP]−P[port]−u[username]−p[password]例如:连接本机,端口为3306,用户名为root,密码为:12...

mysql操作常用问题解决

  • 2012年09月15日 15:02
  • 1.13MB
  • 下载

MySQL入门常用操作命令

  • 2013年05月20日 11:36
  • 11KB
  • 下载

mysql数据库中命令行下常用命令的操作(增、删、改、查)和数据类型

MYSQL的常用命令和增删改查语句和数据类型 连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码]    创建数据库:create database [库名]    显示...

MySQL常用操作基本

  • 2009年01月14日 23:19
  • 5KB
  • 下载

操作mysql数据库的常用命令总结

  • 2011年04月19日 15:50
  • 15KB
  • 下载

mysql常用基础操作语法(七)--统计函数和分组查询【命令行模式】

注:文中所有的。。。代表多个。1、使用count统计条数:select count(字段名。。。) from tablename;2、使用avg计算字段的平均值:select avg(字段名) fro...

mysql 常用操作

  • 2008年03月10日 17:05
  • 32KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql的常用操作
举报原因:
原因补充:

(最多只允许输入30个字)