MySQL基础 - MySQL视图和索引 、 python操作MySQL 、Redis基础

关系型数据库如何保证数据的完整性

1.实体完整性

每一条记录都是独一无二的没有冗余数据 - 主键/唯一索引

2.参照完整性/引用完整性

外键

3.领域完整性

没有无效的数据 - 数据类型 / 非空约束 / 默认值约束 / 检查约束

创建索引

create index idx_emp_ename on tbemp(ename);

删除索引

alter table tbemp drop index idx_emp_ename;

注意:表的索引相当于一本书的目录,它可以加速查询
但是索引会让增删改变得更慢 因为增删改数据时索引也需要更新
所以索引要建在经常被用作查询筛选条件的列上

python操作MySQL

导入pymysql模块
连接数据库插入多条数据

import pymysql


def main():
    # 1.创建连接(主机、端口、用户名、口令、数据库名)
    con = pymysql.connect(host='localhost',
                          port=3306,
                          user='root',
                          password='123456',
                          database='HRS',
                          charset='utf8',
                          autocommit=True)
    try:
        # 2.获取游标
        with con.cursor() as cursor:
            # 3.游标对象的executemany方法可以一次执行多个SQL操作
            # 相当于是以批处理的方式执行SQL(比一个个执行单条SQL效率更高)
            result = cursor.executemany(
                'insert into tbdept values (%s,%s,%s)',
                ((50, '研发2部', '深圳'),
                 (60, '销售3部', '广州'),
                 (70, '运维2部', '上海'))
            )
            # 4.处理服务器返回的信息
            print(result)
    except pymysql.MySQLError as e:
        print(e)
        con.rollback()
    finally:
        # 5.关闭连接释放资源
        con.close()


if __name__ == '__main__':
    main()

python连接数据库查询记录

import pymysql


class Dept(object):

    def __init__(self, no, name, loc):
        self.no = no
        self.name = name
        self.loc = loc

    def __str__(self):
        return f'{self.no}\t{self.name}\t{self.loc}'


def main():
    con = pymysql.connect(
        host='localhost',
        port=3306,
        user='root',
        password='123456',
        database='hrs',
        charset='utf8',
        cursorclass=pymysql.cursors.DictCursor
    )
    try:
        with con.cursor() as cursor:
            cursor.execute('select dno no, dname name, dloc loc from tbdept')
            depts = cursor.fetchall()
            for dept_dict in depts:
                dept = Dept(**dept_dict)
                print(dept)
    except pymysql.MySQLError as e:
        print(e)
    finally:
        con.close()


if __name__ == '__main__':
    main()

Redis内存数据库 - KV数据库

Redis提供了两种数据持久化数据的方案:
RDB - 周期性将内存数据写入dump文件
AOF - Append Only File - 把执行过的命令保存起来

Redis - 缓存(热点数据) / 队列

通过配置文件启动Redis服务

redis-server redis.conf > redis.log &

配置信息:

端口号

port 6379

绑定主机ip

bind 1.2.3.4

AOF

appendonly yes

设置密码

requirepass 123456

简单命令:

插入键值对

set key value

通过key取到value

get key

设置数据存货存活时间

set key value ex 10

查看数据存活时间

ttl key

查看数据库数据大小

dbsize

查看所有数据的key

keys *

查看指定key

keys key

保存数据

save

后台保存数据

bgsave

删除记录

del key

清空所有数据

flushall

退出数据库(默认保存)

shutdown

退出时不保存

shutdown nosave
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,314评论 2 89
  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 4,162评论 2 27
  • Nosql概述 在介绍Redis之前,首先先要介绍Nosql的概念。 互联网架构发展 在90年代的时候,计算机访问...
    COKIDCC阅读 756评论 0 1
  • 森林“亲”氧 文/石勇 水塘,素有生物基因库 和水源涵养林区的公园 夏天,风抚摸脸颊 清凉而柔软 闭上眼,呼吸新鲜...
    石说实话阅读 123评论 1 0
  • 不知道为什么看完它,我的眼角渗出了眼泪,不想说是心疼她,更舍不得触碰姐姐过去的伤痛。 或许一切都有上帝的美意,正如...
    荣耀夏小语阅读 418评论 0 1

友情链接更多精彩内容