MongoDB与Mysql常用命令解释

原文

本文旨在介绍MongoDB,Mysql的常用命令:将MongoDB 和传统的关系型数据库的常用命令对照起来学习,更加便于记忆和理解。

mongodbmysql命令对比

MongoDB是由数据库(database/repository)、集合(collection)、文档对象(document三个层次组成。MongoDB中集合对应关系型数据库里的表,但是集合中没有列、行和关系的概念,这体现了模式自由的特点。

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,

一、常用命令介绍:



























































































MySQL

MongoDB

说明

mysqld

mongod

服务器守护进程

mysql

mongo

客户端工具

mysqldump

mongodump

逻辑备份工具

mysql

mongorestore

逻辑恢复工具


db.repairDatabase()

修复数据库

mysqldump

mongoexport

数据导出工具

source

mongoimport

数据导入工具

grant * privileges on *.* to …

Db.addUser()

Db.auth()

新建用户并权限

show databases

show dbs

显示库列表

Show tables

Show collections

显示表列表

Show slave status

Rs.status

查询主从状态

Create table users(a int, b int)

db.createCollection("mycoll", {capped:true,

size:100000}) 另:可隐式创建表。

创建表

Create INDEX idxname ON users(name)

db.users.ensureIndex({name:1})

创建索引

Create INDEX idxname ON users(name,ts DESC)

db.users.ensureIndex({name:1,ts:-1})

创建索引

Insert into users values(1, 1)

db.users.insert({a:1, b:1})

插入记录

Select a, b from users

db.users.find({},{a:1, b:1})

查询表

Select * from users

db.users.find()

查询表

Select * from users where age=33

db.users.find({age:33})

条件查询

Select a, b from users where age=33

db.users.find({age:33},{a:1, b:1})

条件查询

select * from users where age<33

db.users.find({‘age‘:{$lt:33}})

条件查询

select * from users where age>33 and age<=40

db.users.find({‘age‘:{$gt:33,$lte:40}})

条件查询























































































select * from users where a=1 and b=‘q‘

db.users.find({a:1,b:‘q‘})

条件查询

select * from users where a=1 or b=2

db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )

条件查询

select * from users limit 1

db.users.findOne()

条件查询

select * from users where name like "%Joe%"

db.users.find({name:/Joe/})

模糊查询

select * from users where name like "Joe%"

db.users.find({name:/^Joe/})

模糊查询

select count(1) from users

Db.users.count()

获取表记录数

select count(1) from users where age>30

db.users.find({age: {‘$gt‘: 30}}).count()

获取表记录数

select DISTINCT last_name from users

db.users.distinct(‘last_name‘)

去掉重复值

select * from users ORDER BY name

db.users.find().sort({name:-1})

排序

select * from users ORDER BY name DESC

db.users.find().sort({name:-1})

排序

EXPLAIN select * from users where z=3

db.users.find({z:3}).explain()

获取存储路径

update users set a=1 where b=‘q‘

db.users.update({b:‘q‘}, {$set:{a:1}}, false, true)

更新记录

update users set a=a+2 where b=‘q‘

db.users.update({b:‘q‘}, {$inc:{a:2}}, false, true)

更新记录

delete from users where z="abc"

db.users.remove({z:‘abc‘})

删除记录


db. users.remove()

删除所有的记录

drop database IF EXISTS test;

use test

db.dropDatabase()

删除数据库

drop table IF EXISTS test;

db.mytable.drop()

删除表/collection


db.addUser(‘test’, ’test’)

添加用户

readOnly-->false


db.addUser(‘test’, ’test’, true)

添加用户

readOnly-->true


db.addUser("test","test222")

更改密码


db.system.users.remove({user:"test"})

或者db.removeUser(‘test‘)

删除用户












































use admin

超级用户


db.auth(‘test’, ‘test’)

用户授权


db.system.users.find()

查看用户列表


show users

查看所有用户


db.printCollectionStats()

查看各collection的状态


