首页 > 其他分享 >mysq基础

mysq基础

时间:2023-08-31 21:00:17浏览次数:36  
标签:基础 数据库 db mysq 文档 value key 数据

mangoDB

一、认识MangoDB

     1、简介:

         基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案,将数据存储为一个文档,文档类似与Json格式,

       {

    name:"小明",

    age:16,

    address: {city:"长沙", country:"china"}

}

 

   2、关系数据库与mongo数据库的联系:

         关系数据库:

                  1、数据库

                  2、表

                  3、行

          mongodb数据库:

                  1、数据库

                  2、collection(集合)

                  3、document(文档)

    3、进入与退出

       进入:mongo

       退出:exit

----------------------------------------------------------------------------------

二、库,集合操作

    1、显示所有库:show dbs

    2、切换/创建数据库:use 数据库名称    注:如果数据库不存在,则创建并创建之后切换到创建的这个数据库。

    3、查看所在库:db

    4、删除库:db.dropDatabase()

    5、显示当前的数据库集合:show collections

    6、创建集合:db.createColletion(name)  注:name应该是字符串,加''

    7、删除集合:db.集合名称.drop()

----------------------------------------------------------------------------------

三、文档的操作

    1、插入

       db.集合名称.insert(document)      注:插入单条数据

      

       例:

         db.student.insert({name:'xiaoming', age:18})  

         注:添加文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

       例:

         db.student.insert({'_id':1,name:'xiaoing',age:'18'})

        

       db.集合名称.insert([document])    注:插入多条数据,需使用[]

       例:

         db.student.insert([

    {name:xiaoming', sex:'男', age:16},

    {name:’xiaobai', sex:'男', age:18},

    {name:’moran‘, sex:’女', age:18},

    ])

   2、查看

      db.聚合名称.find([condition])

       1、查看集合中全部数据:db.student.find()

       2、格式化显示:db.student.find().pretty()

       3、db.shutudent.find({name:'xiaoming'})

       噩梦条件:

             and条件         {$and:[{expression1},{expresssion},.....]

             or条件          {$or:[{expression1}, {expression1}, ...]   }

             and和or混用  

             db.table.find({$or:[{$and:[{sex:'女'}, {age:18}]},{$and:[{sex:'男'}, {age:{$gt:18}}]}]})

            

操作符

描述

$ne

不等于

$gt

大于

$it

小于

$git

大于等于

$ite

小于等于

 3、修改

         db.集合名称.update(<query>, <update>, {multi:<boolean>})

           1、修改一条数据: db.table.update({sex:'男'}, {age:20})

           2、指定属性修改: { $set: {age:20} }

            例: db.table.update({name:'xiaoming'}, {$set: {age:666, sex: 'xx'}} )

           3、更新集合中所有满足条件的文档: { multi: true }

             例:db.table.update({sex:'男'}, {$set:{sex:'女'}}, { multi:true} )

4、删除

           db.集合名称.remove(<query>,  {justOne:<boolean>})

             1、删除集合中所有的文档:

                例:db.table.remove({})

             2、删除集合中满足条件的所有文档

               例:db.table.remove({sex: '男'})

             3、只删除集合中满足条件的第一条文档: { justOne: true }

               例:db.table.remove({sex:'男'}, { justOne:true} )

----------------------------------------------------------------------------------

四、python操作MangoDB

             pip install pymongo

   1、建立连接:client = pymongo.MongoClient()

   2、指定数据库:db = client[数据库名]

   3、指定集合:collection=db[集合名]

注:在python3中官方已经不推荐使用这些方法,当然继续使用也是没有问题的

    1、查找文档:find()

    2、添加文档:insert()

    3、修改文档:update()

    4、删除文档:remove()

 注:官方推荐我们使用如下的方法

1、查找一条文档:find_one()

             注:find()得到的是一个对象,但可以用for遍历出来

2、添加一条文档:insert_one()

   添加多条:insert_mnay()

3、删除一条文档:delete_one

   删除多条:delete_many()

4、修改一条文档: update_one

   修改多条:update_many()

Redis

一、Redis简介

              Redis是由意大利人开发的一款内存高速缓存数据库,是一个高性能的键值对存储数据库。

Redis全称是Remote Dictionary Server(远程数据服务),使用C语言编写,并以内存作为数据存储介质,所以读写数据的效率极高。

       Redis特性

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis不仅仅支持简单的key-value类型的数据,同时还把value分为list,set,zset,hash等数据结构存储。

因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,提高效率。

二、Redis数据模型

redis是key-value的数据结构,没条数据都是键值对,键的类型是字符串

注:键不能重复

值得类型分为五种

String --------------->字符串

Hash -------------------->哈希

List--------------------->列表

Set---------------------->集合

Zset-----------------------有序集合

基本使用

  1. 连接redis:redis-cli
  2. 退出:exit
  3. 操作服务端:sudo service redis start/stop/restart
  4. 切换数据库:select n

注:数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库

三、Redis五大数据类型使用

---------------------- --------String-----------------------------------

注:string是redis最基本的类型,一个key对应一个value

1、设置数据:set  key  value

2、查看数据:get  key

3、追加数据:append  key  value

4、删除数据:del key;

-------------------------------------------------------------------------------

对redis的五个数据类型都适用的命令

1、查看所有的key:keys *

2、删除键值对:del key

注:exists key 查看key是否存在

3、改名:rename  key  new_key

4、设置过期时间:expire key seconds

ttl 查看时间    persist key  删除过期时间

-----------------------------------List----------------------------------------

注:List类型是一个字符串列表,可以在列表头部或尾部添加、删除数据,在插入数据时,如果该键并不存在,redis将为该键创建一个

1、添加数据:rpush key value [value…]

lpush key value [value…]    ----à  头部添加数据

2、查看数据:lrange key start stop

lindex key index                  ----à  查看某个数据

3、修改数据:lset key index value

4、删除数据:rpop key

lpop key                               ----à  头部删除数据

--------------------------------------------Hash-----------------------------

是一个键值对集合

1、添加数据:hset key field value

2、查看域值:hget key field

hgetall key  ----à  查看所有的field和value

3、查看所有的value:hvals key

4、查看所有的field:hkeys key

------------------------------------Set----------------------------------------

1、添加数据:sadd key member [member …]

2、查看数据:smembers key

3、随机删除:spop key

4、随机删除:spop key

-----------------------Sorted Set-------------------------------------------

1、添加数据: zadd key score member [score2 member2 …]

2、查看数据: zrange key start stop

zrangebyscore key min max  --à通过scores值查看

3、删除数据:zrem key member [member …]

4、通过索引删除多个数据:zremrangebyrank key min max

zremrangebyscore key min max  --à通过scores值删除


Mysql

DB-API

在没有DB-API之前,各数据库之间的接口非常混乱,实现各不相同,如果项目需要更换数据库,基本上把所有和数据库相关的代码都进行改动,十分不方便

DB-API的出现就是为了解决这个问题,python所有的数据库接口在一定程度上都要遵守python DB-API规范,它定义了一系列的操作数据库的方式,为数据库提供了一致的访问接口,项目中更换使用数据库变得更加方便。

Mysql

一、事务操作:

原子性

一致性

隔离性

持久性

strat transaction;  注:开启事务

commit;  注:事务提交

rollback;回滚

----------------------------------------------------------------------------------

二、连接mysql

db_config = {

    ‘host’:’ip’,

    ‘port’:port,

    'user': '账号',

    'password': '密码',

    'db': '数据库名',

    'charset': 'utf8',

}

conn = pymysql.connect(**db_config)

开始----->创建connection------->获取cursor------->执行查询,执行命令,获取数据,处理数据---->关闭cursor------>关闭connection----->结束

-----------------------------------------------------------------------------------

三、使用步骤:

1、导入模块:import pymysql

2、建立连接:pymysql.connect(**dbconfig)   注:连接是不能操作数据库的,需要用连接生成游标来操作

3、创建游标: connection.cursor()

4、执行SQL语句:cursor.execute(sql)   注:SQL语句都是通过这个方法执行,但返回结果是数字,要内容用步骤五

5、获取所有结果:cur.fetchall()

   获取一条数据:cur.fetchone()

   注:执行第五步时,需要先运行步骤四

   事务提交:

   cur.execute('commit')

   connection.commit

   关闭游标:

   cur.close()

   关闭连接:

   connection.close()

   ----------------------------------------------------------------------------------

四、注意要点:

1、在pymysql中执行的SQL语句不需要加 ;

2、execute执行完后不是直接得到结果,需要你主动去获取

3、和文件一样,别忘了关闭游标与连接

4、事务的回滚和提交

-----------------------------------------------------------------------------------

五、Reids

注:在python中操作redis的命令和命令行的用户几乎一模一样

1、安装python包redis: pip install redis

2、连接redis:redis.Redis()    注:为了兼容旧版本(不推荐使用)

3、连接redis:Redis.StrictRedis()

4、在程序操作的数据为bytes类型,加入decode_responses=True,写入的数据为str类型


 

标签:基础,数据库,db,mysq,文档,value,key,数据
From: https://www.cnblogs.com/chsh/p/17670411.html

相关文章

  • 查看es结构,es _search查询基础语法
    查看es结构,es_search查询基础语法http://xx.xx.xx.xx:9200/ ES地址car_info/_searchPOST{}POST{"query":{"match":{"carNo":"573702440"}}}{ "query":{"term":{......
  • Mysql主从复制(一主一从)+Mycat(windows-1.X版本)实现读写分离
    项目中,如果数据量大的情况下,可以使用【数据库主从复制+读写分离】的方式优化,其他方式也很多,这里只记录下这种方式一、说明1.需要的环境等:序号环境说明1mysql5.7服务器两台数据库服务器,一台作为主数据库,一台作为从数据库2jdk安装mycat的时候会用到jdk3my......
  • 读写分离---mysql的主主结构和主从架构
    前言:为什么要对mysql做优化?  因为数据都来源于数据库,如果数据库慢了,无论是多线程、各种识别模式优化还是很慢,因为查sql就很慢。  官方说法:单表2000万数据,增删改查就到达瓶颈了。所以为了保证查询效率,得让每张表的大小得到控制。 Mysql架构:实际生产过程中,查询业务......
  • Jenkins 基础配置
    博客地址:https://www.cnblogs.com/zylyehuo/参考链接解决:Jenkins:signatureverificationfailedinupdatesite‘default‘(showdetails)jenkins下一切皆文件虚拟机基本配置Jenkins安装cd/usr/local/src/rz#选择以下安装包(xshell软件命令)下......
  • Kafka-基础
    1.简介Kafka(ApacheKafka)是一种分布式流数据平台,最初由LinkedIn开发,并于后来捐赠给Apache软件基金会,成为了一个Apache顶级项目。它被设计用于处理大规模、实时的数据流,并为构建高吞吐量、容错性强的数据流应用程序提供支持。Kafka的特点使得它在日志收集、实时处理、事件驱动架......
  • Python 基础面试第三弹
    1.获取当前目录下所有文件名importosdefget_all_files(directory):file_list=[]#os.walk返回一个生成器,每次迭代时返回当前目录路径、子目录列表和文件列表forroot,dirs,filesinos.walk(directory):forfileinfiles:file_l......
  • mysql基础
    --创键数据库test(如果不存在)CREATEDATABASEIFNOTEXISTStest--删除数据库test(如果存在)DROPDATABASEIFEXISTStest--使用该数据库USEschool--表名或字段名是特殊字符用``包含(tab键上......
  • mysql 创建只读权限账号
    命令行登录mysql-uroot-p创建只读权限的账号【将<username>替换为用户名, <password>替换为密码。'%' 表示该账号可以从任何主机连接。如果希望限制连接的主机,可以将 '%' 替换为具体的主机名或IP地址。】CREATEUSER'<username>'@'%'IDENTIFIEDBY'<password>......
  • 详解 canal 同步 MySQL 增量数据到 ES
    canal是阿里知名的开源项目,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。这篇文章,我们手把手向同学们展示使用canal将MySQL增量数据同步到ES。1集群模式图中server对应一个canal运行实例,对应一个JVM。server中包含1..n个instance,我......
  • MySQL 使用Navicat delete/insert into/update 大量数据表锁死,kill的线程后线程处于ki
      MySQL使用delete/insertinto/update大量数据表锁死,kill的线程后线程处于killed状态问题解决实际生产环境问题描述:使用Navicat备份BigData数据表时不小心点到了取消按钮,导致数据表被锁。  查看MySQL线程队列,找到刚刚执行的SQL看是属于什么状态。showprocessli......