SQL
- cascade(级联) 主表更新与之关联的表也会更新
- set null 主表更新与之关联的表对应的外键会设置为null
- if(字段, exp1, exp2) 如果是字段内容为真,输出exp1, 否则返回exp2
- having 后面可以加前面的函数进行筛选
- select sid as ‘学号’, avg(score) as a from tbsc group by(sid) having a >= 90;
- longblob 可以存储任意长度的2进制字符
- varchar(a) 可以设置a个字符,这里汉字和英文字母占位都是一个字符
- between and
- select stuname, stusex, stubirth from tbstudent where stubirth between ‘1980-1-1’ and ‘1989-12-31’;
MySQL—— 事务ACID
- 原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做
- 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
python 连接数据库
- pip install PyMySQL
- pip list 看pip里有哪些东西
- pip freeze 看安装过哪些东西
import pymysql
db = pymysql.Connect(host='localhost',
user='root',
passwd='123456',
db='select_cl',
port=3306,
charset='utf8')
cursor = db.cursor()
sql='select * from tbstudent;'
cursor.execute(sql)
data = cursor.fetchall()
data1 = cursor.fetchone()
for i in data1:
print('id:%s name:%s' %(i[0], i[1]))
db.close()
import pymysql
db = pymysql.connect(
host='localhost',
user='root',
passwd='123456',
db='select_cl',
port=3306,
charset='utf8')
cursor = db.cursor()
try:
sql = '''insert into tbcourse values
(7778, 'C语言程序设计', 3, '大神级讲师授课需要抢座')'''
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
Redis
启动
- 第一种
- 启动redis-server
- redis-cli
- 第二种
- /bin/systemctl start redis.service
- 第三种
- service start redis
- 后台启动
- redis-server &
修改密码
- 找到requirepass 大约在480行后加上密码一定要去掉#
修改地址
- 找到bind 大约在61行 后面加上ip 这样其他人就可以通过ip访问到你
访问其他人的redis
redis 五大类型
- string类型 hash list set zset
- set p 1 设置 p的值为1
- get p 获取p的值
- incr a 整数递增 默认值为0,每次用incr
- decr 整数递减
"""
增
set mykey "test" 为键设置新值,并覆盖原有值
getset mycounter 0 设置值,取值同时进行
setex mykey 10 "hello" 设置指定 Key 的过期时间为10秒,在存活时间可以获取value
setnx mykey "hello" 若该键不存在,则为键设置新值
mset key3 "stephen" key4 "liu" 批量设置键
删
del mykey 删除已有键
改
append mykey "hello" 若该键并不存在,返回当前 Value 的长度
该键已经存在,返回追加后 Value的长度
incr mykey 值增加1,若该key不存在,创建key,初始值设为0,增加后结果为1
decrby mykey 5 值减少5
setrange mykey 20 dd 把第21和22个字节,替换为dd, 超过value长度,自动补0
查
exists mykey 判断该键是否存在,存在返回 1,否则返回0
get mykey 获取Key对应的value
strlen mykey 获取指定 Key 的字符长度
ttl mykey 查看一下指定 Key 的剩余存活时间(秒数)
getrange mykey 1 20 获取第2到第21个字节,若20超过value长度,则截取第2个和后面所有的的
mget key3 key4 批量获取键
"""