db.printReplicationInfo()

查看主从复制状态


show profile

查看profiling


db.copyDatabase(‘mail_addr‘,‘mail_addr_tmp‘)

拷贝数据库


db.users.dataSize()

查看collection数据的大小


db. users.totalIndexSize()

查询索引的大小

二、mongodb语法

MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表查询的问题。

MongoDB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。

查询colls所有数据

db.colls.find() //select * from colls

通过指定条件查询

db.colls.find({‘last_name’: ‘Smith’});//select * from colls where
last_name=’Smith’

指定多条件查询

db.colls.find( { x : 3, y : “foo” } );//select * from colls where x=3 and
y=’foo’

指定条件范围查询

db.colls.find({j: {$ne: 3}, k: {$gt: 10} });//select * from colls where j!=3
and k>10

查询不包括某内容

db.colls.find({}, {a:0});//查询除a为0外的所有数据

支持<, <=, >, >=查询,需用符号替代分别为$lt,$lte,$gt,$gte

db.colls.find({ “field” : { $gt: value } } );

db.colls.find({ “field” : { $lt: value } } );

db.colls.find({ “field” : { $gte: value } } );

db.colls.find({ “field” : { $lte: value } } );

也可对某一字段做范围查询

db.colls.find({ “field” : { $gt: value1, $lt: value2 } } );

不等于查询用字符$ne

db.colls.find( { x : { $ne : 3 } } );

in查询用字符$in

db.colls.find( { “field” : { $in : array } } );

db.colls.find({j:{$in: [2,4,6]}});

not in查询用字符$nin

db.colls.find({j:{$nin: [2,4,6]}});

取模查询用字符$mod

db.colls.find( { a : { $mod : [ 10 , 1 ] } } )// where a % 10 == 1

$all查询

db.colls.find( { a: { $all: [ 2, 3 ] } } );//指定a满足数组中任意值时

$size查询

db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录

$exists查询

db.colls.find( { a : { $exists : true } } ); // 存在a对象的数据

db.colls.find( { a : { $exists : false } } ); // 不存在a对象的数据

$type查询$type值为bsonhttp://bsonspec.org/数 据的类型值

db.colls.find( { a : { $type : 2 } } ); // 匹配a为string类型数据

db.colls.find( { a : { $type : 16 } } ); // 匹配a为int类型数据

使用正则表达式匹配

db.colls.find( { name : /acme.*corp/i } );//类似于SQL中like

内嵌对象查询

db.colls.find( { “author.name” : “joe” } );

1.3.3版本及更高版本包含$not查询

db.colls.find( { name : { $not : /acme.*corp/i } } );

db.colls.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );

sort()排序

db.colls.find().sort( { ts : -1 } );//1为升序2为降序

limit()对限制查询数据返回个数

db.colls.find().limit(10)

skip()跳过某些数据

db.colls.find().skip(10)

snapshot()快照保证没有重复数据返回或对象丢失

count()统计查询对象个数

db.students.find({‘address.state’ : ‘CA’}).count();//效率较高

db.students.find({‘address.state’ : ‘CA’}).toArray().length;//效率很低

group()对查询结果分组和SQL中group by函数类似

distinct()返回不重复值

三、连接MYSQL

  格式: mysql -h主机地址 -u用户名 -p用户密码

  1、例1:连接到本机上的MYSQL。

  首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令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

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

  3、退出MYSQL命令: exit (回车)

  注意:想要成功连接到远程主机,需要在远程主机打开MySQL远程访问权限

  方法如下:

  在远程主机中以管理员身份进入

  输入如下命令

  mysql>GRANT ALL PRIVILEGES ON *.* TO ‘agui‘@%‘IDENTIFIED BY ‘123‘ WITH
GRANT OPTION;

  FLUSH PRIVILEGES;

  //赋予任何主机访问数据的权限

  mysql>FLUSH PRIVILEGES

  //修改生效

  agui为我们使用的用户名

  密码为123

  即:在远程主机上作好设置,我们即可通过mysql -h110.110.110.110
