关系型数据库如何保证数据的完整性
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