mysq基础

发布时间 2023-08-31 20:57:32作者: csh逐梦

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类型