-uagui -p123连接进远程主机

四、修改和取消MySQL超级用户root密码

(一)、密码的修改:

使用mysqladmin命令 
1、例如你的 root用户现在没有密码,你希望的密码修改为abc,那么命令是:mysqladmin -u
root password abc 
2、如果你的root现在有密码了,那么修改密码为abc的命令是:mysqladmin -u root -p
password ‘newpassword‘
注意,命令回车后会问你旧密码,输入旧密码之后命令完成,密码修改成功。

         
(二)、密码的消除 
1、以root登录:mysql -u root -p 
2、mysql>use
mysql; 
3、mysql>update user set password=‘‘ where
user=‘root‘; 
重启mysql服务就生效了。

       五、修改Mysql中普通用户的密码:

1.直接在数据库中修改记录
mysql>
use mysql
mysql> update user set password = password(”new_password”) where
user = “user_name”;
mysql> flush
privileges;
其实这种方法就是更新一条数据库记录,与普通update语句不同的是,密码加密存储,需用password()函数来生成,另一个不同点是需要刷新权限表。

 2.在数据库中运行set
password

mysql> set password for user_name =
password(”new_password”);
mysql> flush privileges;
同第一种方法,也要刷新权限表

 3.直接在shell环境运行mysqladmin
>
mysqladmin -u user_name -p password “new_password”
> mysqladmin
flush-privileges
这个方法我试了几次,每次都能将密码记录修改掉,但是每次修改后都无法登录,即使重启数据库也无济于事。所以建议不要采用本方法修改用户密码,尤其是root密码。

4.grant all privileges on db.table
to [email protected] identified by
“your_pwd”;
用户名密码的生效不必用flush privileges刷新
注:
db.table:
db表示授权哪个库,table是相应库里的表。可以用*.*表示所有库所有表。注意,如果想表示某个库的所有表,必须用db_name.*,后面的”.*”不可省略,否则权限将无法赋予。
[email protected]: user_name表示用户名,localhost表示该用户只能在本地访问该库,可以用%表示从任何地方访问该库,也可以用111.11.22.33来表示地址
your_pwd:
给用户设置的密码

六、Mysql创建普通用户

1.使用

insert into mysql.user(Host,User,Password)
values("localhost","ea",password("ea"));

时有可能遇到:Field ‘ssl_cipher‘ doesn‘t have a default value的错误。

GRANT USAGE ON *.* TO ‘username‘@‘localhost‘ IDENTIFIED BY ‘password‘ WITH
GRANT OPTION;

“username”替换为将要授权的用户名,比如clientusr;

“password”替换为clientusr设置的密码;

locaohost可以改为%,方便你从别的IP登录。

如:GRANT USAGE ON *.* TO ‘ea‘@‘localhost‘ IDENTIFIED BY ‘ea‘ WITH GRANT
OPTION;

然后对你建的用户进行授权

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON tablename.*  TO
‘username‘@‘localhost‘ IDENTIFIED BY ‘password‘;

本语句中的权限根据实际需要确定:

"tablename"替换为授权访问的数据表table名

"username"是步骤2授权用户名

"password"是步骤2授权用户的设置密码

这样就为该用户授予了对某数据表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP权限。

如: GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON easy_activity.*  TO
‘ea‘@‘localhost‘ IDENTIFIED BY ‘ea‘;

生效授权:一句话即可:FLUSH PRIVILEGES;

       七、用MySQL创建数据库和数据库表

1、使用SHOW语句找出在服务器上当前存在什么数据库:




mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
3 rows in set (0.00 sec)


2、创建一个数据库abccs 
mysql>
CREATE DATABASE
abccs; 
注意不同操作系统对大小写的敏感。 
3、选择你所创建的数据库 
mysql>
USE abccs 
Database
changed 
此时你已经进入你刚才所建立的数据库abccs. 
4、
创建一个数据库表
 
