实用mysql数据库命令

连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)
断开:exit (回车)

创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"
修改密码:mysqladmin -u用户名 -p旧密码 password 新密码
删除授权: revoke select,insert,update,delete om *.* [email protected];

显示数据库:show databases;
显示数据表:show tables;
显示表结构:describe 表名;

创建表:create table 表名 (字段设定列表);
删除表:drop table 表名;
修改表:alter table t1 rename t2
查询表:select * from 表名;
清空表:delete from 表名;
备份表: mysqlbinmysqldump -h(ip) -uroot -p(password) databasenametablename > tablename.sql
恢复表: mysqlbinmysql -h(ip) -uroot -p(password) databasenametablename < tablename.sql(操作前先把原来表删除)

备份数据库:mysql\bin\mysqldump -h(ip) -uroot -p(password) databasename> database.sql
恢复数据库:mysql\bin\mysql -h(ip) -uroot -p(password) databasename< database.sql
复制数据库:mysql\bin\mysqldump --all-databases >all-databases.sql
修复数据库:mysqlcheck -A -o -uroot -p54safer

文本数据导入: load data local infile \"文件名\" into table 表名;
数据导入导出:mysql\bin\mysqlimport database tables.txt

mysql服务的启动和停止
net stop mysql
net start mysql

登陆mysql
语法如下: mysql -u用户名-p用户密码
键入命令mysql -uroot -p,回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP

增加新用户
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
如,增加一个用户user1密码为password1,让其可以在本机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* [email protected] Identified by "password1";
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* [email protected] identified by"";

例2:连接到远程主机上的MYSQL
  假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:   

  mysql-h110.110.110.110 -uroot -pabcd123   

  (注:u与root可以不用加空格,其它也一样)   

  3、退出MYSQL命令:exit

(一) 连接MYSQL:
   格式: mysql -h主机地址 -u用户名-p用户密码

1、例1:连接到本机上的MYSQL
  首先在打开DOS窗口,然后进入mysql安装目录下的bin目录下,例如: D:\mysql\bin,再键入命令mysql -uroot-p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL
  假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
   mysql -h10.0.0.1 -uroot-p123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令
   exit (回车)

(二) 修改密码:
   格式:mysqladmin -u用户名 -p旧密码password 新密码
1、例1:给root加个密码123。首先在DOS下进入目录C:\mysql\bin,然后键入以下命令:
   mysqladmin -uroot -password123
  注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为456
   mysqladmin -uroot -pab12password 456
(三) 增加新用户:(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
   格式:grant select on 数据库.* to用户名@登录主机 identified by "密码"
  例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
   grantselect,insert,update,delete on *.* to [email protected]"%" Identified by"abc";

  但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
  例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
   grantselect,insert,update,delete on mydb.* to [email protected] identifiedby "abc";
  如果你不想test2有密码,可以再打一个命令将密码消掉。
   grantselect,insert,update,delete on mydb.* to [email protected] identifiedby "";

MySQL导入导出命令
1.导出整个数据库
  mysqldump -u 用户名 -p 数据库名 > 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc >wcnc.sql
2.导出一个表
  mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc users>wcnc_users.sql

3.导出一个数据库结构
  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc>d:wcnc_db.sql
  -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

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

创建数据库:

  create database test1;

数据库查询:

  show databases;

选择要操作的数据库;

  use test1

查看 test1 数据库中创建的所有数据表:

  show tables;

创建表:

  create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));

查看表:

  desc emp;

删除表:

  drop table emp

修改表类型:

  alter table emp modify ename varchar(20);

增加表字段

  alter table emp add column age int(3);

删除表字段

  alter table emp drop column age;

字段改名 

  alter table emp change age agel int(4);

  注意:change 和 modify都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但是 change 的优点是可以修改列名称,modify则不能。

修改字段排列顺序

  1. alter table emp add birth date after ename;
  2. alter table emp modify age int(3) first;

表改名

  alter table emp rename emp1;

插入记录

  insert into emp(ename,hiredate,sal,deptno) values(‘zzx1‘,‘2000-01-01‘,‘2000‘,1);

修改字段排列顺序

  1.  alter table emp add birth date after ename;
  2.  alter table emp modify age int(3) first;

一次性插入多条记录 

  1. INSERT INTO tablename (field1, field2,……fieldn)
  2.  VALUES(record1_value1, record1_value2,……record1_valuesn),
  3.  (record2_value1, record2_value2,……record2_valuesn),

更新记录:update emp set sal=4000 where ename=‘lisa‘;

  1.  

删除记录:delete from emp where ename=‘dony‘;

  1. delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3; 

查询记录:select * from emp;

其中“*”表示要将所有的记录都选出来,也可以用逗号分割的所有字段来代替,例如

查询不重复的记录:select distinct deptno from emp;

条件查询:select * from emp where deptno=1;

排序和限制:select * from emp order by sal;

聚合

  1.  fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum (求和)、 count(*) (记录数)、max(最大值)、min(最小值)。
  2.  GROUP BY 关键字表示要进行分类聚合的字段, 比如要按照部门分类统计员工数量, 部门就应该写在 group by 后面。
  3.  WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
  4.  HAVING 关键字表示对分类后的结果再进行条件的过滤
  5.  #要 emp 表中统计公司的总人数
  6.  select count(1) from emp;
  7.  #在此基础上,要统计各个部门的人数
  8.  select deptno,count(1) from emp group by deptno;
  9.  #既要统计各部门人数,又要统计总人数
  10.  select deptno,count(1) from emp group by deptno with rollup;
  11.  #统计人数大于 1 人的部门
  12.  select deptno,count(1) from emp group by deptno having count(1)>1;
  13.  #统计公司所有员工的薪水总额、最高和最低薪水
  14.  select sum(sal),max(sal),min(sal) from emp;

表连接

  1.  select ename,deptname from emp,dept where emp.deptno=dept.deptno;
  2.  # 可以列出另一列中不存在的name
  3.  select ename,deptname from emp left join dept on emp.deptno=dept.deptno;

子查询

  1.  select * from emp where deptno in(select deptno from dept);
  2.  #如果子查询记录数唯一,还可以用=代替 in
  3.  select * from emp where deptno = (select deptno from dept limit 1);
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金