代码说

code is poetry

代码说    
碎碎念:划破夜空,赛车让你热血沸腾!  换一换

mysql常用命令

作者:coderzheng 发布于:2013-5-27 12:37 Monday 分类:mysql  阅读模式

  1. 创建数据库
  2. 选择数据库
  3. 直接删除数据库
  4. 直接删除表
  5. 创建表
  6. 显示当前所有数据库信息
  7. 显示所有表信息
  8. 表操作
  9. select version(), current_date
  10. flush privileges
  11. mysql实现修改用户密码
  12. 创建帐号
  13. 重命名表
  14. 备份数据库
  15. 将表记录清空1
  16. 将表记录清空2
  17. 显示表中的记录
  18. 一个创建数据库和创建表以及插入数据库的实例
  19. revoke all on database from user
  20. 连接mysql
  21. 登陆数据库
  22. 更改用户密码
  23. 新增用户
  24. 对常用权限的解释

 

1: create database db_name;

     mysql> create database class_yzh;
 
2: use db_name;
     mysql> use class_yzh;
 
3: drop database db_name;
     mysql> drop database class_yzh;
 
4: drop table tb_name;
     mysql> drop table class_yzh;
 
5: create table tb_name;
     mysql> create table class;
 
6: show databases;
     mysql> show databases;
 
7: show tables;
     mysql> show tables;
     // 前提是:先mysql>use 数据库名;
 
8: describe tb_name;
     mysql> describe tb_name;
 
8.1: insert into
     mysql> insert into tb_name values("hyq","M");
 
8.2: 导入.sql文件命令
     mysql> use db_name;
     mysql> source d:/mysql.sql;
 
8.3: update
     mysql> update tb_name set sex='f' where name='hyq';
 
8.4: 当表中有重复的字段时,去重:
     mysql> select distinct * from tb_name; //无意义, 所有字段都相同?
 
8.5: 根据字段查询表中重复的数据(单一字段):
     select * from tb_name where 字段名 in (select 字段名 from tb_name group by 字段名 having count(字段名)>1 );
 
8.6: 删除表中多余的重复记录, 重复记录是根据单个字段(peopleid)来判断,只留有rowid最小的记录
     delete from tb_name where 字段名 in(select 字段名 from tb_name group by 字段名 having count(字段名)>1) and rowid not in(select min(rowid) from 表名 group by 字段名 having count(字段名)>1);
 
8.7: 根据字段查表里面重复的多字段数据,并显示重读次数:
     select 字段名1, 字段名2, count(*) from tb_name group by 字段名 1,字段名 2 having count(*)>1
 
8.8: 指定查询表中前N行数据:
     select * from tb_name limit N;
 
8.9: 指定查询表中第N行后的M行数据:
     select * from tb_name limit N,M;
 
8.10: 复制表结构及数据到新表:
     create table 新表 select * from 旧表; // 不能复制所有内容
 
8.11: 只复制表结构到新表
     create table 新表 select * from 旧表 where 1=2 或者
     create table 新表 like 旧表;
 
8.12: 复制旧表的数据到新表(假设两个表结构一样)
     insert into 新表 select * from 旧表
 
