`
Josh_Persistence
  • 浏览: 1630975 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

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});//查询除a0外的所有数据

 

支持<, <=, >, >=查询,需用符号替代分别为$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 } } ); // 匹配astring类型数据

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

 

使用正则表达式匹配

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

 

内嵌对象查询

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()对查询结果分组和SQLgroup 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 user_name@localhost identified by “your_pwd”;
用户名密码的生效不必用flush privileges刷新
注:
db.table: db表示授权哪个库,table是相应库里的表。可以用*.*表示所有库所有表。注意,如果想表示某个库的所有表,必须用db_name.*,后面的”.*”不可省略,否则权限将无法赋予。
user_name@localhost: user_name表示用户名,localhost表示该用户只能在本地访问该库,可以用%表示从任何地方访问该库,也可以用111.11.22.33来表示地址
your_pwd: 给用户设置的密码

 

       六、Mysql创建普通用户

1.使用root用户登录:mysql -uroot

2. 执行如下命令创建用户: 

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;

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

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

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

"dbname"替换为授权访问的数据库名

"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';

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

 

         七、Mysql dump的详细用法

在命令行的具体用法如下: mysqldump -h数据库服务器IP -u用户名 -p密码 -d 数据库名 表名 脚本名

需要注意2点:一是脚本名后面没有分号“;”,二是-d和数据库名之间有空格。

 

以下例子均假设数据库服务器的host在local,即可省略-hlocalhost.

  1、导出数据库名为dbname的表结构(其中用户名为user,密码为dbpasswd,生成的脚本名为db.sql)
    mysqldump -uuser -pdbpasswd -d dbname >db.sql

    2、导出数据库为dbname的某张表(test)结构
    mysqldump -uuser -pdbpasswd -d dbname test>db.sql

    3、导出数据库为dbname所有表结构及表数据(不加-d)
    mysqldump -uuser -pdbpasswd  dbname >db.sql

    4、导出数据库为dbname的某张表(test)结构及表数据(不加-d)
    mysqldump -uuser -pdbpasswd dbname test>db.sql

 

 

       八、用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;
8. Mysql dump命令:
mysqldump -h 192.168.1.155 -udiandi -pdiandi diandi2 > dump.sql
其中diandi2是数据库名字。-u和用户名之间,-p和密码之间没有空格。当然可以不用-p+密码,这样密码容易泄露,可以省略-p+密码,而在之后的步骤中输入。
1
6
分享到:
评论

相关推荐

    MongoDB与MySQL常用操作语句对照

    主要介绍了MongoDB与MySQL常用操作语句对照,本文整合了两篇博文,相信最常用的操作都收录在本文了,需要的朋友可以参考下

    MongoDB与MySQL的操作对比表及区别介绍

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL...

    MongoDB基础入门到高级进阶

    MongoDB的客户端连接和常用命令操作 SpringDataMongoDB对MongoDB的操作 MongoDB的索引和操作 MongoDB的安全认证 4、主讲内容 基础入门部分 章节一:MongoDB相关概念 章节二:单机部署 章节三:基本常用命令 章节四:...

    MongoDB常用操作汇总

    查看当前数据库中所有的集合,使用命令 show collections 或使用 show tables 创建集合有两种方式,显示创建和隐式创建 显示创建可以使用命令 db.createCollection(“集合名称") 隐式创建可以使用命令 db.集合...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 5_MySQL其他常用命令讲解.mp4 │ 6_MySQL操作符和常用函数.mp4 │ 7_MySQL常用字符串和日期函数.mp4 │ delete.txt │ MySQL高级DBA大作业1.docx │ 作业.docx │ ├─新版MySQL DBA综合实战班 第04天 │ 1_课后...

    Ubuntu下安装PHP的mongodb扩展操作命令

    在 https://pecl.php.net/package/mongo 下载 PHP的mongodb扩展的源码 复制代码 代码如下: ...$ tar zxvf mongo-1.6.9.tgz $ cd mongo-1.6.9 ... 您可能感兴趣的文章:MongoDB常用操作命令大全mongodb与mysql命

    MongoDB 常用命令总结

    Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库...Mongo还可以解决海量数据的查询效率,当数据量达到50GB以上时,Mongo数据库访问速度是MySQL10 倍以上

    MongoDB_Golang.zip

    driver这两个比较常用的MongoDB基础库,做了连接池初始化,model层服务封装,提供:初始化MongoDB连接池复用, MongoDB集合(类似MySQL的数据表)的增、删、改、查,事务、管道操作、聚合操作、mongoShell原生命令...

    MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)

    ● 步骤一: 下载 MongoDB  点击上方官方下载地址, 并下载 Windows 版本 ● 步骤二: 设置 MongoDB 程序存放目录  下载完成后, 解压到自定义文件夹,例: D:\mongodb\ ● 步骤三: 设置数据文件存放目录  在 D:\...

    实验四:NoSQL和关系数据库的操作比较

    (2)熟练使用4种数据库操作常用的 Shell命令。 (3)熟悉4种数据库操作常用的Java API。 A.4.2实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2)Hadoop版本:2.7.1。 (3)MySQL版本:5.7.15。(4)HBase版本:1.1.2。...

    【MongoDB】数据库的基本操作01

    1.2.1常用命令 1.2.2数据类型 1.2.3集合操作 1.2.3.1创建集合 1.2.3.2查看集合 1.2.3.3删除集合 1.2.4注意点 1.3增删改查 1.3.1插入数据 1.3.2查找数据 1.3.3更新数据 1.3.4删除数据 1.3.5符号 1.1基础入门 1.1.1...

    Navicat Premium 15.zip

    Navicat Preminm 15 好用的数据库连接客户端,可以连接多中常用数据库,mysql,mongodb等

    Docker安装mysql、redis、zookeeper、xxl-job、nacos、rocketmq等

    内容包括docker常用命令、docker部署sqlserver、mongodb、redis(集群)、mysql、nginx、zookeeper集群、xxl-job、nacos(集群)、rocketmq、sentinel、jenkins等服务;docker开启远程调用、导出日志等

    MongoDB使用小结 一些常用操作分享

    MongoDB的使用之前也分享过一篇,稍微高阶点:见这里:《MongoDB使用小结》 1、shell登陆和显示 假设在本机上有一个端口为17380的MongoDB服务,假设已经把mongo bin文件加入到系统PATH下。 登陆:mongo –port 17380...

    大数据技术原理及应用课实验4 NoSQL和关系数据库的操作比较 林子雨实验

    2. 熟练使用四种数据库操作常用的Shell命令; 3. 熟悉四种数据库操作常用的Java API。 二、实验平台 1. 操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); 2. Hadoop版本:3.1.3; 3. MySQL版本:5.6; 4. HBase...

    2016012743_王宇轩_大数据实习一.zip

    1.理解四种数据库(MySQL,HBase,Redis,MongoDB)的概念以及不同点;2.熟练使用四种数据库操作常用的Shell命令;3.熟悉四种数据库操作常用的Java API。

    2017黑马Python就业班

    │ └─01.Linux以及命令 │ └─视频 │ 04-unix、minix、Linux操作系统的发展1.flv │ ├─02Python核心编程 │ 第1节 python高级编程 │ 第2节 linux系统编程 │ 第3节 网络编程 │ 第4节 web服务器案例 │ 第5节...

    til.ashish.me::memo:今天我学到了

    til.ashish.me :memo: 我今天学习了摘要。 灵感来自simonw / til 摩卡咖啡 -2020-04-20 节点js -2020-08-21 mongodb -2020-08-23 吉特 -2020-08-23 -2020-08-23 拉取请求流程-2020-11-26...常用命令-2021-03-02

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    mongodb strom spark java语言 语言语法基础 异常 泛型 内部类 反射 序列化 nIo 匿名类 包装类 优先级 引用 语言工具类库 容器类 集合 链表 map 工具类 系统类 日期类 数字类 字符串+正则 ...

    传智博客python就业班

    │ └─01.Linux以及命令 │ └─视频 │ 04-unix、minix、Linux操作系统的发展1.flv │ ├─02Python核心编程 │ 第1节 python高级编程.zip │ 第2节 linux系统编程.zip │ 第3节 网络编程.zip │ 第4节 web服务器...

Global site tag (gtag.js) - Google Analytics