首先看现在你的数据库中存在什么表: 
mysql> SHOW
TABLES; 
Empty set (0.00
sec) 
说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable:   我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。 




mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1),
-> birth DATE, birthaddr VARCHAR(20));
Query OK, 0 rows affected (0.00 sec)



于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字
长,可以使用ALTER
TABLE语句。);性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);birth列则使用DATE数据类型。 
创建了一个表后,我们可以看看刚才做的结果,用SHOW
TABLES显示数据库中有哪些表: 




mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| mytables |
+---------------------+


5、显示表的结构: 




mysql> DESCRIBE mytable;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| deathaddr | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)


6、
往表中加入记录
 
我们先用SELECT命令来查看表中的数据: 
mysql> select * from
mytable; 
Empty set (0.00
sec)
这说明刚才创建的表还没有记录。 加入一条新记录: 




mysql> insert into mytable
-> values (′abccs′,′f′,′1977-07-07′,′china′);
Query OK, 1 row affected (0.05 sec)



再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将所有员工的记录加入到表中。 
7、用文本方式将数据装入一个数据库表 
如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE
TABLE语句中列出的列次序给出,例如: 




abccs f 1977-07-07 china  
mary f 1978-12-12 usa
tom m 1970-09-02 usa


使用下面命令将文本文件“mytable.txt”装载到mytable表中:mysql>
LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE
pet; 
再使用如下命令看看是否已将数据输入到数据库表中:mysql> select * from
mytable;

MongoDB与Mysql常用命令解释,码迷,mamicode.com

时间: 2024-10-05 04:50:12

MongoDB与Mysql常用命令解释的相关文章

mysql 常用命令(备忘)

1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表mysql> SHOW TABLES;5:创建一个数据库表mysql> CREATE TABLE MYT

MYSQL常用命令集合(转载)

文章出处:http://www.cnblogs.com/q1ng/p/4474501.html 1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p

Mysql常用命令行大全——转载

转载地址:http://www.blogjava.net/supperchen/archive/2012/10/11/389340.html 第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是: mysql> 注意,如果是连接到另外的机器上,则

MYSQL常用命令集合

1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) 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.导

MYSQL常用命令——【转】

MYSQL常用命令 1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sq

MySql常用命令集Mysql常用命令5

九. 交叉查询 交叉查询可以对数据进行总和,平均,计数或其他总和计算法的计算,这些数据通过 两种信息进行分组:一个显示在表的左部,另一个显示在表的顶部. Microsoft Jet SQL 用TRANSFROM语句创建交叉表查询语法: TRANSFORM aggfunction Select 语句 GROUP BY 子句 PIVOT pivotfield[IN(value1 [,value2[,-]]) ] Aggfounction指SQL聚积函数, Select语句选择作为标题的的字段, GR

mysql常用命令用法

1.创建数据库:create database database_name; 2.选择数据库:use database_name; 3.创建表:create table tablename(column1 data_type1, column2 data_type2,...,columnn datatypen); 4.设置表主键:alter table tablename add primary key(column_name); 5:修改表的字段名:alter table tablename

MYSQL常用命令列表

MYSQL常用命令列表 1.系统管理 mysql -h主机地址 -u用户名 -p 连接MYSQL(在mysql/bin) exit 退出MYSQL命令 mysqladmin -u用户名 -p旧密码 password新密码 修改密码(在mysql/bin) grantselect[insert][,update][,delete]on数据库.*to用户名@localhost("%", 表示任何主机)identifiedby "密码" 增加用户 mysqldump –u

13.1 设置更改root密码;13.2 连接MySQL;13.3 MySQL常用命令

扩展 : mysql5.7 root密码更改 http://www.apelearn.com/bbs/thread-7289-1-1.html myisam 和innodb引擎对比 http://www.pureweber.com/article/myisam-vs-innodb/ mysql 配置详解: http://blog.linuxeye.com/379.html mysql调优: http://www.aminglinux.com/bbs/thread-5758-1-1.html 同学