1. 指定字段添加值
insert into 表名(字段1,字段2....) values(值1,值2...)
insert into user(sex,username) values(0,'lucky');2. 不指定字段添加值
insert into 表名 values(值1,值2...)
insert into user values(null,0,'lucky','我是lucky老师');3. 指定字段添加多个值
insert into 表名(字段1,字段2....) values(值1,值2...),(值1,值2...)...
insert into user(sex,username) values(1,'苍苍'),(0,'蒹葭');4. 不指定字段添加多个值
insert into 表名 values(值1,值2...),(值1,值2...)...
insert into user values(null,1,'xxx','xxx'),(null,0,'xxl','xxl');**注意事项:**
指定字段与不指定字段在添加值的时候 按照从左至右依次对应给值
1.2.4、表中数据的操作——查
1. 不指定字段的查询(不建议)
select *from 表名
2. 指定字段的数据查询(建议)
select 字段名1,字段名2...from 表名
select username,userinfo from user;3. 对查询的字段起别名
select username as u from user;
select username u from user;
1.2.5、表中数据的操作——改
1. 修改一个字段的值
update 表名 set 字段名=值;
update user set username='帅气的lucky' where id=3;2. 修改多个字段的值
update 表名 set 字段名1=值1,字段名2=值2...;
update user set sex=0,userinfo='xxx的个人简介' where id=7;3. 给字段的值在原有的基础上改变值
update user set sex=sex+2;**注意:**
在进行数据的修改的时候 一定记得给定where条件 如果没有给定where条件 则修改的为整张表当前字段的值
1.2.6、表中数据的操作——删
**主体结构:**
delete from 表名 [where ...]**实例:**
delete from user; 删除user表中所有的数据
**注意:**
删除 一定注意添加 where 条件 否则会删除整张表中的数据 并且auto_increment自增所记录的值不会改变 所以需要将自增归位
truncate 表名; 清空表数据
1.2.7、WHERE条件
1.2.7.1、比较运算符
1. `>`
将id大于5 的性别 更改为0 年龄改为20岁
update user set sex=0,age=20 where id>5;2. `<`
将id小于3 的性别 更改为0 年龄改为23岁
update user set sex=0,age=23 where id<3;
查看id小于4的 性别和用户名的字段数据
select sex,username from user where id<4;3. `>=`
删除 id大于等于6的数据
delete from user where id>=6;4. `<=`
查询年龄小于等于23的数据
select *from user where age<=23;5.=
查询性别为0的数据
select *from user where sex=0;6. `!=/<>`
查询 用户名不等于lucky的所有数据
select *from user where username!='lucky';
select *from user where username<>'lucky';
1.2.7.2、逻辑运算符
1.and 逻辑与 俩侧为真结果为真
查询年龄在18到23之间 不包括本身
select *from user where age>18and age<23;2.or 逻辑或运算 俩侧条件满足一侧就可以
select *from user where age=10or age=30;
select *from user where age>=10or age<=30;
1.2.7.3、order by 排序 升序/降序
查询数据 按照年龄升序(默认)
select *from user order by age;
select *from user order by age asc;
查询数据 按照年龄降序
select *from user order by age desc;
1.2.7.4、limit 取值
limit x 取出x条数据
limit x,y 从x的位置取出y条数据
取出3条数据
select *from user limit 3;
取出年龄最大/最小的一条数据
select *from user order by age desc limit 1;
select *from user order by age limit 1;
1.2.7.5、 like 模糊查询
1. ’%字符‘ 查询以字符结尾的数据
查询以三字为结束的username的数据
select *from user where username like '%三';2.'字符%' 查询以字符开头的数据
select *from user where username like '赵%';3.'%字符%' 查询包含字符的数据
查询 userinfo中包含lucky的数据
select *from user where userinfo like '%lucky%';
1、概述:
String是redis最基本的类型,最大能存储512MB的数据
String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
一个key对应一个value
2、设置键值
set key value
set name "zhangsan"3、设置键值及过期时间,以秒为单位
setex key seconds value
setex name 10'zhangsan'4、查看有效时间,以秒为单位
ttl key
ttl name
5、取消过期时间
persist key
persist name
6、只有在 key 不存在时设置 key 的值
setnx key value
setnx name 'a'7、设置多个键值
mset key value [key value ……]
mset name 'zs' age 188、根据键获取值,如果键不存在则返回None(null 0 nil)
get key
get name
9、根据多个键获取多个值
mget key [key ……]
mget name age
10、返回 key 中字符串值的子字符
getrange key start end
getrange name 0411、将给定 key 的值设为 value ,并返回 key 的旧值(old value)
getset key value
getset name 'x'12、将key对应的值加1
incr key
incr age
13、将key对应的值减1
decr key
decr age
14、将key对应的值加整数
incrby key intnum
incrby age 10 `
15、将key对应的值减整数
decrby key intnum
decrby age 1016、获取值长度
strlen key
strlen age
17、查找所有的 key
keys *18、判断键是否存在,如果存在返回1,不存在返回0
exists key
exists name
19、查看键对应的value类型
type key
type name
20、删除键及对应的值
del key [key ……]21、设置过期时间,以秒为单位
expire key seconds
`expire age 10`
22、查看有效时间,以秒为单位
ttl key
23、以毫秒为单位返回 key 的剩余的过期时间
pttl key
24、移除 key 的过期时间,key 将持久保持
persist key
25、删除所有的key
flushdb 删除当前数据库中的所有
flushall 删除所有数据库中的key
26、修改 key 的名称(仅当 newkey 不存在时,将 key 改名为 newkey)
rename key newkey
27、将key移动到指定的数据库中
Move key db
28、随机返回一个key
randomkey
3.3.2、Redis数据类型——hash
1、概述:hash用于存储对象
{
name:"tom",
age:18}hash 是一个键值(key=>value)对集合。
2、设置单个值
hset key field value
hset myhash name lucky
HGET myhash name
3、设置多个值
hmset key field value [field value ……]
hmset myhash a 1 b 2 c 34、为哈希表 key 中的指定字段的整数值加上增量 increment
hincrby key field incrment
hincrby hh age 105、只有在字段 field 不存在时,设置哈希表字段的值
hsetnx key field value
6、获取一个属性的值
hget key field
`hget name field1`
7、获取多个属性的值
hmget key filed [filed ……]8、获取所有字段和值
hgetall key
9、获取所有字段
hkeys key
10、获取所有值
hvals key
11、返回包含数据的个数
hlen key
12、判断属性是否存在,存在返回1,不存在返回0
hexists key field
`hexists a x`
13、删除字段及值
hdel key field [field ……]
`hdel a x y z`
14、返回值的字符串长度 起始版本 3.2
hstrlen key field
3.3.3、Redis数据类型——列表 list
1、概述:Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
2、在头部插入
lpush key value [vlaue ……]
lpush demo 23`
3、将一个值插入到已存在的列表头部,列表不存在时操作无效
Lpushx key val
lpushx list'a'4、在尾部插入
rpush key value [vlaue ……]
rpush demo 215、为已存在的列表添加值
rpushx key val
rpushx mm 'a'6、移除并返回key对应的list的第一个元素
lpop key
lpop demo
7、移除并返回key对应的list的最后一个元素
rpop key
rpop demo
8、返回存储在key的列表中的指定范围的元素
lrange key start end
lrange demo 0-1#查看列表中的所有元素
注意:start end都是从0开始
注意:偏移量可以是负数
9、裁剪列表,改为原集合的一个子集
ltrim key start end
ltrim demo 1-1#将索引为1 到 -1的元素裁剪出来
注意:start end都是从0开始
注意:偏移量可以是负数
10、返回存储在key里的list的长度
llen key
11、返回列表中索引对应的值
lindex key index
LINDEX mylist 0
3.3.4、Redis数据类型——集合 set
1、概述:无序集合,元素类型为String类型,元素具有唯一性,不重复
2、添加元素
sadd key member [member ……]
sadd set'a''b''c'3、返回key集合中所有元素
smembers key
smembers set4、返回集合元素个数
scard key
scard set5、移除并返回集合中的一个随机元素
spop key
spop set6、返回集合中一个或多个随机数
srandmember key count
s set#返回一个随机元素
srandmember set2#返回2个随机元素7、移除集合中一个或多个成员
srem key member1 [memkber2]
srem set'd''b'ss
8、求多个集合的交集s
sinter key [key ……]
sinter m l #求集合l和集合m的交集9、求多个集合的差集
sdiff key [key ……]
sdiff m l #求差集 注意比较顺序10、判断元素是否在集合中,存在返回1,不存在返回0
sismember key member
sissmember m 'a'#集合m中是否存在元素'a'
3.3.5、Redis数据类型——有序集合 zset
1、概述:
a、有序集合,元素类型为String,元素具有唯一性,不能重复
b、每个元素都会关联一个double类型的score(表示权重),通过权重的大小排序,元素的score可以相同
2、添加
zadd key score member [score member ……]
zadd zset 1 a 5 b 3 c 2 d 4 e
3、有序集合中对指定成员的分数加上增量 increment
Zincrby key increment mcfaember
zincrby zset 10'a'#给a的权重上加104、返回指定范围的元素
zrange key start end
zrange z1 0-15、返回元素个数
zcard key
zcard z1
6、返回有序集合key中,score在min和max之间的元素的个数
zcount key minmax7、返回有序集合key中,成员member的score值
zscore key member
zscore l 'c'#s返回c的权重8、当前集合所有的值和权重
ZRANGE key 0-1 WITHSCORES
9、返回有序集合中指定分数区间内的成员,分数由低到高排序。
ZRANGEBYSCORE key minmax[WITHSCORES][LIMIT offset count]min和max可以是-inf和+inf,这样一来,你就可以在不知道有序集的最低和最高score值的情况下,使用ZRANGEBYSCORE这类命令。
10、从排序的集合中删除一个或多个成员
当key存在,但是其不是有序集合类型,就返回一个错误。
ZREM key member [member ...]
3.4、Redis 安全
1、注意:当前密码修改后如果服务重启则需要重新设定
2、我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。
3、实例
我们可以通过以下命令查看是否设置了密码验证:
127.0.0.1:6379> CONFIG get requirepass
1)"requirepass"2)""
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
你可以通过以下命令来修改该参数:
127.0.0.1:6379> CONFIG set requirepass "lucky"
OK
127.0.0.1:6379> CONFIG get requirepass
1)"requirepass"2)"lucky"
设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。
4、语法
AUTH命令基本语法格式如下:
127.0.0.1:6379> AUTH password
5、实例
127.0.0.1:6379> AUTH "lucky"
OK
127.0.0.1:6379> SET mykey "Test value"
OK
127.0.0.1:6379> GET mykey
"Test value"
3.5、Redis 数据备份与恢复
1、SAVE命令用于创建当前数据库的备份。
2、语法
redis 127.0.0.1:6379> SAVE
3、实例
redis 127.0.0.1:6379> SAVE
OK
4、该命令将在 redis 安装目录中创建dump.rdb文件。
5、如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。
6、获取 redis 目录可以使用CONFIG命令,如下所示:
redis 127.0.0.1:6379> CONFIG GET dir1)"dir"2)"/usr/local/redis/bin"
以上命令CONFIG GET dir输出的 redis 安装目录为 /usr/local/redis/bin。
7、创建 redis 备份文件也可以使用命令 **BGSAVE**,该命令在后台执行。
8、实例
127.0.0.1:6379> BGSAVE
Background saving started
3.6、Python操作redis
1、安装
pip install redis
2、导入
import redis
3、连接方式
+ StrictRedis:实现大部分官方的命令
+ Redis:是StrictRedis的子类,用于向后兼容旧版的redis。
官方推荐使用StrictRedis方法。
4、举例(普通连接):
import redis
# decode_responses=True 自动解码
r = redis.Redis(host='127.0.0.1',port=6379,password='123c456',db=0,decode_responses=True)#默认数据库为0
r = redis.StrictRedis(host='10.10.2.14',port=6379,password='123456',decode_responses=True)5、连接池:connection pool
管理对一个redis server的所有连接,避免每次建立,释放连接的开销。
默认,每个redis实例都会维护一个自己的连接池,可以直接建立一个连接池,作为参数传给redis,这样可以实现多个redis实例共享一个连接池。
6、举例(连接池):
pool = redis.ConnectionPool(host='127.0.0.1',port=6379,db=0,password='123456',decode_responses=True)
r = redis.Redis(connection_pool=pool)