`
Josh_Persistence
  • 浏览: 1651292 次
  • 性别: 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都是数据库管理系统,但它们的数据模型和查询语言有所不同。本篇文章将对比这两种数据库中常用的操作语句,帮助读者理解和掌握两者之间的差异。 1. 查询数据: - MySQL 使用 `SELECT * FROM user` ...

    MySQL常用命令.md

    ### MySQL 常用命令及基础知识详解 #### 数据库(Database, DB)概念与作用 - **定义**:数据库是一个长期存储在计算机内的、有组织的、可共享的数据集合。 - **作用**: - 保存数据:为应用程序提供稳定可靠的...

    mongodb常用命令

    以下是一些MongoDB的常用命令及其详细解释: 1. **创建集合(Collection)**: - `db.createCollection("mycoll", {capped:true,size:100000})`: 这个命令用于创建一个名为`mycoll`的集合,并设置为上限为100000...

    MongoDB常用SQL操作.pdf

    作为文档型数据库的代表,MongoDB使用的是BSON(一种类似JSON的二进制形式)格式存储数据,它与传统的关系型数据库如MySQL使用的SQL语言操作方式有所不同。 MongoDB的集合对应于SQL数据库中的表,文档则对应于表中...

    mongodb部署配置及应用

    下面将从MongoDB的业务应用场景、简介、特点、体系结构、数据类型、以及在不同操作系统下的配置与安装,到可视化工具的使用,乃至常用CRUD命令和索引的详细使用等多个维度展开介绍。 ### 1. MongoDB的业务应用场景 ...

    MongoDB基础入门到高级进阶

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

    Zabbix 常用模板(MongoDB、RAID、Redis、service、MySQL、Elasticsearch)

    本资源提供的压缩包包含了一系列针对特定技术的Zabbix模板,如MongoDB、RAID、Redis、服务监控、MySQL以及Elasticsearch,这些模板可以帮助用户更有效地管理和监控其IT基础设施的关键组件。 1. **MongoDB模板**:...

    MongoDB常用语法/Mongodb的基本使用

    如`db.data.find({"name": /66/,})`,这相当于MySQL中的`%66%`,寻找name字段包含"66"的文档。 7、$in查询 `$in`操作符允许在查询中使用数组,匹配任何包含在数组内的值。例如,`db.data.find({"tags": {$in: ["tag...

    mongodb资料,快速上手

    Compass 是 MongoDB 的图形化管理界面,可以安装和使用它来掌握 MongoDB 基本常用命令,实现数据的 CRUD 操作。 MongoDB 的索引类型和索引管理 MongoDB 的索引类型有以下几种: * 单个字段索引 * 复合索引 * 多...

    MongoDB 常用命令总结

    MongoDB提供的这些命令和操作使得开发者能够高效地处理各种数据需求,无论是简单的数据存储还是复杂的查询分析,MongoDB都提供了强大的工具来支持。在处理大量数据时,其性能优势尤为明显,尤其适合需要快速查询和...

    新版 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_课后...

    linux常用命令手册.pdf

    ### Linux常用命令手册知识点概述 #### 一、系统信息与硬件检测 - **查看系统内核版本** - `# uname -a`:显示当前系统的内核版本信息。 - `# cat /etc/SuSE-release`:获取SuSE系统的版本信息。 - `# cat /etc...

    MongoDB的备份与恢复1

    **1.1 MongoDB的常用命令** MongoDB 提供了四款核心的备份和恢复工具: - **mongoexport**: 用于将MongoDB数据库中的集合导出为JSON或CSV格式的文件。 - **mongoimport**: 反向操作,将JSON或CSV文件导入到MongoDB...

    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常用操作汇总

    在本文中,我们将深入探讨MongoDB的一些常用操作,包括增删改查、查询表达式、索引创建以及游标的使用。 一、增删改查 1. **查看集合** 要查看当前数据库中的所有集合,可以使用`show collections`或`show tables...

    mongodb学习笔记

    ##### MySQL 与 MongoDB 对比 MongoDB 和 MySQL 都是主流的数据库系统,但它们之间存在显著差异。MySQL 是关系型数据库管理系统 (RDBMS),而 MongoDB 是 NoSQL 数据库。MySQL 使用 SQL 查询语言进行数据操作,而 ...

    MongoDB_Golang.zip

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

    MYSQL基础入门pdf

    ### MySQL基础入门知识点详解 #### 数据库概述 - **什么是数据库** ...以上是对MySQL基础入门的知识点进行了较为全面的总结和解释,希望能够帮助初学者更好地理解和掌握MySQL的相关概念和技术。

Global site tag (gtag.js) - Google Analytics