8.13: 复制旧表的数据到新表(假设两个表结构不一样)
     insert into 新表(字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 旧表
 
8.14: 可以将表1的内容全部复制到表2
     select * into 表2 from 表1
 
8.15: show create table 旧表
     这样会将旧表的创建命令列出,我们只需要将该命令拷贝出来, 更改table的名字, 就可以建立一个完全一个的表
 
8.16: 将时间改成系统当前时间
     update tb_name set 时间字段 = now();
 
9: select version(),current_date;
     mysql> select version(),current_date;
     mysql> select version(),
            -> current_date;
     // select 内部命令;
 
10: mysql>flush privileges;
 
11: mysql实现修改用户密码:
     11.1 update
     shell> mysql -uroot -p
     mysql> update mysql.user set password = PASSWORD('new_password') where User ='root';

     11.2 修改用户密码
     shell> mysqladmin -uroot password new_password

     11.3 自己测试未通过
     shell> mysql -u root -p
     mysql>set password for root = PASSWORD("root");
 
12: 创建账号
     mysql> grant all(delete,update,create,drop,insert) privileges
     on *.* to user_name@localhost identified by 'password';
 
13: 重命名表
     mysql> alter table tb_name rename tb_name_new;
 
14: 备份数据库
       14.1 导出整个数据库
     mysql> mysqldump -u root -p db_name >file_name
     mysql> mysqldump -u root -p asb >d:\asb.sql;
 
     14.2 导出一个表
     mysql> mysqldump -u root -p db_name tb_name> file_name
     mysql> mysqldump -u root -p asb yg>d:\yg.sql;
 
     14.3 导出一个数据库表结构
     mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql;
 
     14.4 导入数据库
     mysql -u root -p
     mysql> create db_name;
     mysql> use dn_name;
     mysql> source d:\file_name
     mysql> source d:\asd.sqsl;
 
     14.5 导入表
     mysql> use db_name;
     mysql> source d:\tb_name.sql;
 
15:将表记录清空
     mysql> delete from tb_name;
 
16: 将表中记录清空
     mysql> truncate tb_name;
 
17. 显示表中的记录
     mysql> select * from tb_name;
 
18. 一个创建数据库和创建表以及插入数据库的实例
     drop database school if exists school;
     create database scholl;
     use school;
     create table teacher(
     id int(3) auto_increment not null primary key,
     name char(10) not null,
     address varchar(50) deault 'Guangzhou';
     year date
     ); // 建表结束

     insert into teacher values('','glchangang','guangzhouyizhong','1976-10-10');
     insert into teacher values('','jack','guangzhou erzhong','1975-10-12');

     // 注解:
     (1) 将ID设为长度为3的数字字段:int(3),并且让它每个记录自动加一:auto_increment,并不能为空:not null, 而且让它成为主字段 primary key
     (2) 将name设置为长度为10的字符字段
     (3) 将address设为长度为50的字符字段, 而且缺省值Guangzhou,
     (4) 将year字段设置为日期字段
     mysql -uroot -p password < c:school.sql

    将文本数据转到数据库中
     文本字段应符合的格式:字段数据之间用tabl键隔开,null值用来代替
     数据传入命令:
     load data local infile "文件名" into table 表名;
 
19. revoke all on database from user
// 移除user用户在database数据库上的所有权限
 
20. 连接mysql
     mysql> mysql -h 主机地址 -u user_name -p password
      
21. 登陆数据库
     mysql> mysql -uroot -p;
     mysql> use db_name;
 
22. 刚刚装好的mysql包含一个含空密码的root账户和一个匿名账户, 这是很大的安全隐患
对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名账户删除,root账户设置密码,可用
如下命令进行操作:
     mysql> use mysql;
     mysql> delete from User where User="';
     mysql> update User set Password = PASSWORD('new_password') where User='root';
 
23. 新增用户
     格式: grant select on 数据库.* to 用户名@登陆主机 identified by '密码'
     例1:增加一个用户test 为abc,让它可以在任何主机上登陆,并对所有数据库有查询、插入、修改删除的权限,首先用以root用户连入mysql,然后键入一下命令:
     mysql> grant select,insert,update,delete on *.* to test1@"%" identified by "abc";
     但是例1增加的用户是十分危险的,你想如果某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登陆你的mysql数据库并对你的数据可以为所欲为了,解决的办法见例2

     例2:增加一个用户test2密码为abc,让它只可以在localhost上登陆,并可以对数据mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即mysql数据库所在的那台主机),这样用户即使知道test2的密码,他也无法从internet上直接访问数据库,只能通过mysql主机上的web页来访问
     mysql> grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
     如果你不想test2有密码,可以再打开一个命令将密码消除掉
     mysql> grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
     下面我们来看看mysql中有关数据库方面的操作,注意:你必须首先登陆到mysql中,以下操作都是在mysql的提示符下进行的,而且每个命令以分号结束。
     在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大的安全隐患,也不利于管理技术的提高。我们给一个应用中的用户赋予最恰当的数据库权限。如一个只进行数据库插入的用户不应赋予其删除数据的权限,mysql的用户管理是通过user表来实现的,添加新用户常用的方法有两个,一是在user表插入相应的数据行,同时设置相应的权限;二是通过grant命令创建具有某种权限的用户。其中grant的常用用法如下:
     mysql> grant all on mydb.* to newusername@hostname identifed by "password";
     mysql> grant usage on *.* to newusername@hostname identified by "password";
     mysql> grant select,insert,update on mydb.* to newusername@hostname identified by "password";
     mysql> grant select,insert,update on mydb.TestTable to newusername@hostname identified by "password";
 
24. 对常用权限的解释:
       24.1 全局管理的权限:
     file: 在mysql服务器上读写文件
     process:显示或杀死属于其他用户的服务线程
     reload:重载访问控制表,刷新日志等
     shutdown:关闭mysql服务
 
     24.2 数据库/数据表/数据列权限
     alter: 修改已存在的数据表(例如增加/删除列)和索引
     create: 建立新的数据库或数据表
     delete: 删除表的记录
     drop:删除数据库或者数据表
     index: 建立或者删除索引
     insert:增加表的记录
     select:显示/搜索表的记录
     update: 修改表中已存在的记录
 
     24.3 特别的权限
     all:允许做任何事
     usage:只允许登录,其他什么也不允许做

标签: mysql

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: php编码规范  |  下一篇:php文件加锁操作